Free, open-source voice-to-text for macOS. Hold a key, speak, release — text appears wherever your cursor is. Works in any app.
Like Wispr Flow but 100% free, fully local, and private. No cloud, no subscription, no data leaves your Mac.
- OpenWhisper runs in your menu bar (🎙)
- Hold Right Option → speak → release
- OpenAI Whisper transcribes your speech locally
- Ollama + Qwen 2.5 cleans up filler words and grammar
- Text is auto-pasted at your cursor — VS Code, Terminal, Slack, browser, anywhere
Fully local. Fully private. Zero cost.
Hold Right ⌥ → "Hey let's um add a new function that uh parses the JSON response"
Output: → "Hey, let's add a new function that parses the JSON response."
curl -sSL https://raw.githubusercontent.com/Rajvardhman05/openwhisper/main/install.sh | bash# 1. Install system deps
brew install ffmpeg ollama
# 2. Install Python packages
pip3 install openai-whisper sounddevice numpy pynput rumps
# 3. Start Ollama and pull cleanup model
brew services start ollama
ollama pull qwen2.5:3b
# 4. Clone and run
git clone https://github.com/Rajvardhman05/openwhisper.git ~/openwhisper
python3 ~/openwhisper/openwhisper_app.pyAfter first launch, grant these in System Settings → Privacy & Security:
| Permission | What to add |
|---|---|
| Accessibility | python3 (find it with which python3) |
| Microphone | Terminal / iTerm (whichever you use) |
python3 openwhisper_app.pyRuns as a menu bar icon. Hold Right Option to dictate.
python3 openwhisper.py # Hold Right Option to talk
python3 openwhisper.py -c # Continuous mode
python3 openwhisper.py --raw # Skip LLM cleanup
python3 openwhisper.py -m small # Better accuracy (larger model)| Flag | Description |
|---|---|
-m, --model |
Whisper model: tiny, base, base.en, small, medium, large |
-l, --language |
Language code (default: en) |
-k, --key |
Trigger key: option_r, ctrl_r, cmd_r, shift_r |
--raw |
Skip LLM cleanup |
OPENWHISPER_MODEL=small python3 openwhisper_app.py # Use larger model
OPENWHISPER_LANG=es python3 openwhisper_app.py # SpanishMicrophone → Whisper (local STT) → Ollama/Qwen (cleanup) → CGEvent (paste)
| Component | Purpose | Size |
|---|---|---|
| OpenAI Whisper | Speech-to-text | ~140MB (base) |
| Ollama + Qwen 2.5 3B | Filler removal, grammar | ~1.9GB |
| CGEvent (macOS) | Auto-paste at cursor | Built-in |
| rumps | Menu bar UI | Tiny |
| pynput | Global hotkey | Tiny |
Total disk: ~2.5GB (models cached locally)
| Model | Size | Speed | Accuracy | Best for |
|---|---|---|---|---|
tiny |
39MB | Fastest | Basic | Quick notes |
base |
140MB | Fast | Good | Daily use |
base.en |
140MB | Fast | Better (English) | Recommended |
small |
460MB | Medium | Great | Important dictation |
medium |
1.5GB | Slow | Excellent | Maximum accuracy |
- Core dictation (hold-to-talk, auto-paste)
- LLM cleanup (filler removal, grammar)
- Menu bar app
- Native macOS app (Swift/SwiftUI)
- Custom app icon
- Homebrew cask (
brew install openwhisper) - Auto-start at login
- Configurable hotkey via UI
- Snippet support (voice shortcuts)
- iOS / iPadOS app
- Context-aware tone (formal in email, casual in chat)
| Feature | Wispr Flow | SuperWhisper | OpenWhisper |
|---|---|---|---|
| Price | $15/mo | $8.50/mo | Free forever |
| Privacy | Cloud-based | Local | Fully local |
| Offline | No | Yes | Yes |
| Filler removal | Yes | No | Yes (LLM) |
| Open source | No | No | Yes |
| Works in any app | Yes | Yes | Yes |
PRs welcome! See the roadmap above for what's needed.
MIT — use it however you want.
If OpenWhisper saves you time, consider supporting development: