Hold a key, speak, and it's typed.
A menu bar app for dictation anywhere on your Mac. Hold Right ⌥ in any text field, talk, let go: the cleaned-up text appears at the cursor. Speech-to-text runs on the Neural Engine, so it works offline and nothing is uploaded.
macOS 14 or later, Apple silicon. Free. No account.
How dictation works
You hold the dictation key while you talk. When you release it, VoiceMerge transcribes what it heard, cleans the text up, and pastes it where your cursor is. A quick tap instead of a hold locks the microphone on for hands-free dictation; tap again to finish, or press Esc to throw the recording away.
A live preview panel shows the transcription while you speak. If you prefer, words can be typed as you say them, and the final cleaned-up text replaces them when you let go. That option is off by default because apps with aggressive autocorrect fight with it.
Speech-to-text on the device
Two engines are included. Parakeet (NVIDIA's Parakeet TDT 0.6B v3, running on the Neural Engine) is the default: fast, accurate, English and 24 other European languages. Whisper (through WhisperKit) covers around 99 languages; pick a model size and a language hint, or let it detect. Model files download once, on first launch, about 1 GB for Parakeet.
Quiet talkers are fine. A clip-safe auto-gain brings soft speech up to a steady level before it reaches the model.
Cleanup: fillers out, tone in
The raw transcript goes through a cleanup pass that removes "um" and false starts, fixes sentences, and matches the tone to where you're writing. Where it runs is your choice, and the menu shows which path each dictation took:
- On this Mac (default, free). A small language model runs locally through Ollama, a free app you install once (the default model is Llama 3.2 3B). Settings shows the two commands. Without Ollama, dictation still works and you get the raw transcript with punctuation.
- Your own API key. Anthropic, OpenAI or Groq. The key stays in your Keychain and the app talks to them directly.
- VoiceMerge credits. Claude through our service, pay as you go. See pricing.
Auto mode uses the local model and retries remotely only if it fails or times out. If everything fails, you still get the raw words; a dictation never disappears.
Modes: it knows where you are
A mode is a tone or a custom prompt tied to an app. Casual in Slack, formal in Mail, technical in your editor, verbatim in the terminal (verbatim skips the language model entirely). In a browser a mode can be limited to pages whose address matches a pattern, so mail.google.com can be formal while github.com/*/pull is technical. The longest matching pattern wins, and the app's own mode is the fallback.
A personal dictionary teaches the cleanup pass your names and terms. Text replacements expand a spoken phrase into saved text ("my address", "the usual sign-off") after cleanup.
Beyond dictation
- Edit (Right ⌃): select text anywhere, hold, say how to change it. The edited text replaces the selection.
- Distill (fn): talk through something for a few minutes and review a short, ordered brief before it goes anywhere.
- Tasks (Left ⌃): say what needs doing. Dates, tags and people stay attached to the right task. Review, then copies go to Reminders, Obsidian, Microsoft To Do, ClickUp or Notion.
- Meetings (menu bar): records until you stop, tells speakers apart, transcribes each turn, summarizes, and opens a Markdown note in
~/Documents/VoiceMerge Meetings. On macOS 14.2 or later it also captures what the Mac plays, so the other side of a call is in the transcript; macOS asks once for System Audio Recording.
Every hotkey is changeable in Settings. Right ⌥, Left ⌥, Right ⌃, Left ⌃ and fn are offered; changes apply instantly.
History
Dictations are kept in a searchable SQLite database on your disk, with the raw and cleaned text, which path ran, and the app they went to. Re-clean an entry, copy the raw words, delete one or all of them, or turn history off. It is never synced or uploaded.
Screen context, opt-in
Off by default. When on, the active window title and selected text are read through Accessibility and given to the cleanup model as reference. This context is only ever used by models on your Mac. It is never sent to a remote provider, including ours.
What the app asks for, and why
| Permission | Used for |
|---|---|
| Microphone | Hearing you while the hotkey is held or a meeting is recording. |
| Accessibility | Typing at the cursor, reading a selection for Edit, and reading the front tab's address for site-level modes. |
| System Audio Recording | Only for meetings, only if you start one, to capture the other participants. |
| Reminders | Only if you send tasks to Reminders. |
The app is signed and runs with the hardened runtime. API keys live in the Keychain. More on the security page.
Requirements
- macOS 14 Sonoma or later. Meeting capture of the Mac's own audio needs 14.2.
- Apple silicon (M1 or later). The speech models run on the Neural Engine.
- About 1 GB of disk for the Parakeet models, more for Whisper variants; a few GB for an Ollama model if you use local cleanup.