Engineering

Whisper.cpp on Consumer Apple Silicon: Benchmarking CoreML vs. CPU Execution

Running real-time neural networks on standard consumer computers requires squeezing absolute performance out of local silicon. When dealing with Whisper speech-to-text models on Apple Silicon (M1/M2/M3 chips), developers face a choice: do we execute on standard CPU threads or compile for Apple's proprietary CoreML framework?

"Unified memory architecture means the GPU and CPU don't waste clock cycles copying matrices back and forth. That is local-first's primary superpower."

To identify the optimal configuration for Maple's meeting recorder engine, we conducted a rigorous benchmark suite on an M3 MacBook Air. We measured transcription speed, system heat levels, and active RAM footprints across standard CPU (using neon vector instructions) and CoreML configurations.

Silicon Memory Routing

Figure 1: Apple Silicon Unified Memory Routing
Unified RAM CoreML (ANE) CPU (Neon threads)

Performance Benchmarks

Execution Backend Real-time factor CPU Utilization Battery drain rate
CPU (4 threads) 0.32x 88% (Heavy system lock) 12.4% per hour
CoreML (Neural Engine) 0.08x 4% (Background idle) 1.8% per hour

Whisper.cpp CoreML Initialization

#include "whisper.h"

// Initialize Whisper context optimized for CoreML
struct whisper_context_params params = whisper_context_default_params();
params.use_gpu = true; // metal acceleration
params.use_coreml = true; // apple neural engine hook

struct whisper_context * ctx = whisper_init_with_params("models/ggml-base.en-q5.bin", params);