Native, fully local dictation for macOS. Hold a key, speak, let go. Clean text lands in whatever app you are typing in.
Nothing leaves your Mac. No accounts, no cloud, no telemetry.
You need a Mac with Apple silicon running macOS 26 or newer. Nothing else.
-
Download the latest
uisper-x.y.z.zipfrom Releases. -
Unzip it and move
uisper.appto your Applications folder. -
Right-click
uisper.appand choose Open, then Open again in the dialog. This is needed once, because the build is not notarized by Apple. -
Grant the three permissions macOS asks for: Microphone, Accessibility, Input Monitoring. Then quit uisper from the menu bar and open it again.
-
Leave it running for a few minutes the first time. uisper fetches two models it then keeps for good:
- about 600 MB for speech, into
~/Library/Application Support/FluidAudio/ - about 2.1 GB for the cleanup, into
~/Library/Application Support/uisper/Models/
Settings › General shows the progress. Dictation works before they finish; you just get the raw words until the cleanup model is ready.
- about 600 MB for speech, into
uisper lives in the menu bar. Look for the microphone icon.
Apple Intelligence is optional. uisper ships its own models and does not need it, but you can switch the cleanup to Apple's model in Settings if you prefer.
- Hold your hotkey. A small pill appears at the bottom of the window you are in.
- Speak. The pill shows the sound level, and with Apple's engine the words as you talk.
- Let go. The text is transcribed, cleaned up and inserted at the cursor.
Press Escape while dictating to cancel. A tap shorter than 300 ms does nothing.
The default hotkey is Option+Space. Change it in Settings › General: click the field and press any shortcut. Modifier-only chords like Fn or Right Option work too.
Everything lives in the menu bar: language, cleanup toggle, hold or toggle mode.
Click the hotkey field and press any shortcut. That is your key from then on.
A small AI model rewrites the raw transcript before it is inserted:
- Fixes punctuation, capitalization and grammar.
- Drops fillers like "uh" and "um" and false starts.
- Applies self-corrections: "send it Monday, no wait, Tuesday" becomes "send it Tuesday".
- Repairs words the speech engine misheard, when the context makes the right one obvious.
It runs on your Mac. Turn it off in the menu bar when you want the raw words.
Some fixes happen with the cleanup on or off:
- Sounds that are never words ("uh", "um", "hmm" in English, "äh" in German, "ãh" in Portuguese) are removed.
- Your vocabulary words keep your spelling. "claude code" becomes "Claude Code", and a word heard in two parts is joined again: "fly kit" becomes "flykit".
The speech engine sometimes hears a name as ordinary words: "cloud code" instead of "Claude Code", "Antropic" instead of "Anthropic". Turn on Settings › Cleanup › Fix misheard names with the Decider to catch these.
uisper then looks for words that are spelled close to a word in your vocabulary list. For each one, it asks a small local model, Decider, whether you meant your word. It changes the text only when the model is very sure, so "a quant fund" stays as it is even if "Quants" is in your list.
- The first time you turn it on, uisper downloads the model from its author's Hugging Face page (about 8.4 GB) and makes a smaller copy for your Mac (about 2.4 GB). The large download is deleted afterwards. Settings shows the progress. Dictation works meanwhile, without this check.
- It adds at most half a second to a dictation. If it takes longer, the text is inserted without it.
- English only. It is skipped when the dictation language or the text is not English.
- Converting the model needs about 8 GB of free memory once.
Add names and terms in Settings › Vocabulary, and uisper will spell them your way.
It also picks them up on its own. Correct a word by hand within five minutes of dictating, and the next time you dictate in that app uisper notices the change and remembers your spelling. It skips the 5,000 most common English words and sentences you rewrote, so ordinary edits like "call" to "called" are ignored. Learned words are capped at 200; the oldest go first. Words you typed in yourself are never removed.
Reading what you corrected needs the app to expose its text. Native apps do. Chrome and Electron apps do once uisper asks them to. Ghostty does through its own screen keybind. Other terminals cannot, so learning is off there — dictation itself still works everywhere.
- Hold-to-talk or press-to-toggle.
- Any hotkey, recorded by pressing it.
- English, German, Brazilian Portuguese. Switch from the menu bar.
- Two speech engines: the built-in one, or Apple's. Switch in Settings › General.
- Personal vocabulary list that grows from your own corrections.
- Optional check that fixes misheard names from your list (English).
- Password fields are respected: when secure input is on, the text goes to the clipboard instead.
- Works in every app, including Chrome and Electron apps, through a paste fallback.
Everything runs on device inside macOS 26:
| Part | What it uses |
|---|---|
| Speech to text | Parakeet TDT v3 on the Neural Engine, via FluidAudio. Apple SpeechAnalyzer is the alternative and streams words as you talk |
| Cleanup | Qwen3 4B on MLX. Apple Foundation Models is the alternative |
| Misheard names (optional) | Decider 4B v2 on MLX, answering one multiple-choice question per suspect word |
| Text insertion | Accessibility API, with a paste fallback |
| Hotkey | A global event tap, so hold-to-talk works everywhere |
The app is not sandboxed and is not on the App Store. Global hotkeys and text insertion need permissions the App Store forbids.
Only needed if you want to change the code. Requires Xcode 26 and xcodegen.
brew install xcodegen
scripts/build.sh --open
This generates the Xcode project, builds, signs with your local identity, and launches the app.
Tests:
cd UisperCore && swift test
All logic lives in the UisperCore package and is tested there. The Uisper app target is a thin shell.
To publish a release: scripts/release.sh <version>.
- On Apple keyboards, F14 and F15 double as brightness keys at a level no app can intercept. Remap them with Karabiner-Elements, for example F15 to F20, and record the mapped key.
- Cleanup speed depends on how busy your Mac is. On a calm machine it takes well under a second.
- The built-in speech engine transcribes once you let go, so words do not appear while you speak. Apple's engine shows them live. Pick whichever you prefer in Settings.
- A single dictation stops itself after ten minutes and inserts what you said.
- Voice commands while dictating, like "new line" and "delete that".
- Transcript history.
MIT.


