To dictate into the terminal on Windows, you need a tool that sends real keystrokes into the focused window rather than relying on a clipboard or an accessibility API. PipeVoice does exactly that: hold a hotkey (default Ctrl+\ or Right Ctrl), speak, release, and the text is typed straight into PowerShell, CMD, or Windows Terminal as if you had typed it yourself. It is free, open source, and runs on Windows 10 and 11.
Why most dictation tools fail in the terminal (and how PipeVoice doesn't)
The terminal is a hostile target for dictation. Built-in tools like Windows Voice Access and Windows Speech Recognition were designed around accessibility hooks and a known set of apps. A console host like Windows Terminal or the classic CMD window often does not expose the text fields those tools expect, so dictation either does nothing, drops characters, or refuses to insert text at all.
PipeVoice sidesteps the problem entirely. It does not ask the terminal to cooperate. It simulates the same keystrokes a keyboard would produce and injects them into whatever window has focus. If your keyboard can type into the prompt, so can PipeVoice. That is why the same tool works in a terminal, a code editor, a browser, and a chat box without any per-app integration.
Real keystrokes vs clipboard injection: why it matters for shells
Some dictation utilities "type" by copying text to the clipboard and pasting it. That breaks in a shell for a few concrete reasons:
- Paste shortcuts differ by app. Ctrl+V works in Windows Terminal but not in legacy consoles, where you may need a right-click or Ctrl+Shift+V. A paste-based tool cannot guess correctly every time.
- Pasting clobbers your clipboard, which is annoying when you are mid-task and had something else copied.
- Multi-line pastes can auto-execute commands in some shells, which is a security and "oops" hazard.
PipeVoice types real keystrokes by default, so the text lands at the cursor exactly like manual typing. If you ever do want clipboard behaviour, a second hotkey copies the result to the clipboard instead of typing it, so the choice is yours per use rather than baked in.
Setting up PipeVoice for PowerShell, CMD, and Windows Terminal
Getting running takes a couple of minutes.
- Download and install from the latest release. PipeVoice is currently unsigned, so Windows SmartScreen may show an "unrecognised app" warning. Click More info then Run anyway (code signing is in progress).
- Pick a transcription engine. Local Whisper / faster-whisper runs fully offline and free (the first run downloads a model of roughly 150MB). Deepgram gives the fastest, live, word-by-word output on your own free API key. OpenAI Whisper is the most accurate batch option on your OpenAI key.
- Open your terminal of choice, place the cursor at the prompt, hold the hotkey, speak your command, and release. The text types in.
Voice commands for command-line work: new line, tab key, scratch that
Plain transcription is not enough for shell work, because you constantly need structural keys. PipeVoice recognises spoken voice commands so you can produce them without touching the keyboard:
- "new line" and "new paragraph" for line breaks, useful for multi-line scripts or here-strings.
- "tab key" to trigger shell tab-completion of a path or command.
- "scratch that" to undo the last dictated chunk when you misspeak.
For jargon that the engine keeps mangling, such as a CLI name or an unusual flag, PipeVoice supports vocabulary boosting so your specific terms transcribe correctly.
Auto-Enter and "send it" for running commands hands-free
Dictating a command is only half the job. To actually run it you say "send it", which presses Enter for you. Spoken aloud, that turns a full command-and-run cycle into one continuous action: hold the hotkey, say the command, finish with "send it", release.
If you want this to happen automatically for a particular terminal, set an auto-Enter rule in that app's profile (covered next) so every dictation runs as soon as you release the hotkey. That is ideal for a fast REPL loop, and easy to leave off where you would rather review before executing.
Per-app profile tuning for terminal accuracy
PipeVoice supports per-app profiles, so your terminal can behave differently from your editor or browser. For each app you can set a different engine, a different level of AI cleanup, whether output is typed or pasted, and whether auto-Enter is on.
A practical terminal profile looks like this:
- Engine: Local Whisper for offline infra work, or Deepgram when you want live, low-latency text.
- Cleanup: minimal. Flow mode AI polish is great for prose, but you usually do not want a model reflowing a command's casing or punctuation. Keep it off or light here.
- Output: type real keystrokes.
- Auto-Enter: on for a throwaway scratch shell, off for anything that touches production.
Meanwhile your writing apps can keep full Flow mode cleanup. The optional AI polish (OpenAI, Google Gemini's free tier, OpenRouter's free community models, or local Ollama) sends text only, never audio.
Handling flags, paths, and symbols by voice
Command lines are dense with symbols, and this is where dictation needs help. Speak symbols by name and they are transcribed as characters. A few honest tips:
- Use "tab key" to complete paths rather than dictating long folder names character by character. Let the shell do the spelling.
- For flags, dictate the dash and the letter, for example "dash l" for
-l, or spell the long form, "dash dash help" for--help. - Add recurring tool names, repo names, and odd flags to vocabulary boosting so they stop being misheard.
- If your accent or speech pattern trips the engine on symbols, the accent and language picker (British, US, Australian, Indian, New Zealand English and more) plus the free-text "speech notes" field help the model adapt to non-native accents, stutters, or heavy fillers.
Dictation will not make you faster at one short symbol-heavy command than typing it. Where it shines is longer commands, repeated boilerplate, and dictating prose into a tool that lives in the terminal, like an AI coding CLI. For that workflow, see dictating into Claude Code and the broader guide to voice coding on Windows.
Offline dictation for sensitive infrastructure work
If you are working on production infrastructure, secrets, or anything under compliance constraints, sending audio to a cloud provider may be a non-starter. PipeVoice has a fully offline path: Local Whisper for transcription plus Ollama for AI polish. That combination costs nothing, needs no API key, and sends nothing off your machine. Raise the local Whisper model size for more accuracy if your CPU can handle it; the trade is that local transcription is slower than cloud.
How PipeVoice compares for terminal dictation
| Tool | Types into the terminal | Offline option | Price | Open source |
|---|---|---|---|---|
| PipeVoice | Yes, real keystrokes into any app | Yes (Local Whisper + Ollama) | Free | Yes |
| Windows Voice Access / Speech Recognition | Limited app support, often not consoles | On-device | Free (built in) | No |
| Wispr Flow | Mac-first, Windows port, cloud only | No | Paid (subscription) | No |
| Dragon NaturallySpeaking | Yes, but heavy | On-device | Paid (one-time licence) | No |
| Talon Voice | Yes, very powerful | On-device | Free tier, paid beta | No |
PipeVoice's advantage for command-line users is reach: it types into any app, whether that is the terminal, your editor, a browser, or a chat box, rather than only inside one tool. See a fuller breakdown versus Wispr Flow.
Honest limitations
- Windows only. There is no Mac or Linux build.
- Currently unsigned, so expect the SmartScreen "unrecognised app" warning until code signing ships.
- Cloud engines (Deepgram, OpenAI) require your own API key. The local path does not.
- Local Whisper is slower than cloud and wants a decent CPU for larger models.
Get started
PipeVoice is free forever for the core tool, with the tagline "Talk faster than you type." Download the installer, set a terminal profile, and try dictating your next command. To go further, read about per-app dictation profiles and the full list of voice commands, or browse the docs.