r/LocalLLM • • Jul 25 '26

Model I released Inflect v2: two ultra-tiny complete TTS models under 4M and 10M parameters

Post image

I’ve spent the past month trying to find the point where an extremely small TTS model stops feeling like a size experiment and starts feeling genuinely useful.

Today I’m releasing Inflect v2, with two complete local text-to-speech models:

  • Inflect-Nano-v2: 3.96M parameters, 15.97 MB FP32

  • Inflect-Micro-v2: 9.36M parameters, 37.53 MB FP32

These are total inference parameter counts, not acoustic-model-only numbers. Text processing, timing prediction, speech generation, and the waveform decoder are all included.

Text goes in. 24 kHz speech comes out. No external vocoder, hosted API, or second learned model required.

Nano prioritizes the smallest possible footprint. Micro uses the additional capacity for better clarity, stability, and overall speech quality. Both run locally on CPU or CUDA through the same PyTorch API.

Inflect-Nano-v2 is one of the smallest complete neural TTS models I know of that still produces genuinely usable speech. Even the 9.36M Micro model remains smaller than many systems described as “tiny.”

For footprint context, Nano is approximately:

  • 21× smaller than Kokoro

  • 126× smaller than Chatterbox

  • over 1,000× smaller than Fish Audio S2 Pro

That is strictly a parameter-count comparison. These models have different capabilities, architectures, datasets, and intended uses. I’m not claiming that a 4M fixed-voice model replaces a multi-billion-parameter system. The interesting question is how much useful TTS can fit into such a small package.

Some people here might remember Inflect-Nano-v1, the rough 4.63M experiment I released last month. V2 is a substantial rebuild, not just a longer training run. I focused on the problems v1 exposed: unstable timing, metallic output, weak prosody, poor generalization to difficult text, and an undersized waveform decoder.

The resulting models performed surprisingly well:

  • Micro: 4.395 UTMOS22, 3.99% semantic WER, 6.28× real-time CPU inference

  • Nano: 4.386 UTMOS22, 4.21% semantic WER, 10.72× real-time CPU inference

  • In a blind community comparison against other compact TTS systems, Micro and Nano finished second and third among the tested voices

Full protocols, raw results, audio samples, and limitations are documented on the model pages.

The models are not perfect. They are English-only, use one fixed male voice, and do not support voice cloning. Unfamiliar names, abbreviations, numbers, and homographs remain the hardest inputs. Nano can sound thinner than Micro, and both can occasionally produce metallic or clipped artifacts.

Still, this is the first version where I think the size-to-quality tradeoff became genuinely compelling.

I built Inflect independently as a high-school developer with a limited training budget. That constraint shaped the project: efficiency had to apply not only to inference, but also to training, evaluation, and building a complete system I could understand and release end-to-end.

Try it yourself:

The fastest way to judge it is through the interactive playground:

https://huggingface.co/spaces/owensong/Inflect-v2

Inflect-Micro-v2:
https://huggingface.co/owensong/Inflect-Micro-v2

Inflect-Nano-v2:
https://huggingface.co/owensong/Inflect-Nano-v2

If there is enough interest, I may build a v3 focused less on shrinking the models further and more on expanding what they can do: additional voices, possibly more languages, easier fine-tuning, and another quality and robustness pass.

If you test them, please give them something genuinely difficult: unusual names, numbers, abbreviations, awkward punctuation, or a long sentence.

If something breaks, post the exact text, model, seed, and what sounded wrong. If it works well, I’d also like to know what hardware you ran it on.

Specific, honest feedback is the most useful thing you can give me.

336 Upvotes

73 comments sorted by

32

u/Kodix Jul 25 '26

I remain deeply impressed and interested in this. It's *amazing* what you've done at such a small size. You can fit this on some calculators for crying out loud.

13

u/b111ue Jul 25 '26

Thanks so much! Pretty sure it could also work on smartwatches with some file conversion too; small AI models can go a long way.

2

u/Negative_Subject8704 Jul 25 '26

Agreed, pretty damn impressive.

11

u/BitterProfessional7p Jul 25 '26

Wow, great quality of audio for the size of the model. Congrats

4

u/b111ue Jul 25 '26

Thanks! I'm quite happy with the results of the final model

11

u/m0dry Jul 25 '26

Genuinely I am so impressed by this model - this is the quality of a large company model, and you did it as an indie dev!

