Show HN: Yap – OSS on-device voice dictation for macOS with no model to download
Posted by pancomplex 21 hours ago
Hey HN! I wanted to share this OSS project I've been working on.
It's called Yap and its a small menu-bar app for macOS that does voice to text for any input. You'll set a hotkey, press it, talk, press it again, and the text gets pasted into whatever field you were in. Everything runs locally and never leaves your computer. Fully OSS and MIT licensed.
With macOS 26, Apple recently added two new APIs, SpeechAnalyzer and SpeechTranscriber, that do streaming on-device speech to text using models the OS ships and manages. So the app ships no model of its own and loads nothing before the first word. A recent benchmark put Apple's model slightly ahead of Whisper Small on accuracy and about 3x faster (see: https://news.ycombinator.com/item?id=48894752). On Mac, there's really no need anymore to download models or pay for expensive APIs.
A lot of existing dictation tools do one of a few things I wanted to avoid with this OSS project. They either:
- cost money (for something that's literally built into the OS)
- bundle memory-intensive models (e.g. Whisper or Parakeet)
- webapps wrapped in Electron
- Intel macs straight up don't work
- closed source
- use third-party APIs that will have access to all your transcripts
It's around 3,000 lines of native Swift in a 4 MB app and idles near 60 MB of memory. Audio comes off AVAudioEngine into SpeechAnalyzer with volatile results turned on for the live preview, history is stored in SwiftData. There's no network code in it at all.
Repo and a demo available here: https://github.com/FrigadeHQ/yap
Happy to answer questions and would love to hear any feature requests!
Comments
Comment by jwr 7 hours ago
I mostly use the MacWhisper app until now, but I got frustrated by its slow development and lack of focus and dictation. So I tried the free TypeWhisper app. It works very well, but then I tested multiple models and my conclusion was that one cannot beat the Whisper Large v3 model for accuracy. I tried Qwen ASR (very good, but only for English), Voxtral (spoke Polish to it and it wrote Russian, BIG oopsie), Parakeet TDT 3 (very fast, but sometimes inaccurate).
I got frustrated by the speed of the Whisper Large model. So I spent an hour with AI benchmarking, testing and developing a new plugin. Turns out that on a modern Mac with a good GPU you can run the Whisper Large model at roughly the same speed as the tiny Parakeet model. 2-3x faster than what other apps ship. It's just that nobody bothered.
So, I am now happily dictating into TypeWhisper and then feeding the dictated text into a local gemma-4-26b-a4b-qat LLM for corrections. Everything happens instantly.
Comment by heresalexandria 12 hours ago
At first I thought it was going to be a CLI/package to interface with that API which sounded interesting, but I already use a hotkey to dictate text on my Mac via the OS.
Comment by pancomplex 12 hours ago
This project uses the on-device SpeechAnalyzer API directly and makes zero network calls, and since it's open source you can verify that nothing leaves your Mac. It also keeps a local searchable history. Finally, I also added press-to-stop with a preview so you can cancel a bad take before it inserts, instead of typing live (very useful in terminal).
What type of package were you hoping it was?
Comment by heresalexandria 11 hours ago
That definitely changes my take and I'm interested in trying this!
My initial assumption was that this was something I could invoke via CLI or within scripts to transcribe audio from files or user input using on-device models, which is something I would presently probably use Whisper for.
Comment by pancomplex 11 hours ago
Comment by HaloZero 11 hours ago
Comment by pancomplex 10 hours ago
1) install the dmg in the GH repo
2) turn off wifi
3) use it offline
Comment by echoangle 4 hours ago
Comment by earthpyy 9 hours ago
Comment by Ducki 6 hours ago
Comment by pancomplex 1 hour ago
This project uses the on-device SpeechAnalyzer API directly and makes zero network calls, and since it's open source you can verify that nothing leaves your Mac.
Comment by 9dev 9 hours ago
The Apple Foundation models SDKs are surprisingly cool. I recently started working on a personal productivity app that tries to keep track of all the projects I work on, and the ideas and initiatives within these. It does so by creating a graph of events, fed by Claude transcripts and the git and browser history, then letting FM summarize and describe all events; that in turn feeds a semantic search index in an SQLite database.
What I have now is an app that shows me where all my projects stand, what I last worked on, where I left forks behind (like deciding for one idea and doing something else "later"), and how to get back into something I wasn’t working on for a while. It also has a built-in MCP server, so I can ask Claude code about any past event or decision or roughly-similar keyword, and it’ll get sensible answers back!
Called the thing Pensieve :-)
However, one thing still missing is actually being able to ask it directly, or talk to it, so Yap looks like a great opportunity to learn!
Comment by theturtletalks 4 hours ago
Comment by xjlin0 29 minutes ago
Comment by primaprashant 6 hours ago
Comment by prabhanjana_c 8 hours ago
Comment by prabhanjana_c 7 hours ago
Comment by jorisw 7 hours ago
I do see the input being listed to — there's an audio graph animated as I speak (~US English), though it appears to be late in picking up my speech. Only my second "test?" is represented in the graph as it moves leftwards.
I went through all the permissions, they show as checked.
I also had a crash once, I've submitted the crash report.
Using the DMG from GitHub.
Comment by pancomplex 1 hour ago
Comment by jorisw 7 hours ago
- Remove the presence of the Dock icon. Yap is the kind of app you just want as a menu bar utility. Like Whisper.
- Add a "Settings..." menu item to the main Yap menu with `Command-,` as a shortcut. This will align it with other apps.
- I couldn't enter F13 as a shortcut.
- I saw there's a transcript history of input. I kind of don't want that to be there. I believe input should be ephemeral and not logged.
Comment by pancomplex 7 hours ago
And interesting re: history - it does have the option to clear, but you’d want that as a setting?
Trying to keep the amount of settings to a minimum - personally finding it overwhelming when apps have too many bells and whistles lol
Comment by jorisw 7 hours ago
W.r.t. the history — I'm just saying I don't want my input to be logged at all. It has no utility. It can be discarded as soon as it's pasted. I don't want to maintain a log by pressing Clear every now and then.
Comment by d3k 7 hours ago
Comment by perelin 2 hours ago
Comment by hbn 11 hours ago
Comment by pancomplex 10 hours ago
Comment by solos 2 hours ago
Comment by __erik 12 hours ago
remote: Repository not found. fatal: repository 'https://github.com/frigadehq/homebrew-tap/' not found
Comment by pancomplex 12 hours ago
Comment by echoscarrie 9 hours ago
Comment by pancomplex 8 hours ago
Comment by eric_khun 12 hours ago
NVIDIA Parakeet TDT v2 still best, but look like apple is not far behind.
i'd be happy to switch to yours if you add parakeet support, but that ight defy the purpose of the repo
Comment by pancomplex 12 hours ago
Comment by wayknow 8 hours ago
Comment by umang_01 7 hours ago
Comment by receptopalak 3 hours ago