Free, local-only, push-to-talk speech-to-text for macOS. Zero cloud. Zero cost. Zero telemetry.
Unlike SuperWhisper et al, this costs zero. Runs fully locally. No API keys needed.
- Push-to-talk: Hold Right Option to record, release to transcribe
- Dictate mode: Raw transcript via Parakeet STT (Right Option)
- Polish mode: Transcript cleaned up by Qwen LLM (Right Option + Shift)
- 100% local: All processing on-device, nothing leaves your machine
- Menubar app: Lives in the menubar, no dock icon
- Clipboard safe: Transcript always stays on your clipboard
- macOS 13+ (Ventura or later)
- Apple Silicon Mac (M1/M2/M3/M4)
- Xcode (for building)
- Python 3.10+ with pip
git clone <repo-url> && cd zero-whisper
./Scripts/setup.shThat's it. Installs Python dependencies, downloads ML models (~4GB), builds the app, and outputs build/ZeroWhisper.app.
Then:
open build/ZeroWhisper.appOr copy to Applications:
cp -r build/ZeroWhisper.app /Applications/On first launch, grant Microphone (prompted automatically) and Accessibility (System Settings > Privacy & Security > Accessibility > toggle ZeroWhisper on).
| Action | Hotkey |
|---|---|
| Dictate (raw transcript) | Hold Right Option (β₯) |
| Polish (cleaned up text) | Hold Right Option (β₯) + Shift (β§) |
- Focus the app where you want text inserted
- Hold the hotkey
- Speak
- Release β text is transcribed and pasted
Text is always on your clipboard. If the paste misses, just Cmd+V manually.
Swift app (menubar) HTTP Python server (localhost:8426)
ββββββββββββββββββββ POST /transcribe βββββββββββββββββββββββ
β HotkeyManager β βββββββββββββββββββββ> β Parakeet STT β
β AudioRecorder β <βββββββββββββββββββββ β Qwen rewrite (opt) β
β PasteManager β JSON response β Models stay warm β
ββββββββββββββββββββ βββββββββββββββββββββββ
- Hotkey not working: Check Accessibility permission in System Settings
- No audio: Check Microphone permission
- Slow first use: Models are loading into memory. Subsequent uses are fast.
- Helper not starting: Run
./Scripts/setup.shto rebuild