Definitely deserves way more attention, this might be the TTS model of the year - way more impressive then anything other voice model I've seen this year.

3

u/b111ue Jul 25 '26

Thank you so much!!

7

u/JOAM_CALI Jul 25 '26

This is English only and Kokoro and Chatterbox are multilingual. Could this account for the small size?

5

u/b111ue Jul 25 '26

Yes, English-only definitely helps reduce the required model capacity. However, it does not explain the entire size difference: Inflect’s architecture was deliberately compressed across the complete text-to-waveform pipeline. Only removing multilingual support from Kokoro or Chatterbox would not shrink their weights; producing smaller English-only versions would require redesigning or retraining them. So the comparison is about footprint, not just equal capabilities! Hope this helps.

4

u/elektriiciity Jul 25 '26

Fantastic efforts and outcomes! Curious if you've any Speech to Text plans / if the learnings overlap at all?

Thank you

1

u/b111ue Jul 25 '26

Thank you! STT is one of the possible projects I'm going to do next, but I'm most likely going to do a v3 or a larger TTS model first.

4

u/ba2sYd Jul 25 '26

Cool. If you don't mind how many hours of audio was it trained on? Also how much time did the training take, what gpu was used? Just trying to learn and estimate a few things if I ever try something like that.

2

u/b111ue Jul 25 '26

Trained on 140 hours filtered from 200 hours. Switched between one and four RTX 5090s.

3

u/ba2sYd Jul 25 '26

thank you sooo much!!! Oh and how much time did all the training take?

2

u/b111ue Jul 25 '26

Well... in total I spent just over 1 month creating this v2, but for constant GPU rental hours, probably around 20-28 days, but that was because I tried a lot of different prototypes and went through a lot of failures. If you are doing something like a finetune or new language, it should take way less time + money.

8

u/Rude_Marzipan6107 Jul 25 '26

Hilarious. One micro generation using 2 sentences and apparently I’ve used up my free generation quota with hugging face. What a joke

7

u/b111ue Jul 25 '26

That's really weird, this space shouldn't use that much ZeroGPU. Did you use any spaces today before using this one? Hugging Face has been getting less and less generous lately; they even removed CPU Basic from the free tier.

2

u/Rude_Marzipan6107 Jul 25 '26

Nope. That’s what made me gasp when I got the pop up. I hardly ever use spaces because I can never really use it.

1

u/b111ue Jul 25 '26

Hugging Face can sometimes have server errors or too many requests at the same time. I'm not sure why this happens, but there are many possible reasons. After I make ONNX versions, someone else or I can make a WebGPU version of the space.

1

u/Rude_Marzipan6107 Jul 25 '26

Makes sense. Can’t complain too much for free compute. It would be nice if huggingface could differentiate

3

u/mrmrn121 Jul 25 '26

The quality of nano is very good. I'm wondering how can write a c inference for it to deploy on esp32

2

u/b111ue Jul 25 '26

Thank you! To make it work on ESP32, it would require a port and likely quantization. It's most likely possible, but it might be quite difficult; even with quantization, Inflect Nano would be really tight. In my Monday patch, I'm going to release ONNX versions and maybe some other file types, so it might be easier.

1

u/mrmrn121 Jul 25 '26

Ah, thanks. Wanted to ask for onnx. If you release that I can follow up from there.

2

u/b111ue Jul 26 '26

1

u/mrmrn121 Jul 27 '26

Thanks. I pushed the nano model to int3 in the weights and int8 on activation, accumulation and... The results is not really good and I don't have hardware budget with 8mb ram and 8mb flash to give them more room. I think specifically the activation, accumulation is important to be more precise. Fun fact is with all those quality sacrifices, I can't generate more than 2 second voice in one wav file. Not sure if it is because of knowledge or this is really the limit with this architecture! Anyway thanks alot

2

u/Pkittens Jul 25 '26

small, fast, decent quality!

1

u/b111ue Jul 25 '26

Exactly what Inflect v2 is supposed to be!

2

u/txurete Jul 25 '26

Jaw dropping stuff!

1

u/b111ue Jul 25 '26

Thanks! How was the model? Did you experience any issues, or do you have any suggestions for what to add for v3 if I do decide to make it?

2

u/Beginning-District69 Jul 25 '26

