Voice dictation that runs on your own machine. Press a key, speak, and your words land in whatever app you were typing in. No subscription, and no audio leaves your computer unless you deliberately switch on the cloud engine.
Covers HushQuill 0.1.19 on Windows and macOS.
1. The two keys you need
| Key | What it does |
|---|---|
Ctrl + Shift + M | Show or hide the voice bar |
Ctrl + M | Start or stop dictating |
Literal Ctrl on both Windows and macOS, not Cmd on Mac. Cmd + M is macOS Minimise, so it was deliberately avoided.
Both are rebindable: Settings → Hotkeys → Change, then press the combination you want. Rebinds take effect immediately, no restart.
If the capture field sits on "press keys…" and never registers, another app already owns that combination system-wide. Pick a different one.
Pressing the dictation key while the bar is hidden shows the bar and starts listening, so one keypress gets you dictating from cold.
2. The voice bar
A small dark bar that floats above your other windows, with your words along the top and a thin orange audio line at the bottom that reacts to your voice.
- Drag it anywhere. It remembers where you put it.
- Mic button starts and stops dictation, same as
Ctrl+M. ⏎button types your last dictation into whatever you click next. See section 10.×hides the bar.
The bar never takes focus when you click it, so your cursor stays where it was and your text still goes to the right app.
3. Dictation modes
Settings → Dictation mode. One selector, three behaviours.
Toggle (default). Tap to start, tap again to stop. Also stops on its own after a couple of seconds of silence. Best for normal use.
Continuous. Tap to start and it keeps listening. Each time you pause, that segment gets typed and it carries on. Tap to stop. Best for long dictation where you want text appearing as you go.
Push to talk. Hold the key while you speak, release to type. Best for short bursts and noisy rooms.
One thing to know: AI formatting only applies when a dictation finishes completely. In continuous mode each pause-segment is typed unformatted, because styling half a thought produces a greeting and a sign-off on every fragment.
4. Speech engines
Settings → Engine. Leave it on Auto unless you have a reason not to.
Auto (default) picks for you, based on your language and your computer:
- English on a capable machine goes to Parakeet, which is very fast.
- English on an older or slower machine goes to a lighter Whisper model, which is quicker there than Parakeet.
- Languages Parakeet cannot handle, such as Urdu and Hindi, go to Groq if you have added a key, otherwise to the multilingual Whisper model.
Parakeet is the fast local English engine. Roughly 50-100x faster than real time on a normal Windows CPU. Downloads about 650MB the first time. On older Intel Macs it is actually the slowest option, which is why Auto avoids it there.
Whisper is the local multilingual engine, about 74-142MB depending on model. Handles Urdu, Hindi and the rest. Uses the GPU on Apple Silicon.
Groq is cloud. Fast and accurate, and the best option for Urdu quality specifically, but your audio goes to Groq's servers. Needs a free API key: Settings shows the three steps to get one. The key is saved and never asked for again.
Fast model (tiny), Whisper only, swaps the base model for a smaller one. Noticeably quicker, slightly less accurate. English only, because the tiny multilingual model produced garbled output.
Engine choice is per machine, so your laptop and desktop can each use what suits them.
5. Languages
Settings → Language, above Engine, because your language drives the automatic engine choice. Around 99 languages, with auto-detect at the top.
Realistic expectation for Urdu: the local Whisper base model is mediocre at it. Groq is the quality option if Urdu matters to you.
6. AI formatting
Off by default. Settings → AI formatting to turn it on.
Rewrites your dictation to suit the app you are typing into. The same spoken sentence becomes a proper email in Outlook, a short message in WhatsApp, and terse technical wording in VS Code.
Providers:
- Ollama (default) runs the model on your own machine, so your words never leave it. Needs Ollama installed and a model pulled:
ollama pull llama3.2:3b. Settings tells you whether it can see Ollama. - Groq is cloud. Faster, but your text goes to Groq.
App styles. HushQuill ships with sensible mappings you can edit in Settings:
| Style | Matches |
|---|---|
| outlook, olk, thunderbird, gmail | |
| chat | whatsapp, slack, telegram, teams, discord |
| document | winword, notion, obsidian |
| code | code, devenv |
| ticket | jira |
Matching is a case-insensitive substring of either the app's process name or its window title. The title match is what catches webmail in a browser tab, so Gmail in Chrome gets the email style.
Apps you have not mapped are left completely alone. No model call, no added delay. So normal dictation stays exactly as fast as it was before you turned formatting on, and only the apps you care about get the extra second or two.
It can never lose your words. If Ollama is not running, the model misbehaves, or anything else fails, you get your unformatted dictation instead. Formatting is allowed to be skipped, never to block.
7. Spoken instructions
With AI formatting on, you can finish a dictation with an instruction. HushQuill applies it and strips it from your text.
Say any of:
- "… make it formal" / "make that formal" / "make this formal"
- "… turn it into bullet points" / "turn that into" / "turn this into"
- "… format it as an email" / "format that as" / "format this as"
So "the budget is approved and we ship Friday. Make that formal." gives you a formal two-line note, with the instruction gone.
Rules that keep this from misfiring:
- It must be the end of what you said. "We need to make it easier for the team" mid-sentence is treated as your actual words, not an instruction.
- It must be short. A long trailing clause is content, not an instruction.
- An instruction on its own, with nothing before it, does nothing. There is no text to act on.
- Capitalisation does not matter.
This works in every language HushQuill transcribes, including Urdu, Arabic and Persian, whose clauses end with their own comma and full stop rather than the ASCII ones.
8. Cleanup, dictionary and snippets
Cleanup is on by default and needs no configuration. It removes filler words (um, uh, erm, hmm), fixes spacing around punctuation, and capitalises sentences. Conservative by design: it never drops real words, and "um" never touches "umbrella".
It also strips a specific Whisper quirk. Whisper models were trained on captioned video, so over near-silence they sometimes invent a sign-off like "Thank you." or "Thanks for watching." Those get removed when they are the whole dictation or a trailing sentence of their own, but never mid-sentence, so a genuine "thank you for the update" survives.
Dictionary fixes words the engine keeps getting wrong. One spoken = replacement pair per line. Whole-word and case-insensitive.
Snippets expand a trigger phrase into something longer. One trigger = expansion per line, and \n gives you a line break.
sign off = Best,\nAlex
my email = alex@example.com
Both save buttons tell you what actually happened. "Saved 2 ✓" means two pairs stored. If a line is missing its = you get "Use: trigger = expansion" rather than a false success.
9. Voice commands
Spoken while dictating:
| Say | Result |
|---|---|
| "new line" / "next line" / "newline" | line break |
| "new paragraph" / "next paragraph" | blank line |
| "scratch that" / "delete that" | discards everything up to that point |
Deliberately not supported: saying "period", "comma", "colon" and so on to insert punctuation. Those are ordinary English words, and mapping them corrupted normal dictation. The engines already punctuate from your speech rhythm.
10. When text does not land
Dictated text is never lost, even when nothing was ready to receive it.
Every finished dictation is remembered. If HushQuill can tell your focus is on the desktop or the taskbar rather than a text box, it does not try to type. Instead your text is put on the clipboard and the bar says "not typed — click your text box, tap ⏎".
So: click where you meant to type, then tap ⏎ on the bar. Your text goes in.
That button also works as repeat-last, any time you want the previous dictation again somewhere else.
Windows will not let any app type into a window running as administrator. That is an OS rule and cannot be worked around. Use the clipboard.
11. Microphone
Settings → Microphone. Pick a specific input or leave it on the system default.
Plugging in a USB microphone while Settings is open works: the list refreshes when you open the dropdown, and in the background. If a saved microphone is unplugged, HushQuill falls back to the system default rather than failing.
12. Auto-stop on silence
Settings → Pause, default 2 seconds. How long a silence ends a dictation in toggle mode, and what counts as a segment break in continuous mode.
Set it to 0 to switch auto-stop off entirely and always stop by hand. Not used in push-to-talk, where the key you are holding decides.
13. Start at login
Settings → Start at login. Off by default. HushQuill starts minimised to the tray, so the hotkeys work from boot without a window appearing.
14. Updates
HushQuill checks for updates when it starts, and Settings → Check for updates does it on demand.
When one is available you get the version, the release notes, and Update and restart. It downloads with a progress bar, installs, and relaunches. No reinstalling by hand.
The What's new panel shows what changed in the version you are running.
This guide is the Guide link at the top of Settings. It opens in its own window, so you can keep it open while you change settings. It ships inside the app, so it works with no internet and always matches the version you have installed.
Windows note: an in-app update installs to your user folder rather than Program Files, because a silent installer cannot ask for administrator rights. Harmless, but it means you may end up with a copy in each place if you originally installed machine-wide.
15. Permissions
Windows. Nothing to grant. SmartScreen will warn on first install because the app is not yet certificate-signed: More info → Run anyway.
macOS. Two grants, both required, in System Settings → Privacy & Security:
- Microphone: otherwise no audio at all.
- Accessibility: otherwise HushQuill cannot type into other apps. This is the one that silently breaks things when missed.
Settings shows a permissions card with the current state and a button through to the right pane.
macOS also warns that the developer is unidentified, since the app is not yet notarised. See TESTERS.md for the way round it.
16. Privacy
Default setup: your voice never leaves your machine. Recording, transcription, cleanup and formatting all run locally.
Two things send data out, both off unless you turn them on:
- Groq speech engine: your audio goes to Groq.
- Groq formatting provider: your transcribed text goes to Groq.
Your Groq key lives in your own settings file and is never bundled or synced. Dictated text is not shown in HushQuill's own window: it goes to the bar and to the app you are typing into, nowhere else.
17. Troubleshooting
Hotkeys do nothing. Another app owns the combination, or a second copy of HushQuill is running and holding it. Only one instance can register a global hotkey. Quit the extra copy, or rebind.
Text goes into the wrong place, or into the bar itself. Fixed in 0.1.12. If you are older than that, update.
Nothing is typed and the bar says "not typed". Working as designed, see section 10. Click a text box and tap ⏎.
macOS: dictation works but nothing gets typed. Accessibility permission. It also needs re-granting once after an update that changes the app's signature.
Transcription is slow. Check Engine. On an older Intel Mac, Parakeet is the slow option. Auto avoids it, but a manual choice overrides that. For Whisper, try Fast model (tiny).
Urdu output is poor. Expected from the local base model. Use Groq.
AI formatting does nothing. Three things to check, in order: it is off by default, so confirm it is on; the app you are typing into may not be mapped to a style, in which case it is skipped deliberately; and Ollama must be running with the model pulled, which the Settings status row will tell you.
First dictation after install takes ages. It is downloading the model, 74MB to 650MB depending on engine. Progress shows in Settings. Once only.
Questions, or something behaving differently to this guide: it is a bug, say so.
Ready to try it
Free forever, unlimited dictation, no account. Windows and macOS.
Download HushQuill