Speech Recognition and TTS in less than 500kb

(github.com)

259 points | by petewarden 4 days ago

20 comments

  • clayhacks 4 hours ago
    I made a little python wrapper around it to serve an HTTP endpoint that’s OpenAI/elevenlabs compatible https://github.com/clayrosenthal/bootlegger
  • sgt 4 days ago
    Quick link to the video where he demos it: https://www.youtube.com/watch?v=kMliOFYBiz4
  • nserrino 10 minutes ago
    Voice is one of the most latency-sensitive modalities in AI. Moonshine is doing awesome stuff
  • senkora 4 hours ago
    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

  • gitgud 1 hour ago
    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?

    • hahahaa 40 minutes ago
      500k memory but not sure about disk.
  • jedberg 3 hours ago
    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!

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

      This actually holds for everything in AI.

    • kamranjon 3 hours ago
      If you look at this chart here it seems the tiny model has a WER of ~12%… not sure about the micro model:

      https://github.com/moonshine-ai/moonshine#when-should-you-ch...

      • yorwba 2 hours ago
        That's the error rate for STT, not TTS. TTS is generally easier than STT because you only need to produce one valid pronunciation and don't need to handle variation within and between individuals.
  • orliesaurus 3 hours ago
    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

    • pwgawron 2 hours ago
      `uvx moonshine-voice mic --language en` That is even simpler.
  • walrus01 31 minutes ago
    Given the tiny size of this, I wonder about possible future integration with esphome compatible hardware

    https://esphome.io/

  • smcameron 2 hours ago
    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

  • userbinator 1 hour ago
    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.

    • HarHarVeryFunny 1 minute ago
      Presumably it's not, but the TTS voice in the video sounds to me more like formant synthesis than diphone - it reminds me of my DECtalk.

      The project credits does mention espeak (which is formant based) as well as various other TTS projects, although it sounds like they are only using the pronunciation part of espeak, not the voice synthesis.

      https://github.com/moonshine-ai/moonshine#acknowledgements

  • stfurkan 3 hours ago
    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 1 hour ago
    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.
  • dwa3592 2 hours ago
    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.
    • NooneAtAll3 2 hours ago
      I remember someone training smart kettle to use its speaker as microphone
    • laidoffamazon 1 hour ago
      IIRC the Alexa enabled voice remotes also used a similarly small model though perhaps not this small
  • t0mpr1c3 3 hours ago
    Very cool. I've done TTS on a 32K Arduino but it was pretty croaky. https://youtu.be/ErGDboTpwM0
  • irfan_99 1 hour ago
    Is the dataset open
  • zarmin 4 hours ago
    Thank you for this. I love your work on Curb Your Enthusiasm.
  • irfan_99 1 hour ago
    very nice I love it
  • 0xnyn 4 hours ago
    ngl, it looks incredible
  • sgt 4 days ago
    Great work!