I built FnScribe because I'm pretty privacy concious and wanted a wispr flow-like app that kept everything local and on device. Currently works for Mac (sillicon and intel).
It's dead simple. Hold the fn key, speak and release. I use a quantized Wisper small.en model for transcription. It inserts the text into the active application. There's also a hands-free model for longer dictation. Audio transcription is kept in memory. There's no account or transcription history. Clipboard contents are restored after it inserts it. GPLv3, Mac-only, English only..still in alpha. Hope you enjoy it! Would love some feedback.
Are you aware of Spokenly? It has a local mode that uses Apple’s built in services. I bind it to right command and use it frequently for hard to spell words.
You may want to look into different models that are more accurate and maybe an AEC layer to remove background noise. Or at the very least a RNN de-noiser on the mic channel. Also, you may want to stream audio to the model instead of holding it all in memory and transcribe at the very end as that can potentially allow you to take the app much further than it is now.
I see Claude implemented a very crude upsampling/downsampling algorithm, which is what LLMs usually do when prompted to handle such a problem. But I would suggest restraining the model from implementing DSP processing on their own and instead use battle tested libraries. You can use rubato's FFT Resampler.
Audio processing is genuinely a hard engineering problem, LLMs usually don't get it right. If you decide to get deep into it, the knowledge you'll get is very rewarding.
It's because vibe coded apps have flooded the internet. This one is no exception. The feedback loop is now real: LLMs train from github on their own produced slop which they feed into the apps people build and publish on github to show off their "skills". In 2 years from now LLMs will become dumber and dumber as the rate of quality code vs. slop will be greatly imbalanced so, naturally, the more slop you have the more probable is that the LLM will use it for its answers. The death of software engineering is real.
I’ve been a software dev for 15 years. Def not trying to show off my skills This is just a little side-project. I have no plans to monetize it. Totally - much of this is vibecoded. It’s been fun building and customizing this for myself rather than paying wisprflow, and thought other people might find it useful
the loop is going to be interesting as we produce orders of magnitude low signal code, how do Labs comb through everything to train on the true contributions since last training run?
I wonder if one way to monetize certified "skill" will be to syndicate / license your provably well software engineered / tasteful AI engineered code back to the Labs for a fee
Thanks! Actually starting to move over to a moonshine model. The parakeet models start at ~0.6b params, which adds a lot of startup overhead. Also yeah definitely a ton of them out there. They’re fun to build! Glad to see many other people take it upon themselves to build little local, private utilities.
there's one of these just about every other week since early this year
i think it's incredible because however saturated I feel this space has become, highly likely the vast majority of the world has no idea how good models have become, let alone local models
I've added local voice support for all apps/webapps I've built this year
Local TTS is on the cusp of a breakout too, basically a year behind ASR imo in terms of adoption, understanding, size and quality
Or https://github.com/FrigadeHQ/yap which is the only one I've seen so far that uses the new/improved speech-to-text API in MacOS 26 that outperforms the Whisper models. I expect most dictation software is going to start supporting the local API pretty soon, it's free real estate.
Are you running the Moonshine model via ONNX/CoreML or native ggml/mlx bindings? how is the first token latency and memory footprint compared against Whisper small.en on Apple Silicon
So many of these apps in fact that the relevant subreddit has a literal spreadsheet to keep track of them all and if memory serves last time I checked, there were over two dozen entries.
Does no one even check the space before building an app these days? This is almost literally the MOST saturated Mac app in existence…
In fact I will go farther. It is actively bad to release something like this, because it clogs up the space and makes picking an app more difficult for everyone just by virtue of its mere existence adding to cognitive load.
I’ve noticed that many people have commented that there are already plenty of apps like this. What surprises me is that, even though there are practically none out there, no one bothers to consider our Meishi project—a privacy-first contacts app with E2EE, P2P, and open source: https://www.meishiapp.com/. Open the App Stores and tell me if there’s anything like this already available. We’ve opened the waitlist, and there are still fewer than 120 spots available for the alpha version, but no one is paying any attention to us. Can you tell me why? Do you think we’re not solving a real problem?
33 comments
[ 0.25 ms ] story [ 26.3 ms ] threadIt's dead simple. Hold the fn key, speak and release. I use a quantized Wisper small.en model for transcription. It inserts the text into the active application. There's also a hands-free model for longer dictation. Audio transcription is kept in memory. There's no account or transcription history. Clipboard contents are restored after it inserts it. GPLv3, Mac-only, English only..still in alpha. Hope you enjoy it! Would love some feedback.
I see Claude implemented a very crude upsampling/downsampling algorithm, which is what LLMs usually do when prompted to handle such a problem. But I would suggest restraining the model from implementing DSP processing on their own and instead use battle tested libraries. You can use rubato's FFT Resampler.
Audio processing is genuinely a hard engineering problem, LLMs usually don't get it right. If you decide to get deep into it, the knowledge you'll get is very rewarding.
https://tryvoiceink.com/
There's so many of these, at this point I've seen 10 clones make the front page each time as if there never existed local only options before.
Also whisper is pretty outdated vs parakeet
I think what I was more alluding to was the engineering value such a project brings. But once again, sorry about the messaging.
Even before AI age we have compiler and auto complete
I wonder if one way to monetize certified "skill" will be to syndicate / license your provably well software engineered / tasteful AI engineered code back to the Labs for a fee
*https://matthartman.github.io/ghost-pepper/
i think it's incredible because however saturated I feel this space has become, highly likely the vast majority of the world has no idea how good models have become, let alone local models
I've added local voice support for all apps/webapps I've built this year
Local TTS is on the cusp of a breakout too, basically a year behind ASR imo in terms of adoption, understanding, size and quality
- havent seen a single one on HN yet in the last year (i read HN twice a day like brushing my teeth)
- When I input my voice into the mic, I want an AI voice as output converting my words in real time in AI voice
- Use case: gaming, I have a terrible voice and dont want to do a voice over with that but at the same time I would love to if I could
- Know any github projects capable of pulling this off? maybe direct integration as an OBS plugin would make it godtier
Does no one even check the space before building an app these days? This is almost literally the MOST saturated Mac app in existence…
In fact I will go farther. It is actively bad to release something like this, because it clogs up the space and makes picking an app more difficult for everyone just by virtue of its mere existence adding to cognitive load.