What VoiceInk does well
VoiceInk gives you a choice of speech models. On your Mac it runs Parakeet, Nemotron, Whisper, Cohere Transcribe, SenseVoice Small and Apple Speech. In the cloud it connects to Groq, Deepgram, ElevenLabs, Gemini and others. With Parakeet, Nemotron and several cloud models, it shows the text while you speak.
A Mode sets the speech model, language, prompt, context and output for one kind of work. Modes were called Power Mode before v2.0. VoiceInk picks a Mode from the app in front, or from the website in Safari, Chrome, Arc and other supported browsers. Firefox is not supported. You can also pick a Mode by a spoken trigger word or a shortcut.
AI Enhancement can clean up or rewrite each dictation. It runs on VoiceInk Refine on your Mac, on Ollama, on a cloud provider, or on a command-line tool such as Claude or Codex. VoiceInk Refine needs Apple silicon and 16 GB of memory.
The built app costs $25 for one Mac, $39 for two or $49 for three, once, with a 7-day trial. There is also an app for iPhone and iPad, free while it is in beta. A Mac license does not cover it.
How each one changes the text
VoiceInk’s word replacements map one or more plain phrases to one result. Matching ignores case and does not change letters inside a longer word. The docs do not mention regular expressions. A Custom Command gets the final text on stdin and must finish within 10 seconds. VoiceInk does not paste its output, so the script must copy and paste the result itself. VoiceInk ships templates that do this. Local CLI is the other way to run a program. It runs as the enhancement step and gets the whole prompt on stdin, not only your words.
ParrotFlow runs your steps in the order you write in config.yaml. A step is a replace table, a script or a prompt. A replace table takes regular expressions, so one rule covers every pull request number:
“PR 478”
#478
A script reads your text on stdin and writes the new text on stdout. The slack_mentions script ships with ParrotFlow. Fill its roster, dictate, then press S:
“Siobhan”
@siobhan
A step can carry app:, when: or unless:, so it runs only in some apps or only when the text matches. app: reads the app in front, not the URL. So a step for Gmail in Chrome runs in every Chrome tab. ParrotFlow --pipeline runs a pipeline file on a sentence with no microphone, so you can test a rule first. See programmable dictation.
How each one handles names
VoiceInk’s Vocabulary is a list of words to recognise. Its docs say it guides speech models and AI Enhancement, and does not force one word to become another. Dictionary Auto Learn watches your edits to inserted text. An AI model you pick, such as one in Ollama or a cloud provider, decides which edits become entries. Auto Learn is on by default. You can set it to wait for your approval before it adds anything.
ParrotFlow matches a taught name by spelling and by sound. Then it checks the sentence before it writes the name.
“upgrade view”
upgrade Vue
“re-render the whole view”
re-render the whole view
If ParrotFlow writes a name where you meant the word, change it back. ParrotFlow keeps that sentence as a counter-example and does not make a reverse rule. When you fix a word, the pill offers to learn it. You can also say “hey parrot” to open a panel and teach a word. The panel needs no language model. See custom vocabulary and teach ParrotFlow a word.
What each one does with your screen
VoiceInk can capture selected text, the clipboard and screen text when you start recording. It reads the active window with OCR, so it needs the Screen Recording permission. This context goes to AI Enhancement. With a cloud provider, it leaves your Mac. A Mode without enhancement does not send it.
ParrotFlow uses the screen to spell names, on your Mac. It is on by default. When you press the key, it reads the window you dictate into. Since version 0.18.0, it does this in any app. It skips password managers, System Settings and password fields. It reads text through Accessibility, so it needs no Screen Recording permission. If it cannot read the window, it uses the text above the caret.
“caret anchor”
carrot anchor
CaretAnchor
See screen context and local dictation. To install, see download.
Also compare ParrotFlow with Wispr Flow and Superwhisper.