Speak, and it types. In any app on your Mac. Free, open source, on-device.
Hold a shortcut, speak, let go: your words land where you were typing. Five transcription engines, four of them fully on-device. No subscription, no account, no telemetry.
Community fork maintained by My-Monkey, started from
Starmel/OpenSuperWhisper(MIT), which is still developed on its own side. Merged work credits its original authors. Compare the engines on real benchmarks at opensuperwhisper.com.
brew install --cask my-monkeys/tap/opensuperwhisper
⚠️ Use the fullmy-monkeys/tap/path. The bare nameopensuperwhisperis the homebrew-cask entry for the original project, which still serves its 0.1.0, not this fork.
You can also download the latest notarized .dmg from
Releases, or
build from source.
Requires macOS 14 (Sonoma) or later, on Apple Silicon or Intel. Homebrew picks the right build. The Intel build has Whisper, Parakeet and the remote engine; SenseVoice needs Apple Silicon, and Apple Speech and Apple Intelligence need macOS 26.
The first launch walks you through four short steps: your shortcut, a model, the two macOS permissions (microphone, and Accessibility to type into other apps), and a first dictation to try it.
- ⌨️ One shortcut, your way. A key combination, a modifier on its own (Right ⌥, Fn…), two modifiers together, or a mouse button. Hold to talk and release to insert, or tap to start and tap again to stop. Extras: lock a long dictation with Space, dictate and press Return in one go, paste the last dictation again.
- 💬 Watch it as you speak. With Parakeet, the words appear live in the recording bubble (in a capsule of their own next to the waveform, with Liquid Glass). Say a stop phrase ("over and out") to end the dictation hands-free, and optionally press Return after it.
- 📍 A bubble where you want it. Near the cursor, at an edge of the screen, docked in the notch (a drawn one on Macs without), or wherever you drag it. Liquid Glass on macOS 26. Choose which elements it shows: blinking dot, waveform, label, Stop and Cancel buttons.
- 🏠 Home. Every dictation, grouped by day, with the app it went to and the model that wrote it. Filter dictations, imported files or errors, search everything with ⌘K, copy, play back, or run a dictation again with another model. A failed transcription keeps its audio and a retry button.
- 🎙️ A microphone you can check. The microphone menu on Home and in Settings shows a live input level, with the input volume right under it, so a mic that's too quiet is easy to spot and fix. Dictations recorded far too quiet are lifted before transcription.
- 📁 Files too. Drop audio files on the window or use Import, and they queue up.
- 🌍 Your language. About 99 languages with auto-detect, or follow your keyboard layout. Translation to English with Whisper. The interface is in English, French, German, Spanish, Italian, Portuguese (BR), Vietnamese and Simplified Chinese, light or dark.
| Engine | Runs | Best for |
|---|---|---|
| Parakeet (FluidAudio) | On-device | Speed and live text, 25 European languages |
| Whisper (whisper.cpp) | On-device | Accuracy, about 99 languages, translation to English |
| SenseVoice (sherpa-onnx) | On-device | Chinese, Cantonese, English, Japanese, Korean |
| Apple Speech | On-device, built into macOS 26 | Nothing to download, models managed by macOS |
| Remote | Your server | Any OpenAI-compatible endpoint: Groq preset, LiteLLM, speaches, a box on your LAN |
Browsing an engine never downloads anything, and only one model is ever active. The Remote engine sends audio to the server you chose and says so plainly. It lists the server's models after a connection test, retries network hiccups, and can fall back to a local model so a dictation never just fails.
The Dictionary holds the names and terms you say often.
- New words help the engine recognise them (Parakeet and Whisper).
- Corrections rewrite what the model heard: several ways of mishearing a word can point to the same spelling, a rule can be a regular expression, and punctuation rules know which side to glue to.
- Commands: "new paragraph" can be a line break. Teach punctuation has you read a few sentences aloud and turns the way you say punctuation into rules.
- Every entry has a live test, so you see the result before you save.
Snippets insert a longer text when you say a short phrase: "my email" writes the address, "sign off" a three-line signature. They match alone or mid-sentence, the longest phrase wins, and they are expanded after the AI formatting, so the text you wrote is the text you get.
-
🧹 Cleanup. Remove hesitations (um, uh…) and keep the spacing between dictations right.
-
🤖 Format with AI (optional). Tidy punctuation and casing with a language model:
- Apple Intelligence, on-device on macOS 26, nothing to download. Unless you picked another engine, it is the one used on Macs that have it.
- The built-in model (Qwen2.5 1.5B or 7B, a one-time download, no server to run).
- A local Ollama server, or any OpenAI-compatible endpoint.
The instructions are yours to edit. If the model fails, misbehaves or repeats its own instructions, the dictation is pasted as you said it.
-
🪟 Per app (on the Style page). One line per app or website: which model to use there, whether to paste or type (terminals and some games prefer typing), and formatting rules for the AI pass, so "at Rob" becomes "@Rob" in Slack and "src slash main dot swift" becomes
src/main.swiftin a terminal. The model follows you when you switch apps. -
⏯️ While you speak. Other apps' playback pauses (and only what was really playing resumes), or the system volume dips.
Install the plugin from Settings → Assistants and OpenSuperWhisper shows a small panel when Claude Code finishes a task, needs a permission or asks you a question. Read the answer, then reply by voice or keyboard without going back to the terminal. Codex works too, except for its questions, which still wait in the terminal. pi and oh-my-pi work too, through the pi-opensuperwhisper extension. You choose which events show the panel and which projects it follows. With live text on, your reply appears in the panel as you dictate it.
To answer in the terminal instead, click the terminal button in the panel's header, or press ⌘O once the panel has focus. In Warp it opens the exact window, tab and pane the agent runs in. Other terminals and editors come to the front, and so does the terminal holding a tmux, zellij or screen session, without picking the pane. The panel stays on screen and the agent keeps waiting for your answer.
Settings open over the window with ⌘, and close with Esc. Eight sections (General, Dictation, Models, Text & AI, Appearance, Assistants, Privacy, Advanced) show the essentials first; an Advanced switch in each one reveals the rest. Search finds any setting by name, in English or in your language.
On-device engines never send audio anywhere. There's no account and no telemetry. The only ways audio or text leave your Mac are the Remote engine and a remote AI server, both of which you set up yourself and which say so. History is yours to cap by count or age, or to turn off entirely.
opensuperwhisper transcribe path/to/audio.wav # text on stdout
opensuperwhisper transcribe path/to/audio.wav --json # { "file", "text" }--model path/to/ggml-model.bin transcribes with Whisper on that model whatever engine the app is
set to, and --raw ignores your prompt, dictionary and transcription settings (English, a fresh
install's defaults), so nothing you set up in the app changes the result.
Engine logs go to stderr, so it pipes cleanly: opensuperwhisper transcribe note.m4a > note.txt.
Set up a model in the app at least once first. A post-record hook can also run your own shell
command after each dictation, with the text and the audio path in environment variables and as JSON
on stdin.
Real-world testing is what makes this stable. Pre-release builds are on the Releases page (marked Pre-release). They install alongside the stable build and never touch your auto-updates.
- 🐞 Bugs: open an issue with your macOS version, the engine and model in use, and the steps to reproduce.
- 💬 Feedback, no account needed: Feedback in the app's sidebar opens a short form (it shows exactly what it sends), or use the one on opensuperwhisper.com.
OpenSuperWhisper is free forever: no Pro tier, no paywall. If it saves you time, you can buy the monkeys a banana on Ko-fi. Donations keep the nonprofit (association loi 1901) running and the open-source work alive. 🍌
Clone, install the toolchain, build
git clone git@github.com:my-monkeys/OpenSuperWhisper.git
cd OpenSuperWhisper
git submodule update --init --recursive
brew install cmake rust ruby
gem install xcpretty
./run.sh buildIf something breaks, .github/workflows/build.yml is the CI recipe that builds the app on every
push. Maintainers: see docs/PUBLISHING.md for the notarized release and
Homebrew flow.
Contributions are welcome: issues, focused PRs, or big ideas (the last community batch shipped a whole menu of features). Open items live in the issue tracker.
How the code is laid out: OpenSuperWhisper/ is the macOS app (UI, audio capture, text insertion,
shortcuts). OpenSuperWhisperCore/ is a local Swift package with the transcription core shared with
a future iPhone app: engines, model managers, AI cleanup, recording storage and the queue. Its
native libraries (whisper.cpp, llama.cpp and their one ggml) come from the libwhisper/ submodules
and are built into OpenSuperWhisperCore/Binaries/ by Scripts/build-native.sh, which ./run.sh build calls for you. docs/core-extraction.md explains the split.
Tests, after ./run.sh build:
- the app's suite:
xcodebuild test -scheme OpenSuperWhisper -derivedDataPath build -clonedSourcePackagesDirPath SourcePackages -destination 'platform=macOS,arch=arm64' -only-testing:OpenSuperWhisperTests(the same derived data and packages asrun.sh); - the core's:
Scripts/test-core.sh macosandScripts/test-core.sh ios(iOS Simulator).
Never run swift test in OpenSuperWhisperCore/: it resolves the packages on its own, without the
FluidAudio patch run.sh applies, and writes a Package.resolved nobody should commit. After a
submodule bump (git submodule update), run ./run.sh build again so the native libraries are
rebuilt before Xcode resolves the packages.
Two other free, open-source apps from the same collective:
| 🐒 Desktop Monkey | A pixel-art monkey that lives on your desktop: he follows your cursor, hunts it, throws bananas at it and naps when you're away. Windows and macOS, one 6 MB file. (source) |
| 📊 Claude Monitor | A macOS menu-bar app that counts your Claude Code instances and MCP servers, watches the per-user process limit and RAM, and kills a runaway swarm before it takes the Mac down. |
MIT, see LICENSE. Built on whisper.cpp, llama.cpp, FluidAudio, sherpa-onnx / SenseVoice, autocorrect and Sparkle. 🐒