Three months ago, I had a 200 MB Electron app that transcribed speech to text. It worked, but it was bloated, slow to launch, and required a network connection for the best experience.
So I rebuilt it from scratch. The result is PushSense — a 5.5 MB native macOS application that runs entirely on-device.
The Problem with Cloud Transcription
Every major dictation solution — Google, Apple, Microsoft — sends your audio to the cloud. That means:
- Privacy risk: your voice data leaves your machine
- Latency: network round-trips add 200-500ms per phrase
- Cost: API quotas, rate limits, billing accounts
- Availability: no internet = no transcription
The Solution: whisper.cpp + Swift
I chose whisper.cpp — an optimized C++ implementation of OpenAI's Whisper model. It runs in-process and uses the GPU through Metal. The app around it stays small because the weights live in a separate model file you download once, rather than inside the bundle.
The Swift wrapper handles the macOS integration: hotkey detection, audio capture via AVAudioEngine, and text injection into the active input field.
The Numbers
- Installed app bundle: 5.5 MB (vs. 200 MB Electron)
- Resident RAM, idle with the model loaded: 344 MB
- Peak RAM while transcribing (Small q5_1): 484 MB
- 27.7 s of speech transcribed in 1.11 s — about 25× realtime
- Network dependency: none
- API keys needed: zero
Idle CPU sits near zero: the hotkey watcher is a passive event tap, and inference runs on the GPU, so dictating never competes with your real work for CPU. The model, not the app, is what decides your memory bill — full methodology, including the two approaches that didn't work, is in the benchmark write-up.
Four Details That Took Real Work
Most of the engineering isn't in "call Whisper." It's in the edges around it.
Forcing Simplified Chinese output. Whisper handles code-switching natively, but its Chinese output drifts between Simplified and Traditional characters. The fix is the system's own CFStringTransform, applied to the finished transcript — Traditional characters can't leak through, while Latin letters and emoji pass untouched.
Silence has to produce nothing. Given pure silence, Whisper will confidently invent plausible-sounding text. Left alone, brushing the hotkey types a sentence you never said. PushSense detects and discards these outputs explicitly. It reads as a non-feature and is anything but.
Typing, not pasting. The transcript is delivered as synthesized keystrokes rather than through the clipboard. That is why Accessibility permission is required — and why whatever you had copied survives a dictation intact.
Settings live in the Keychain. No config file to manage, and nothing to drift between machines.
What I Learned
The biggest insight wasn't technical — it was about shipping. A 5.5 MB app that works offline, with no account required, no API key, no subscription — that's not a "lite" version. That's the product.
Free to download. Get the latest build.