Speech Recognition and TTS in less than 500kb

559 points84 comments6 days ago
clayhacks

I made a little python wrapper around it to serve an HTTP endpoint that’s OpenAI/elevenlabs compatible https://github.com/clayrosenthal/bootlegger

sgt

Quick link to the video where he demos it: https://www.youtube.com/watch?v=kMliOFYBiz4

show comments
nutanc

This is awesome. I am trying to build a full scale ASR system within 20-25MB. Now that we have Claude code to run experiments, I have started running some experiments. Promising results so far. First realization is that you can capture the nuances of speech in just 3300 embedding vectors(786d). This sequence can be decoded with a small CTC system to get text. Next experiments are on reducing the 768 dimension space into a 64D space. Thats also show some promising results. Hooking up my system so that the agent blogs the results everyday[1]. So my research "claw" setup does the experiments and posts results which I check in the morning and adjust the experiment direction as needed. Its not fully automated yet, but almost there.

[1] https://blog.trulm.com/posts/speech-as-independent-parts/

show comments
almogo

Stt/tts systems always seem to me so promising, but I pretty much never use voice to interface with a computer. Sometimes instead of typing on my phone, I use a voice dictation. I would be keen to use voice to control Claude code, but I've always felt that the way I speak is different from the way I write good prompts.

Fishing for anecdotes here, does anyone have any good tts/stt experiences?

show comments
jedberg

Do you have any accuracy benchmarks?

I’ve worked in this space. TTS in a small footprint isn’t the hard part —- it’s doing it accurately that’s hard.

Although for the use cases OP is targeting, lower accuracy may be good enough!

show comments
senkora

Wow, it seems like this might beat out flite for very-low-memory TTS? I ended up abandoning a project of mine because I couldn't get high enough quality or low enough memory usage out of flite, so I'm very excited to try this out.

Flite for comparison: https://github.com/festvox/flite

smcameron

For TTS I wonder how this compares to nanotts[1] with the en-GB voice, which is sort of unreasonably good.

[1] https://github.com/gmn/nanotts

orliesaurus

I installed the command line version using uv

    uv init
    uv add moonshine-voice
    uv run moonshine-voice mic --language en
super nice to be able to run it to test it like this

good job on a clear readme.md tbh

show comments
gitgud

So at that tiny 500kb size I imagine it could be compiled to web assembly, and run entirely in the browser right?

Couldn’t find a link, is that hard to do?

show comments
t0mpr1c3

Very cool. I've done TTS on a 32K Arduino but it was pretty croaky. https://youtu.be/ErGDboTpwM0

1saadcodes

I've a local dictation workflow for coding, and one thing I've learned is that transcription accuracy is only half or even less than half the problem now. The other half is latency. Once the delay gets low enough that you stop noticing it, voice input starts feeling much more natural. It'll be interesting to see where this lands compared to Whisper-based setups for continuous dictation

userbinator

This looks like an extreme point for AI-based TTS, as formant/tract modeling synths tend to be more accurate if you want TTS in a tiny amount of compute, but sound distinctly robotic.

TTS (neural diphone synth @ 16 kHz) ~1.8 MiB voice pack

This is in the realm of Microsoft Sam.

show comments
stanko

This is really impressive.

If I get time, I would like to try compiling it to WASM. This would allow me to swap my robot poet’s native browser voice synthesis for it. Not sure if it is worth it, but it will be fun to play around with.

Edit: typo

[0] https://muffinman.io/bard/

dwa3592

this is good to see. i also trained a stt under 500kb for sub dollar chips. it had about 20 words that it could understand(like start, stop, left, right, go, up etc) and then the spell mode where you could say the word spell and then say the individual english alphabets and close with spell. it was super fun to work on. these tend to be extremely unstable though, like confusion between p and t (at least for my accent). will have to try this one now.

show comments
stfurkan

It looks great, thank you! I'll see if I can use it for my in browser AI assistant project's ( https://aidekin.com ) voice part. It's currently using Nemotron-3.5-ASR and supertonic-3 but overall it requires 1.2gb download.

jjcm

The voice activity detection alone here is compelling - very useful for doing things like highlighting a speaker who's transmitting in realtime. At that rate the impact on perf will be so minimal that you could easily run it in the browser across devices.

walrus01

Given the tiny size of this, I wonder about possible future integration with esphome compatible hardware

https://esphome.io/

show comments
Kyuren

This makes me want to have a server room with 5 of these around my house and control everything that house in LabRats

nserrino

Voice is one of the most latency-sensitive modalities in AI. Moonshine is doing awesome stuff

agnishom

Will it be able to understand my English with an Indian accent?

yako21000

wow now that's a really tiny tts model. is there a comparison to https://github.com/kyutai-labs/pocket-tts ?

irfan_99

Is the dataset open

sgt

Great work!

0xnyn

ngl, it looks incredible

irfan_99

very nice I love it

zarmin

Thank you for this. I love your work on Curb Your Enthusiasm.

show comments