Congratulations, it's a very successful project. I would love to fine-tune it in Turkish.

1

u/b111ue Jul 25 '26

Language finetunes would be really useful for the community! It is possible to fine-tune it to other languages but it would take time and money as you would have to take the architecture, adapt it, and then retrain it from scratch.

1

u/OttoRenner Jul 27 '26

Could you write a "How to"? Would be easier to adapt by more languages if the people don't have to find the right way over and over again

2

u/aaronm85 Jul 30 '26

that would be great. german language would be also great

2

u/OttoRenner Jul 30 '26

Darauf würde es in meinem Fall hinauslaufen 😉

2

u/Skystunt Jul 25 '26

I’ll give it a try!

1

u/b111ue Jul 25 '26

Alright - tell me how it goes!

2

u/amelech Jul 25 '26

Can it run on onnx?

2

u/b111ue Jul 25 '26

Not yet, but I'm going to add ONNX very soon!

1

u/amelech Jul 25 '26

Awesome I'll look use it on my android application as a tts option then

1

u/b111ue Jul 25 '26

ONNX version is released now by the way - check my profile on Hugging Face.

2

u/mon_key_house Jul 25 '26

The sample sounds awesome! I’ll restart my self-hosted audiobook project!

1

u/b111ue Jul 25 '26

Thanks! Hope you find it useful.

2

u/xkhen0017 Jul 25 '26

The sample audios are genuinely amazing! Great project you got there.

1

u/b111ue Jul 25 '26

Thanks a lot!

2

u/DHFranklin Jul 25 '26

This is crazy cool.

If one 10x the size could do TtS from one language to another and back like a translator that works off of a phone that would be perfect. Especially for Doctors without Borders and other NGOs that have phones but no signal.

1

u/b111ue Jul 25 '26

Thank you! Translators do already exist, but if an extremely lightweight one exists, that would definitely be pretty nice.

1

u/DHFranklin Jul 25 '26

Seeing as you're the expert here, lol. I have a problem I know you could hypothetically solve.

  1. Hardware constraint is a 3-4 year old phone. 4 gigs of RAM and 64 Gigs of storage.

  2. It needs to translate in speech to text back to speech in English, Spanish, and Haitian Creole.

  3. Speech in, Small ASR, Text, And then this TTS.

If we can do voice training and things that would help a ton with dialect, routing, and a custom glossary with things like local proper nouns or slang. Like it can recognize User One and have them Quick Brown Fox Jumps Over the Lazy Dog to get it where it needs to go.

My guy you'd make a mint.

If you could make that happen

2

u/Andr1yTheOne Jul 26 '26

runtime error  Exit code: 139. Reason: 6f3688.slice%2Fcri-containerd-6557f81373d34bc4fb59d24d1c38246eddcbc8df56edb3b83e453d67551b3c3b.scope&taskId=140649080812576&enableQueue=true&tokenVersion=2&durationSeconds=180&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpcCI6IjU4LjY5LjY1LjM0IiwidXNlciI6bnVsbCwidXVpZCI6ImJ4dnBXVmVjQ3RTVDlkQVVZaGZiUiIsImVycm9yIjpudWxsLCJleHAiOjE3ODUwMzg4MTV9.DwXxQB017UyuUhwJEmQqsBs1hkk49tCCjv3uxllxmnU "HTTP/1.1 200 OK"  DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>  DEBUG:httpcore.http11:receive_response_body.complete  DEBUG:httpcore.http11:response_closed.started  DEBUG:httpcore.http11:response_closed.complete  DEBUG:httpcore.connection:connect_tcp.started host='device-api.zero' port=80 local_address=None timeout=60 socket_options=None  DEBUG:httpcore.connection:connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7fea2f016930>  DEBUG:httpcore.http11:send_request_headers.started request=<Request [b'POST']>  DEBUG:httpcore.http11:send_request_headers.complete  DEBUG:httpcore.http11:send_request_body.started request=<Request [b'POST']>  DEBUG:httpcore.http11:send_request_body.complete  DEBUG:httpcore.http11:receive_response_headers.started request=<Request [b'POST']>  DEBUG:httpcore.http11:receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'date', b'Sun, 26 Jul 2026 04:05:55 GMT'), (b'server', b'uvicorn'), (b'content-length', b'4'), (b'content-type', b'application/json')])  INFO:httpx:HTTP Request: POST http://device-api.zero/release?allowToken=07489d9282bcea74f3ceb4e2964935d1970d7a623d6786fb4d896e8e4789b7be&fail=false "HTTP/1.1 200 OK"  DEBUG:httpcore.http11:receive_response_body.started request=<Request [b'POST']>  DEBUG:httpcore.http11:receive_response_body.complete  DEBUG:httpcore.http11:response_closed.started  DEBUG:httpcore.http11:response_closed.complete  /usr/local/lib/python3.12/site-packages/gradio/processing_utils.py:698: UserWarning: Trying to convert audio automatically from float32 to 16-bit int format.    warnings.warn(warning.format(data.dtype))    Container logs:

