I built something similar for Linux (yapyap — push-to-talk with whisper.cpp). The "local is too slow" argument doesn't hold up anymore if you have any GPU at all. whisper large-v3-turbo with CUDA on an RTX card transcribes a full paragraph in under a second. Even on CPU, parakeet is near-instant for short utterances.The "deep context" feature is clever, but screenshotting and sending to a cloud LLM feels like massive overkill for fixing name spelling. The accessibility API approach someone mentioned upthread is the right call — grab the focused field's content, nearby labels, window title. That's a tiny text prompt a 3B local model handles in milliseconds. No screenshots, no cloud, no latency.The real question with Groq-dependent tools: what happens when the free tier goes away? We've seen this movie before. Building on local models is slower today but doesn't have a rug-pull failure mode.
Big fan of handy and it’s cross platform as well. Parakeet V3 gives the best experience with very fast and accurate-enough transcriptions when talking to AIs that can read between the lines. It does have stuttering issues though. My primary use of these is when talking to coding agents.
But a few weeks ago someone on HN pointed me to Hex, which also supports Parakeet-V3 , and incredibly enough, is even faster than Handy because it’s a native MacOS-only app that leverages CoreML/Neural Engine for extremely quick transcriptions. Long ramblings transcribed in under a second!
I just learned about Handy in this thread and it looks great!
I think the biggest difference between FreeFlow and Handy is that FreeFlow implements what Monologue calls "deep context", where it post-processes the raw transcription with context from your currently open window.
This fixes misspelled names if you're replying to an email / makes sure technical terms are spelled right / etc.
The original hope for FreeFlow was for it to use all local models like Handy does, but with the post-processing step the pipeline took 5-10 seconds instead of <1 second with Groq.
There's an open PR in the repo which will be merged which adds this support. Post processing is an optional feature if you want to use it, and when using it, end to end latency can still be under 3 seconds easily
That’s awesome! The specific thing that was causing the long latency was the image LLM call to describe the current context. I’m not sure if you’ve tested Handy’s post-processing with images or if there’s a technique to get image calls to be faster locally.
Thank you for making Handy! It looks amazing and I wish I found it before making FreeFlow.
Could you go into a little more detail about the deep context - what does it grab, and which model is used to process it? Are you also using a groq model for the transcription?
It takes a screenshot of the current window and sends it to Llama in Groq asking it to describe what you’re doing and pull out any key info like names with spelling.
You can go to Settings > Run Logs in FreeFlow to see the full pipeline ran on each request with the exact prompt and LLM response to see exactly what is sent / returned.
As a very happy Handy user, it doesn't do that indeed. It will be interesting to see if it works better, I'll give FreeFlow a shot, thanks!
Thanks for the recommendation! I picked the smallest model (Moonshine Base @ 58MB), and it works great for transcribing English.
Surprisingly, it produced a better output (at least I liked its version) than the recommended but heavy model (Parakeet V3 @ 478 MB).
Handy is nothing short of fantastic, really brilliant when combined with Parakeet v2!
Handy rocks. I recently had minor surgery on my shoulder that required me to be in a sling for about a month, and I thought I'd give Handy a try for dictating notes and so on. It works phenomenally well for most text-to-speech use cases - homonyms included.
Handy is genuinely great and it supports Parakeet V3. It’s starting to change how I "type" on my computer.
Yes, I also use Handy. It supports local transcription via Nvidia Parakeet TDT2, which is extremely fast and accurate. I also use gemini 2.5 flash lite for post-processing via the free AI studio API (post-processing is optional and can also use a locally-hosted LM).
I use handy as well, and love it.
The latency bottleneck with local post-processing is interesting. Sending a screenshot to a vision LLM is expensive, but you don't actually need full image understanding for most context-aware corrections.
A lighter approach: use the accessibility API (NSAccessibility on macOS) to grab the focused app's text content — window title, selected text, nearby field labels, recipient names in mail composers. That gives you ~90% of the useful context as a small text prompt that a 1-3B parameter local model (like Qwen2.5-1.5B or Phi-3-mini) can process in under 500ms on Apple Silicon's Neural Engine.
The screenshot path is only really needed for non-standard UIs where text isn't programmatically accessible. Splitting the pipeline into a fast text-context path (common case) and a fallback vision path would get you sub-2s end-to-end locally, while still handling edge cases gracefully.
This is essentially the same pattern used in assistive technology — screen readers have solved the "what's on screen" problem without vision models for decades.
There's also an offline-running software called VoiceInk for macos. No need for groq or external AI.
I found a Linux version with a similar workflow and forked it to build the Mac version. It look less than 15 mins to ask Claude to modify it as per my needs.
I just vibe coded a my own NaturalReader replacement. The subscription was $110/year... and I just canceled it.
Chatterbox TTS (from Resemble AI) does the voice generation, WhisperX gives word-level timestamps so you can click any word to jump, and FastAPI ties it all together with SSE streaming so audio starts playing before the whole thing is done generating.
There's a ~5s buffer up front while the first chunk generates, but after that each chunk streams in faster than realtime. So playback rarely stalls.
It took about 4 hours today... wild.
Sounds like there's plenty of interest in those kind of tools. I'm not a huge fun API transcriptions given great local models.
I build https://github.com/bwarzecha/Axii to keep EVERYTHING locally and be fully open source - can be easily used at any company. No data send anywhere.
[deleted]
Since many are asking about apps with simillar capabilities I’m very happy with MacWhisper. Has Parakeet, near instant transcription of my lengthy monologues. All local.
Edit: Ah but Parakeet I think isn’t available for free. But very worthwhile single purchase app nonetheless!
I actually got MacWhisper originally for speech to text so I could talk to my machine like a crazy person. I realized I didn't like doing that but the actual killer feature for buying it that I really enjoy is the fully local transcription of meetings, with a nice little button to start recording that pops up when you launch zoom, teams, etc. It means I can safely record meetings and encrypt them locally and keep internal notes without handing off all of that to some nebulous cloud platform.
I had previously used Hyprnote to record meetings in this way - and indeed I still use that as a backup, it's a great free option - but the meeting prompting to record and better transcription offered by Macwhisper is a much better experience.
For those using something like this daily, what key combinations do you use to record and cancel. I’m using my capslock right now but was curious about others
Someone told me the other day I should use a foot pedal, and then I remembered I already had an Elgato one under my desk connected with my Stream Deck. I got it very cheap used on eBay. So, that's an option too.
Great question. I'd love to know if anyone has had any success with handheld buttons/bluetooth remotes or similar, too.
I have a Stream Deck and made a dedicated button for this. So I tap the button speak and then tap it again and it pastes into wherever my cursor was at.
And then I set the button right below that as the enter key so it feels mostly handsoff the keyboard.
Scroll Lock is really good key for that in my opinion. If your keyboard does not have it exposed then you can use some remapping program like https://github.com/jtroo/kanata
Can you please teach me how to use the CAPS LOCK key as a push-to-talk?
Right option. Push to talk
I also use the right option key on Mac, never miss it.
i've used macwhisper (paid), superwhisper (paid), and handy (free) but now prefer hex (free):
for me it strikes the balance of good, fast, and cheap for everyday transcription. macwhisper is overkill, superwhisper too clever, and handy too buggy. hex fits just right for me (so far)
Tried to use it, installed, enabled permissions, downloaded the parakeet model for English and then it crashed every time I released the button after dictating. Completely unusable.
This thread is a beautiful intro into our near future. Yet more and more custom coded software. Takes me back to the days of late 90s. Loving this!
I created Voibe which takes a slightly different direction and uses gpt-4o-transcribe with a configurable custom prompt to achieve maximum accuracy (much better than Whisper). Requires your own OpenAI API key.
My take for X11 Linux systems. Small and low dependency except for the model download.
Why do people find the need to market as "free alternative to xyz" when its a basic utility? I take it as an instant signal that the dev is a copycat and mostly interested in getting stars and eyeballs rather than making a genuinely useful high quality product.
Really good to know Handy exists; it's the first I'm hearing about it. I use a speech-to-text app that I built for myself, and I know at least one co-worker pays $10 a month for (I think) Wispr. I think it's possible there was no intention to market, and the creator simply didn't know about Handy, just like me.
MacOS only. May this help you skip a click.
Whispering [0] is Windows compatible and has gotten a lot better on Windows despite being extremely rough around the edges at first.
Also look into voxtral, their new model is good and half the price if you can live without streaming.
Do any of these works as an iOS keyboard to replace the awful voice transcription Apple is currently shipping?
utter (utter.to) does.
Is it possible to customise the key binding? Most of these services let you customise the binding, and also support toggle for push-to-talk mode.
Does anyone know of an effective alternative for Android?
I have been using VoiceFlow. It works incredibly well and uses Groq to transcribe using the Whisper V3 Turbo model. You can also use it in an offline scenario with an on-device model, but I am mostly connected to the internet whenever I am transcribing.
Check out the FUTO keyboard or FUTO voice input apps. It only uses the whisper models though so far.
Does the Android keyboard transcription not work for your needs?
Could you make it use Parakeet? That's an offline model that runs very quickly even without a GPU, so you could get much lower latency than using an API.
I love this idea, and originally planned to build it using local models, but to have post-processing (that's where you get correctly spelled names when replying to emails / etc), you need to have a local LLM too.
If you do that, the total pipeline takes too long for the UX to be good (5-10 seconds per transcription instead of <1s). I also had concerns around battery life.
Seeing this thread, sounds a blog post comparing the offerings would be useful
Good idea at first glance, but it would get outdated in hours.
Is there a tool that preserves the audio? I want both, the transcript and the audio.
Quick glance; FreeFlow already saves WAV recordings for every transcript to ~/Lib../App../FreeFlow/audio/ with UUIDs linking them to pipeline history entries in CoreData. Audio files are automatically deleted though, when their associated history entries are deleted. Shall be a quick fix. Recently did the same for hyprvoice, for debugging and auditing.
title lacks: for Mac
[deleted]
Anything similar for iOS?
[deleted][deleted]
Utter uses your OpenAI key (~$1/month). https://utter.to/. Has an iPhone app.
Saved you a click: Mac only and actually Grok; local inference too slow.
I built something similar for Linux (yapyap — push-to-talk with whisper.cpp). The "local is too slow" argument doesn't hold up anymore if you have any GPU at all. whisper large-v3-turbo with CUDA on an RTX card transcribes a full paragraph in under a second. Even on CPU, parakeet is near-instant for short utterances.The "deep context" feature is clever, but screenshotting and sending to a cloud LLM feels like massive overkill for fixing name spelling. The accessibility API approach someone mentioned upthread is the right call — grab the focused field's content, nearby labels, window title. That's a tiny text prompt a 3B local model handles in milliseconds. No screenshots, no cloud, no latency.The real question with Groq-dependent tools: what happens when the free tier goes away? We've seen this movie before. Building on local models is slower today but doesn't have a rug-pull failure mode.
Was searching for this this morning and settled on https://handy.computer/
Big fan of handy and it’s cross platform as well. Parakeet V3 gives the best experience with very fast and accurate-enough transcriptions when talking to AIs that can read between the lines. It does have stuttering issues though. My primary use of these is when talking to coding agents.
But a few weeks ago someone on HN pointed me to Hex, which also supports Parakeet-V3 , and incredibly enough, is even faster than Handy because it’s a native MacOS-only app that leverages CoreML/Neural Engine for extremely quick transcriptions. Long ramblings transcribed in under a second!
It’s now my favorite fully local STT for MacOS:
https://github.com/kitlangton/Hex
I just learned about Handy in this thread and it looks great!
I think the biggest difference between FreeFlow and Handy is that FreeFlow implements what Monologue calls "deep context", where it post-processes the raw transcription with context from your currently open window.
This fixes misspelled names if you're replying to an email / makes sure technical terms are spelled right / etc.
The original hope for FreeFlow was for it to use all local models like Handy does, but with the post-processing step the pipeline took 5-10 seconds instead of <1 second with Groq.
There's an open PR in the repo which will be merged which adds this support. Post processing is an optional feature if you want to use it, and when using it, end to end latency can still be under 3 seconds easily
That’s awesome! The specific thing that was causing the long latency was the image LLM call to describe the current context. I’m not sure if you’ve tested Handy’s post-processing with images or if there’s a technique to get image calls to be faster locally.
Thank you for making Handy! It looks amazing and I wish I found it before making FreeFlow.
Could you go into a little more detail about the deep context - what does it grab, and which model is used to process it? Are you also using a groq model for the transcription?
It takes a screenshot of the current window and sends it to Llama in Groq asking it to describe what you’re doing and pull out any key info like names with spelling.
You can go to Settings > Run Logs in FreeFlow to see the full pipeline ran on each request with the exact prompt and LLM response to see exactly what is sent / returned.
As a very happy Handy user, it doesn't do that indeed. It will be interesting to see if it works better, I'll give FreeFlow a shot, thanks!
Thanks for the recommendation! I picked the smallest model (Moonshine Base @ 58MB), and it works great for transcribing English.
Surprisingly, it produced a better output (at least I liked its version) than the recommended but heavy model (Parakeet V3 @ 478 MB).
Handy is nothing short of fantastic, really brilliant when combined with Parakeet v2!
Handy rocks. I recently had minor surgery on my shoulder that required me to be in a sling for about a month, and I thought I'd give Handy a try for dictating notes and so on. It works phenomenally well for most text-to-speech use cases - homonyms included.
Handy is genuinely great and it supports Parakeet V3. It’s starting to change how I "type" on my computer.
Yes, I also use Handy. It supports local transcription via Nvidia Parakeet TDT2, which is extremely fast and accurate. I also use gemini 2.5 flash lite for post-processing via the free AI studio API (post-processing is optional and can also use a locally-hosted LM).
I use handy as well, and love it.
The latency bottleneck with local post-processing is interesting. Sending a screenshot to a vision LLM is expensive, but you don't actually need full image understanding for most context-aware corrections.
A lighter approach: use the accessibility API (NSAccessibility on macOS) to grab the focused app's text content — window title, selected text, nearby field labels, recipient names in mail composers. That gives you ~90% of the useful context as a small text prompt that a 1-3B parameter local model (like Qwen2.5-1.5B or Phi-3-mini) can process in under 500ms on Apple Silicon's Neural Engine.
The screenshot path is only really needed for non-standard UIs where text isn't programmatically accessible. Splitting the pipeline into a fast text-context path (common case) and a fallback vision path would get you sub-2s end-to-end locally, while still handling edge cases gracefully.
This is essentially the same pattern used in assistive technology — screen readers have solved the "what's on screen" problem without vision models for decades.
There's also an offline-running software called VoiceInk for macos. No need for groq or external AI.
https://github.com/Beingpax/VoiceInk
+1, my experience improved quite a bit when I switched to the parakeet model, they should definitely use that as the default.
My favorite too. I use the parakeet model
To build your own STT (speech-to-text) with a local model and and modify it, just ask Claude code to build it for you with this workflow.
F12 -> sox for recording -> temp.wav -> faster-whisper -> pbcopy -> notify-send to know what’s happening
https://github.com/sathish316/soupawhisper
I found a Linux version with a similar workflow and forked it to build the Mac version. It look less than 15 mins to ask Claude to modify it as per my needs.
F12 Press → arecord (ALSA) → temp.wav → faster-whisper → xclip + xdotool
https://github.com/ksred/soupawhisper
Thanks to faster-whisper and local models using quantization, I use it in all places where I was previously using Superwhisper in Docs, Terminal etc.
For macos i found https://github.com/rselbach/jabber and was lately use that, but the iOS where I still need replacement.
I just vibe coded a my own NaturalReader replacement. The subscription was $110/year... and I just canceled it.
Chatterbox TTS (from Resemble AI) does the voice generation, WhisperX gives word-level timestamps so you can click any word to jump, and FastAPI ties it all together with SSE streaming so audio starts playing before the whole thing is done generating.
There's a ~5s buffer up front while the first chunk generates, but after that each chunk streams in faster than realtime. So playback rarely stalls.
It took about 4 hours today... wild.
Sounds like there's plenty of interest in those kind of tools. I'm not a huge fun API transcriptions given great local models.
I build https://github.com/bwarzecha/Axii to keep EVERYTHING locally and be fully open source - can be easily used at any company. No data send anywhere.
Since many are asking about apps with simillar capabilities I’m very happy with MacWhisper. Has Parakeet, near instant transcription of my lengthy monologues. All local.
Edit: Ah but Parakeet I think isn’t available for free. But very worthwhile single purchase app nonetheless!
I actually got MacWhisper originally for speech to text so I could talk to my machine like a crazy person. I realized I didn't like doing that but the actual killer feature for buying it that I really enjoy is the fully local transcription of meetings, with a nice little button to start recording that pops up when you launch zoom, teams, etc. It means I can safely record meetings and encrypt them locally and keep internal notes without handing off all of that to some nebulous cloud platform.
I had previously used Hyprnote to record meetings in this way - and indeed I still use that as a backup, it's a great free option - but the meeting prompting to record and better transcription offered by Macwhisper is a much better experience.
For those using something like this daily, what key combinations do you use to record and cancel. I’m using my capslock right now but was curious about others
Someone told me the other day I should use a foot pedal, and then I remembered I already had an Elgato one under my desk connected with my Stream Deck. I got it very cheap used on eBay. So, that's an option too.
Great question. I'd love to know if anyone has had any success with handheld buttons/bluetooth remotes or similar, too.
I have a Stream Deck and made a dedicated button for this. So I tap the button speak and then tap it again and it pastes into wherever my cursor was at.
And then I set the button right below that as the enter key so it feels mostly handsoff the keyboard.
Scroll Lock is really good key for that in my opinion. If your keyboard does not have it exposed then you can use some remapping program like https://github.com/jtroo/kanata
Can you please teach me how to use the CAPS LOCK key as a push-to-talk?
Right option. Push to talk
I also use the right option key on Mac, never miss it.
i've used macwhisper (paid), superwhisper (paid), and handy (free) but now prefer hex (free):
https://github.com/kitlangton/Hex
for me it strikes the balance of good, fast, and cheap for everyday transcription. macwhisper is overkill, superwhisper too clever, and handy too buggy. hex fits just right for me (so far)
Tried to use it, installed, enabled permissions, downloaded the parakeet model for English and then it crashed every time I released the button after dictating. Completely unusable.
This thread is a beautiful intro into our near future. Yet more and more custom coded software. Takes me back to the days of late 90s. Loving this!
I created Voibe which takes a slightly different direction and uses gpt-4o-transcribe with a configurable custom prompt to achieve maximum accuracy (much better than Whisper). Requires your own OpenAI API key.
https://github.com/corlinp/voibe
I do see the name has since been taken by a paid service... shame.
https://github.com/rabfulton/Auriscribe
My take for X11 Linux systems. Small and low dependency except for the model download.
Why do people find the need to market as "free alternative to xyz" when its a basic utility? I take it as an instant signal that the dev is a copycat and mostly interested in getting stars and eyeballs rather than making a genuinely useful high quality product.
Just use handy: https://github.com/cjpais/Handy
Really good to know Handy exists; it's the first I'm hearing about it. I use a speech-to-text app that I built for myself, and I know at least one co-worker pays $10 a month for (I think) Wispr. I think it's possible there was no intention to market, and the creator simply didn't know about Handy, just like me.
MacOS only. May this help you skip a click.
Whispering [0] is Windows compatible and has gotten a lot better on Windows despite being extremely rough around the edges at first.
[0] https://github.com/EpicenterHQ/epicenter
Not sure why you got downvoted. I wish this was a tag or something.
Nice! I vibe coded the same this weekend but for OpenAI however less polished https://github.com/sonu27/voicebardictate
Also look into voxtral, their new model is good and half the price if you can live without streaming.
Do any of these works as an iOS keyboard to replace the awful voice transcription Apple is currently shipping?
utter (utter.to) does.
Is it possible to customise the key binding? Most of these services let you customise the binding, and also support toggle for push-to-talk mode.
Does anyone know of an effective alternative for Android?
I have been using VoiceFlow. It works incredibly well and uses Groq to transcribe using the Whisper V3 Turbo model. You can also use it in an offline scenario with an on-device model, but I am mostly connected to the internet whenever I am transcribing.
Check out the FUTO keyboard or FUTO voice input apps. It only uses the whisper models though so far.
Does the Android keyboard transcription not work for your needs?
Could you make it use Parakeet? That's an offline model that runs very quickly even without a GPU, so you could get much lower latency than using an API.
I love this idea, and originally planned to build it using local models, but to have post-processing (that's where you get correctly spelled names when replying to emails / etc), you need to have a local LLM too.
If you do that, the total pipeline takes too long for the UX to be good (5-10 seconds per transcription instead of <1s). I also had concerns around battery life.
Some day!
https://github.com/cjpais/Handy
It’s free and offline
Wow, Handy looks really great and super polished. Demo at https://handy.computer/
Seeing this thread, sounds a blog post comparing the offerings would be useful
Good idea at first glance, but it would get outdated in hours.
Is there a tool that preserves the audio? I want both, the transcript and the audio.
Quick glance; FreeFlow already saves WAV recordings for every transcript to ~/Lib../App../FreeFlow/audio/ with UUIDs linking them to pipeline history entries in CoreData. Audio files are automatically deleted though, when their associated history entries are deleted. Shall be a quick fix. Recently did the same for hyprvoice, for debugging and auditing.
title lacks: for Mac
Anything similar for iOS?
Utter uses your OpenAI key (~$1/month). https://utter.to/. Has an iPhone app.
Saved you a click: Mac only and actually Grok; local inference too slow.
Won't be free when xAI starts charging.
Spokenly?