We Tested 4 Local Dictation Tools on Apple Silicon So You Don't Have to Upload Audio
Wispr Flow streams audio to cloud servers. We benchmarked the top 4 local-first alternatives on an M3 MacBook Pro for latency, RAM, and zero-egress privacy.
- 01.Wispr Flow streams audio to remote AWS endpoints, introducing network latency and third-party compliance risk.
- 02.Apple Silicon Metal offloading drops whisper.cpp real-time factor to 0.18x with 168ms p99 latency.
- 03.Murmur injects text via macOS accessibility APIs directly, preventing clipboard history leaks.
The Architectural Flaw of Cloud Voice Typing on macOS
Wispr Flow makes voice typing feel fast until your security team inspects your outbound network sockets and finds 16kHz raw audio streaming to remote AWS endpoints. If your code comments, legal briefs, or patient notes are covered by NDAs or HIPAA, cloud transcription is an immediate compliance failure.
We ran four local dictation setups through 50 test dictations on an M3 MacBook Pro (16GB unified memory) to measure real-time factor, cold-start latency, and packet egress. Here is how they compare, where each tool breaks down, and how to verify that zero audio bytes leave your machine.
How Metal Offloading Flips the Cloud Pipeline
Cloud dictation apps capture microphone input via macOS CoreAudio, pack the frames into Opus chunks, and dispatch them across WebSockets to remote GPU clusters:
[CoreAudio 16kHz] ──► [Opus Encoder] ──► [TLS WebSocket] ──► [Cloud GPU Cluster]
│
[Active App] ◄── [Accessibility Paste] ◄── [HTTP Response] ◄── [Cloud LLM Pass]This model introduces two hard engineering constraints:
Running local inference flips this pipeline on its head:
[CoreAudio Ring Buffer] ──► [Silero VAD] ──► [whisper.cpp Metal Tensor]
│
[Active macOS Window] ◄────── [AXUIElement API] ◄──────┘
(0 Network Packets · 0 Disk Writes)The Benchmark: Latency, Memory, and Network Egress
We tested each tool with the same 45-second technical dictation:
"Implement an idempotent stripe webhook handler in TypeScript that verifies the signature header and upserts the customer subscription record into Postgres."
| Tool | Core Architecture | Inference Engine | p99 Latency (End of Speech) | RAM Working Set | Outbound Packets | Open Source |
|---|---|---|---|---|---|---|
| Murmur | Native macOS / Rust | whisper.cpp + Metal | 168 ms | 184 MB | 0 | Yes (MIT) |
| Superwhisper | Native macOS / Swift | CoreML / Whisper.cpp | 240 ms | 310 MB | Occasional license pings | No |
| Apple Dictation | Built-in macOS system | Apple Neural Engine | 480 ms | System daemon | 0 (if Siri cloud off) | No |
| MacWhisper | Native macOS / AppKit | Whisper.cpp | Batch file only | 420 MB | 0 | No |
1. Murmur: Zero Network Sockets, Sub-180ms Metal Injection
Murmur was built specifically to replicate the global hotkey workflow of cloud tools without a single outbound network socket.
Pressing ⌥ Option + Space initiates a zero-copy CoreAudio circular buffer. Audio frames feed through an on-device Silero Voice Activity Detector. The moment speech terminates, quantized FP16 tensors execute across Apple Silicon Metal cores using whisper.cpp.
# Verify zero egress using lsof while speaking into Murmur
lsof -i -P | grep -i "murmur"
# Output: (empty — no listening sockets, no TCP connections established)What makes it fast:
Cmd + V (which overwrites whatever was in your system clipboard), Murmur uses macOS Accessibility APIs (kAXSelectedTextAttribute) to insert text directly into the focused input element.Known limitation:
Model loading on 8GB base Macs requires keeping the quantized model in RAM. If you switch to the large-v3 model, memory footprint jumps to 1.5GB, which can trigger swapping on tight memory configurations. Stick with whisper-small-q5 for the best latency-to-accuracy balance.
2. Superwhisper: Polished UI, But Watch the Cloud LLM Defaults
Superwhisper is a solid native Mac application with custom UI overlays and sound effects. It offers fully offline Whisper models, but it also bundles cloud LLM clean-up modes (such as GPT-4o mini and Claude 3.5 Sonnet passes).
3. Apple Built-in Dictation: Zero Setup, Frustrating Developer Formatting
macOS has included on-device dictation since macOS Monterey on Apple Silicon machines. You enable it in System Settings under Keyboard > Dictation.
> "Write an async function get user by id"
Apple dictation produces:
> "Right and a sink function get user by ID"
It does not handle camelCase, fails on code symbols, and does not provide custom vocabulary injection or phonetic biasing.
4. MacWhisper: Built for Audio Files, Not Ambient Text Entry
Jordi Bruin's MacWhisper is an exceptional utility for transcribing MP3, WAV, and video files on your local Mac.
The Trade-Offs We Accepted: Why Whisper Small Beats Large-v3 on Laptops
When building on-device voice tools, engineers ask why we don't default to OpenAI's 1.5-billion parameter large-v3 model. Here are the raw numbers from our profiling:
whisper-small-q5_1:
- Model size: 190 MB
- Metal GPU inference time: 142ms
- RAM working set: 184 MB
- Word Error Rate (WER) on technical prose: 4.2%
whisper-large-v3-q5_0:
- Model size: 1.53 GB
- Metal GPU inference time: 820ms
- RAM working set: 1.62 GB
- Word Error Rate (WER) on technical prose: 3.1%To gain a 1.1% improvement in raw word error rate, large-v3 costs nearly 6× the inference latency and 8× the memory. At 820ms, the tool feels sluggish—you speak, wait nearly a full second, and watch text lag behind your thoughts.
We chose whisper-small with phonetic dictionary biasing. By feeding your project's custom technical vocabulary directly into the decoder prompt, we beat large-v3's accuracy on domain terms without the latency penalty.
How to Audit Your Mac's Audio Egress
Don't take any vendor's privacy claims at face value—including ours. Here is how to verify network activity on macOS using objective tools:
```bash
brew install --cask lulu
```
Experience 100% On-Device Voice Typing
Murmur runs locally on your Mac or Windows PC. No cloud transcription, no audio uploads, zero subscriptions.
Download Murmur (Free Forever)