open-wispr.com
Local, private voice dictation for macOS. Hold a key, speak, release — your words appear at the cursor.
Everything runs on-device. No audio or text ever leaves your machine.
Powered by whisper.cpp with Metal acceleration on Apple Silicon.
curl -fsSL https://raw.githubusercontent.com/human37/open-wispr/main/scripts/install.sh | bashThe script handles everything: installs via Homebrew, walks you through granting permissions, downloads the Whisper model, and starts the service. You'll see live feedback as each step completes.
Note: Recent versions of Homebrew (6.0+) have tightened security around third-party taps, so you may be asked to trust this package before it installs. If that happens, the installer prints the exact
brew trustcommand to run.
A waveform icon appears in your menu bar when it's running.
The default hotkey is the Globe key (🌐, bottom-left). Hold it, speak, release.
OpenWispr uses fast input-only audio capture by default. On macOS 14 and later, optional Voice Processing adds system echo/noise processing but can slow recording startup and reduce playback volume while recording. Enable it from the menu bar if needed.
Full installation guide — permissions walkthrough with screenshots, non-English macOS instructions, and troubleshooting.
curl -fsSL https://raw.githubusercontent.com/human37/open-wispr/main/scripts/uninstall.sh | bashThis stops the service, removes the formula, tap, config, models, app bundle, logs, and permissions.
Edit ~/.config/open-wispr/config.json:
{
"hotkey": { "keyCode": 63, "modifiers": [] },
"modelSize": "base.en",
"language": "en",
"spokenPunctuation": false,
"whisperPrompt": "Use punctuation and capitalization.",
"voiceActivityDetection": false,
"voiceProcessing": false,
"vadThreshold": 0.5,
"maxRecordings": 0,
"toggleMode": false,
"soundFeedback": false
}Then restart: brew services restart open-wispr
To bind multiple hotkeys, use the hotkeys array instead:
{
"hotkeys": [
{ "keyCode": 63, "modifiers": [] },
{ "keyCode": 96, "modifiers": [] }
]
}Both hotkey (single) and hotkeys (array) are supported. If both are present, hotkeys takes precedence.
| Option | Default | Values |
|---|---|---|
| hotkey | 63 |
Globe (63), Right Option (61), F5 (96), or any key code |
| hotkeys | — | Array of hotkey objects — bind multiple keys to trigger dictation |
| modifiers | [] |
"cmd", "ctrl", "shift", "opt" — combine for chords |
| modelSize | "base.en" |
See model table below |
| language | "en" |
"auto" for auto-detect, or any ISO 639-1 code — e.g. it, fr, de, es |
| spokenPunctuation | false |
Say "comma", "period", etc. to insert punctuation instead of auto-punctuation |
| whisperPrompt | — | Optional prompt text passed to Whisper to guide style, vocabulary, or punctuation. Omit it or leave it blank to use Whisper's default behavior. |
| voiceActivityDetection | false |
Enable local Silero voice activity detection to filter non-speech audio before transcription. The VAD model downloads when first enabled; quiet or very short speech may be skipped. |
| voiceProcessing | false |
Use macOS voice processing on supported systems. Adds echo/noise processing but can slow recording startup and reduce playback volume while recording. Also available in the menu bar. |
| vadThreshold | 0.5 |
Speech detection sensitivity from 0 to 1; lower values detect quieter speech but may admit more background audio. |
| maxRecordings | 0 |
Optionally store past recordings locally as .wav files for re-transcribing from the tray menu. 0 = nothing stored (default). Set 1-100 to keep that many recent recordings. |
| toggleMode | false |
Press hotkey once to start recording, press again to stop. Default is hold-to-talk. |
| soundFeedback | false |
Play short system sounds when recording starts and stops. Turn on in the menu bar or set to true. |
Caps Lock cannot be used as a hotkey: macOS toggles its state rather than sending a release event, so it cannot provide reliable hold-to-talk behavior.
Larger models are more accurate but slower and use more memory. The default base.en is a good balance for most users.
| Model | Size | Speed | Accuracy | Best for |
|---|---|---|---|---|
tiny.en |
75 MB | Fastest | Lower | Quick notes, short phrases |
base.en |
142 MB | Fast | Good | Most users (default) |
small.en |
466 MB | Moderate | Better | Longer dictation, technical terms |
medium.en |
1.5 GB | Slower | Great | Maximum accuracy, complex speech |
large-v3-turbo |
1.6 GB | Moderate | Great | Fast multilingual, near-large accuracy |
large-v3 |
3 GB | Slowest | Best | Multilingual, highest accuracy (M1 Pro+ recommended) |
Each model also has quantized -q5_0 / -q5_1 / -q8_0 variants at ~⅓–½ the disk and RAM with minimal quality loss. See MODELS.md for the complete list and tradeoffs.
Non-English languages: Models ending in
.enare English-only. To use another language, switch to the equivalent multilingual model (e.g.base.en→base, orlarge-v3-turbofor the fastest large-tier option) and set thelanguagefield to your language code. Multilingual models are slightly less accurate for English but support 99 languages.
If the Globe key opens the emoji picker: System Settings → Keyboard → "Press 🌐 key to" → "Do Nothing"
Click the waveform icon for status and options. Recent Recordings lists your last recordings; click one to re-transcribe and copy the result to the clipboard.
| State | Icon |
|---|---|
| Idle | Waveform outline |
| Recording | Bouncing waveform |
| Transcribing | Wave dots |
| Downloading model | Progress ring |
| Waiting for permission | Lock |
If no text field is focused, the transcription is copied to the clipboard automatically. Copy Last Dictation in the menu bar also lets you copy the most recent transcription again.
| open-wispr | VoiceInk | Wispr Flow | Superwhisper | Apple Dictation | |
|---|---|---|---|---|---|
| Price | Free | $39.99 | $15/mo | $8.49/mo | Free |
| Open source | MIT | GPLv3 | No | No | No |
| 100% on-device | Yes | Yes | No | Yes | Partial |
| Push-to-talk | Yes | Yes | Yes | Yes | No |
| AI features | No | AI assistant | AI rewriting | AI formatting | No |
| Account required | No | No | Yes | Yes | Apple ID |
open-wispr is completely local. Audio is recorded to a temp file, transcribed by whisper.cpp on your CPU/GPU, and the temp file is deleted. No network requests are made except to download the Whisper model on first run and the VAD model if enabled. Optionally, you can configure open-wispr to store a number of past recordings locally via the maxRecordings setting. Those recordings stay private and on your machine, and we default to not storing anything.
See what's planned and in progress on the public roadmap. Feature requests and ideas are welcome as issues.
git clone https://github.com/human37/open-wispr.git
cd open-wispr
brew install whisper-cpp
swift build -c release
.build/release/open-wispr startopen-wispr is free and always will be. If you find it useful, you can leave a tip.
MIT