Voice Dictation
Dictate prompts instead of typing them: a local speech-to-text app for free, Groq for cents, and one rules line that makes the agent forgive homophones.
The one line: dictating is faster than typing and you say more, so the agent usually gets a better brief. Add one rules line telling it to read through transcription errors.
The whole job is typing
Speaking is three to four times faster than typing. That gap is why longer prompts feel expensive: a one-liner gets a vague answer, a paragraph gets a good one, and the paragraph costs a minute of typing. Dictation removes that cost.
Never pay a subscription for this. Open-source apps do it locally for free and the cloud does it for cents, while polished apps charge around twenty dollars a month.
Desktop: a local model, no per-word fee
Two open-source apps cover the desktop: hold a hotkey, talk, and the text lands in whatever field has focus.
Both can load Whisper large instead: more accurate, noticeably slower. I stay on Parakeet: a large model's lag breaks the rhythm of talking to an agent, and prompts are not court records.
The model file is over half a gigabyte and sits in RAM while the app runs. No per-minute billing, no account, and nothing leaves the machine, which matters when a prompt names internal services.
Cloud: Groq, and it is not Grok
Off the desktop, use Groq, the LLM inference host, not xAI's Grok chatbot. They serve whisper-large-v3-turbo at $0.04 per hour of audio (Groq speech-to-text), so a personal transcriber costs cents a month.
My setup is a small Telegram bot: send it a voice message, it sends the audio to Groq and replies with the text. Deploy it on Railway, a VPS, or Cloudflare.
Tell the agent that you dictate
Speech-to-text breaks exactly the words you care about: product names, CLI names, identifiers. "Vercel" comes back as "resell", "Biome" as "by home". A model reading the transcript literally uses the wrong name or asks what you meant.
One line in your rules file fixes it. Put it in ~/.claude/CLAUDE.md so every project gets it:
The user often dictates prompts, so transcription errors are expected.
Read through obvious errors and resolve them from context instead of
asking (for example, "resell" means "vercel"). Ask only when the
intended term is genuinely ambiguous.User-level CLAUDE.md is concatenated with the project file, not overridden, so it rides along everywhere: see the memory docs and Rules Files and Scope for where else it can live. Keep the worked example in. Models generalise from an example better than from the instruction alone.
Say more than you would type
Talking is cheap, so brief the agent the way you would brief a person: what you ruled out and why, the approach you are unsure of. Agents handle messy input far better than thin input. When I type I compress to the conclusion and drop the reasoning; dictating I keep it, so the model sees why I am asking and picks the right approach more often.
Paths and identifiers are the exception: transcription breaks them and there is no context to recover from. Paste the path after you release the hotkey, or describe the file, "the loader that reads the course frontmatter", and let the agent find it.
What to do
- Install Hex on macOS or Handy on Windows, load Parakeet, bind a push-to-talk hotkey.
- Cancel any speech-to-text subscription.
- Add the dictation line to
~/.claude/CLAUDE.md, worked example included. - Stand up a Groq
whisper-large-v3-turbotranscriber only for dictation off the desktop. - Dictate long: the reasoning and the rejected options, not just the request.
- Paste file paths, or describe the file and let the agent find it.