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.
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.
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
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
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.
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://matthartman.github.io/ghost-pepper/
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
- 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