LocalParrot is a local, offline voice-to-text app. Everything happens on your machine. LocalParrot never sends your audio anywhere: no cloud, no account, no internet connection required to use it. Turn off your WiFi and try it, it works exactly the same. That's not a limitation, that's the point.
No reviews yetBe the first to leave a review for Local Parrot
Maker
📌
Hey Product Hunt,
I built LocalParrot because I dictate constantly, notes, messages, code comments, and every tool I tried either wanted a monthly subscription or sent my voice to someone else's server to transcribe it. For something as personal as your own voice, that never sat right with me.
So I built the one I wanted: hold a shortcut, speak, release, and the text lands wherever your cursor is. A small waveform shows while it's capturing. The transcription happens entirely on your machine, nothing gets uploaded, there's no account and nothing to configure.
A few things about it:
- Works in any app, whatever has focus: email, Slack, your notes, your editor
- No internet required, you can test that yourself in airplane mode
- Pay one time, no subscription. That's the whole business model, I'm not doing anything with your data because I'm not touching it in the first place
Windows today. I'm working on macOS next (Linux after that), so if you're on Mac and this would be useful to you, tell me, it helps me prioritize.
I use it every day myself. Genuinely curious what everyone else's dictation setup looks like right now and what's annoying about it. Happy to answer anything.
Report
how well does it handle things like technical jargon or proper names since everything runs locally without the cloud models backing it up?
Report
Maker
@nevzaty1ns Honest answer, and I tested exactly this before replying.
Out of the box it nailed: Kubernetes, OAuth, cache invalidation, hotfix, rebase, CI pipeline, async mutex, ONNX, deadlock, tachycardia, ibuprofen, amoxicillin.
What it missed: truly niche terms and unseen proper names. Redis came out "Reddy's", WASAPI came out "Waysap i", and my own surname came out phonetically.
That's not really a local-versus-cloud gap, by the way: speech models, wherever they run, meet brand-new words phonetically for the first time. The standard fix across the industry is a custom vocabulary.
LocalParrot's version of that is a personal dictionary: a plain JSON file on your disk mapping how a term must come out (product names, libraries, colleagues, brand casing). I added 6 entries for the misses above and re-ran the outputs: 6 of 6 fixed, including multi-word terms. Add a word once and it's yours forever, applied instantly and offline, in a file you own and can read.
There's also an optional on-device AI cleanup pass (a small local LLM) for punctuation and filler words.
Report
The "turn off your WiFi and try it" line is such a confident way to frame privacy as the core feature instead of a footnote. Also love that there is no signup wall standing between me and actually using the thing.
Report
Maker
@talha03nb Thank you, that means a lot. That line really is the whole philosophy in one sentence: we wanted privacy to be a property of the architecture rather than a promise. There is no server, no account system, no telemetry, so "your voice never leaves" isn't something we have to uphold. It's simply how the thing is built.
The no-signup part follows from the same fact: with no backend, there is nothing to sign up to. Your settings are a file, your personal dictionary is a file, your audio never leaves RAM.
Report
how does it handle different accents and background noise, since it's all on-device?
Report
Maker
@betlf4xj Fair question, so instead of hand-waving I benchmarked both before answering.
Accents: I ran real recordings from the GMU Speech Accent Archive (same English paragraph, speakers with different native languages) through the exact model that ships. Word error rates:
US native 0%,
German 2.9%,
Hindi 4.3%,
Russian 5.8%,
Spanish and Arabic 7.2%,
Mandarin 11.6%.
The one bad case was a very halting, heavily accented speaker at ~30%, mostly from one dropped sentence. Interesting detail: on accented speech, most "errors" were the model faithfully writing what was actually pronounced.
Tip: if you have a strong accent, pinning your language in Settings instead of auto-detect adds stability.
Background noise: same philosophy. I mixed noise into a dictation at decreasing signal-to-noise ratios: at 20 dB and even 10 dB SNR (a genuinely noisy room) the transcript stayed character-for-character identical to the clean take; it only started dropping words at 5 dB, which is noise at more than half the volume of your voice. Day to day, push-to-talk means the mic is only open while you hold the key, and a neural VAD trims non-speech before transcription.
how well does it handle things like technical jargon or proper names since everything runs locally without the cloud models backing it up?
@nevzaty1ns Honest answer, and I tested exactly this before replying.
Out of the box it nailed: Kubernetes, OAuth, cache invalidation, hotfix, rebase, CI pipeline, async mutex, ONNX, deadlock, tachycardia, ibuprofen, amoxicillin.
What it missed: truly niche terms and unseen proper names. Redis came out "Reddy's", WASAPI came out "Waysap i", and my own surname came out phonetically.
That's not really a local-versus-cloud gap, by the way: speech models, wherever they run, meet brand-new words phonetically for the first time. The standard fix across the industry is a custom vocabulary.
LocalParrot's version of that is a personal dictionary: a plain JSON file on your disk mapping how a term must come out (product names, libraries, colleagues, brand casing). I added 6 entries for the misses above and re-ran the outputs: 6 of 6 fixed, including multi-word terms. Add a word once and it's yours forever, applied instantly and offline, in a file you own and can read.
There's also an optional on-device AI cleanup pass (a small local LLM) for punctuation and filler words.
The "turn off your WiFi and try it" line is such a confident way to frame privacy as the core feature instead of a footnote. Also love that there is no signup wall standing between me and actually using the thing.
@talha03nb Thank you, that means a lot. That line really is the whole philosophy in one sentence: we wanted privacy to be a property of the architecture rather than a promise. There is no server, no account system, no telemetry, so "your voice never leaves" isn't something we have to uphold. It's simply how the thing is built.
The no-signup part follows from the same fact: with no backend, there is nothing to sign up to. Your settings are a file, your personal dictionary is a file, your audio never leaves RAM.
how does it handle different accents and background noise, since it's all on-device?
@betlf4xj Fair question, so instead of hand-waving I benchmarked both before answering.
Accents: I ran real recordings from the GMU Speech Accent Archive (same English paragraph, speakers with different native languages) through the exact model that ships. Word error rates:
US native 0%,
German 2.9%,
Hindi 4.3%,
Russian 5.8%,
Spanish and Arabic 7.2%,
Mandarin 11.6%.
The one bad case was a very halting, heavily accented speaker at ~30%, mostly from one dropped sentence. Interesting detail: on accented speech, most "errors" were the model faithfully writing what was actually pronounced.
Tip: if you have a strong accent, pinning your language in Settings instead of auto-detect adds stability.
Background noise: same philosophy. I mixed noise into a dictation at decreasing signal-to-noise ratios: at 20 dB and even 10 dB SNR (a genuinely noisy room) the transcript stayed character-for-character identical to the clean take; it only started dropping words at 5 dB, which is noise at more than half the volume of your voice. Day to day, push-to-talk means the mic is only open while you hold the key, and a neural VAD trims non-speech before transcription.