A fully local voice loop for my Mac
I paid for dictation software for exactly three days.
On April 18th i installed Wispr Flow, the subscription dictation app everyone raves about. It’s genuinely good. Three days later i installed Hex, a free, open-source, fully local alternative — and according to macOS’s own last-used metadata, i never opened Wispr Flow again. Not once. That was two and a half months ago; Hex is still my daily driver.
Why local
Three reasons, in whatever order you like:
- No subscription. Dictation is a commodity now. Whisper runs great on Apple Silicon.
- No round-trip. Audio doesn’t travel to a server and back before words hit the editor.
- No leak. Dictation is intimate data — it’s every half-formed thought you speak at your machine. It shouldn’t leave the machine.
Voice in: Hex
Hex is voice-to-text on a hotkey: hold a key, talk, release, and the transcription lands wherever your cursor is. It runs Whisper locally on Apple Silicon, it’s free, and it’s open source. Most of what i dictate is prompts — talking to Claude Code is much faster than typing at it.
The missing half: building Yapper
Voice in was solved. But i was still reading everything back. So in mid-May i built the mirror image: Yapper — highlight text anywhere, press ⌃⇧S, and hear it read aloud. Locally.
Under the hood it’s two pieces:
- A FastAPI server wrapping Kokoro-82M, a small open TTS model that sounds shockingly good for its size. It preloads at startup, streams audio sentence-by-sentence so playback starts before the full clip is synthesized, and keeps an LRU cache for repeated text.
- A native Swift menubar app: global hotkey → grab the selected text via the Accessibility API (with a Cmd+C fallback) → POST to the server → play the WAV.
Both halves run permanently via launchd, and there’s a Homebrew tap if you want to try it: voice, speed, and hotkeys are all configurable from the menu bar.
The loop
Together they close the loop: dictate prompts in with Hex, listen to responses back with Yapper. A fully local voice interface to my AI tools — no accounts, no API keys, no audio leaving the machine.
How it happened
The math
Wispr Flow is ~$12–15/month. Hex is free. Yapper is free (i wrote it, but you get it free too). The whole stack runs on hardware i already own, and it’ll keep working if either company disappears — because neither half needs a company.