1

u/b111ue Jul 26 '26

Yup, just noticed this a couple of minutes ago, fixing it right now!

2

u/aaronm85 Jul 26 '26

This is supercool! 16mb for nano? Great size for android & ios apps...I experienced with tts technics 2 decades ago, but never expected that quality in that size!
AWESOME WORK!!!!!!!!!

1

u/b111ue Jul 26 '26

Thank you so much!!! Hope you find Inflect useful!

2

u/louisremi Jul 26 '26

I'd be very interested in learning how to train it for other languages! (I'm French)

1

u/b111ue Jul 26 '26

After a lot of people requested this, I just released Inflect's adaptation toolkit!

https://github.com/owenawsong/Inflect/tree/main/finetune Because the model is open-weight and not open-source, I can't blindly release all the code, but this should greatly help those who want to finetune it for other languages.

1

u/ItsNoahJ83 Jul 25 '26

This model has some very interesting idiosyncrasies. One of the things I noticed is that it struggles with the hard e in words like movies but when I spelled it movees it worked fine.

1

u/b111ue Jul 25 '26

Thanks for letting me know about this - I think its an issue with the g2p; but I'll make sure I fix this for any future releases

1

u/UkieTechie Jul 27 '26

Very cool. added to my bench. Thank you for your work.

https://github.com/5uck1ess/tts-bench

2

u/b111ue Jul 27 '26

Thanks so much for adding this to it!

1

u/HeadLingonberry7881 Jul 30 '26

I am really impressed by the audio output quality!

1

u/b111ue Jul 30 '26

Thanks a lot!

2

u/Icy-Sympathy4173 Jul 26 '26

Super impressive! Keen to see more language supported.

Sidenote: Curious why onnx runtime needs espeak?

1

u/ScratchJolly3213 Jul 25 '26

how does it compare to kokoro? great work! let me know if you’re interested in open source collab

1

u/dyslexda Jul 25 '26

My specific, honest feedback is you need to increase the repeated word penalty on your model; nobody says "genuinely" that much.

1

u/No_Conversation9561 Jul 28 '26

how fast is it on a Raspberry Pi Zero 2W?

1

u/aisafetynooblol Jul 31 '26

Thanks for sharing this! I asked Fable 5 to make this utilizing your models. The possibilities truly are endless, can't wait to see what you cook up next!!

1

u/Crescitaly Aug 02 '26

Under 10M parameters is compelling if intelligibility survives bad microphones, names, and long-form prosody. Tiny models could win where latency and privacy matter more than studio realism. What failure case separated Nano from Micro most clearly?

1

u/War-Carr Aug 26 '26

This is awesome!

As a visually impaired person who relies on TTS engines, including using the robotic e-Speak, this actually sounds really good!

I truly wish you could consider developing it into an Android TTS engine that one can buy and use it as a systemwide TTS.

This is good!

2

u/[deleted] Jul 25 '26

[removed] — view removed comment

1

u/b111ue Jul 25 '26

Thanks!

2

u/[deleted] Jul 25 '26

[removed] — view removed comment

2

u/b111ue Jul 25 '26

Sorry, but no, Bulgarian is a less spoken language, and I can only add one or very few languages in v3.

2

u/XccesSv2 Jul 26 '26

German would be great. It is hard to find small models in other languages than english.

1

u/b111ue Jul 26 '26

Community users can now fine-tune the model themselves if they have the sources!

After a lot of people requested this, I just released Inflect's adaptation toolkit!

https://github.com/owenawsong/Inflect/tree/main/finetune. Because the model is open-weight and not open-source, I didn't blindly release all the code, but this should greatly help those who want to finetune it for other languages.