TiHon-TTS: Four Vietnamese Voices in 100K Parameters

Introduction
This afternoon I wrote about a 1.4-million-parameter voice. Tonight, a Vietnamese one showed up that's about fourteen times smaller. TiHon-TTS, from Hugging Face developer ngocthien, is a Vietnamese text-to-speech model with four voices in 100,118 parameters. The float32 weights weigh just 402 KB. Tí hon means "tiny" in Vietnamese, and for once the name undersells it.
The weights, inference code, TFLite graphs, voice samples and a Colab notebook went up on Hugging Face on November 2, together with a separate int16 NPU package for Arm microcontrollers.
What Shipped
- Model: TiHon-TTS by ngocthien, released November 2, 2026.
- Size: 100,118 parameters in total, of which 95,414 are shared and 1,176 belong to each voice.
- Voices: four in one network. Ngọc Huyền, InfoRe and Trúc Ly are female, and Hải Đăng is male.
- Audio: 24 kHz mono in frames of about 10.7 ms.
- No vocoder network: the model predicts pitch, voicing and spectral envelopes, and a small harmonic-plus-noise synthesiser turns them into a waveform.
- Text handling: numbers, dates, times, money, percentages, units, phone numbers and email addresses are read out by built-in rules. Other non-Vietnamese words are spelled letter by letter.
- Runtimes: PyTorch, or TFLite plus NumPy with no PyTorch needed. The NPU package adds int8-weight, int16-activation graphs.
- License: CC BY-NC 4.0, so it's for non-commercial use only.
How It Was Built
The architecture is adapted from AuroraTTS-100K, an Apache-2.0 design with a looped conv-GLU encoder, a small bidirectional GRU, duration and pitch predictors and a dilated decoder. TiHon's changes are what make it interesting. Each Vietnamese syllable is split into five tokens (onset, medial, nucleus, coda and a prosody token), and the tone rides along on the first four, which is a smart fit for a tonal language. Each voice gets its own embedding and its own scale-and-shift layers after every decoder block, which is why adding a voice costs only 1,176 parameters.
The model also never heard a recording. It learned purely from text by distillation: a frozen 17.1-million-parameter teacher with the Vocos vocoder generated target audio on the fly, and the student learned to copy its timing, pitch and sound. Training ran for 80,000 steps over 78,700 Vietnamese sentence chunks and finished with an adversarial phase. The training code isn't released yet.
The Numbers
These are the developer's figures from the model card.
- Intelligibility: a Vietnamese speech recognizer transcribed 36 held-out sentences per voice with a character error rate between 1.0% and 2.3%. The card is honest that this measures clarity only, and no listening test has been run.
- Speed: 40 times faster than real time on one x86 core with TFLite, and 83 times on one Apple M4 core.
- Microcontroller, simulated: on an Arm Cortex-M55 with an Ethos-U55 NPU, one second of audio costs about 6.6 million CPU instructions plus 4.7 million NPU cycles. Arm's Vela compiler reports no operators falling back to the CPU on any Ethos-U55, U65 or U85 configuration.
On our own test box, a Linux VM limited to a single CPU core, we ran the TFLite backend. Trúc Ly read a 5.5-second sentence with a time and a price in it in 0.08 seconds, and Hải Đăng read the same sentence in 0.17 seconds. That's roughly 30 to 65 times faster than real time, and the number and currency came out as words just as promised.
How to Run It
The fastest way to hear it is the Colab notebook linked from the model card. Locally, the TFLite route skips PyTorch entirely:
pip install huggingface_hub numpy safetensors ai-edge-litert
hf download ngocthien/tihon-tts --local-dir tihon-tts && cd tihon-tts
python infer.py --text "Xin chào, hôm nay trời đẹp không?" \
--voice haidang --out hello.wav --backend tfliteSwap --voice for ngochuyen, infore, trucly or haidang. Drop --backend tflite and install torch if you'd rather use the PyTorch model.
Pro Tip
Feed it full sentences, not single words. The front end splits text into chunks of up to 64 syllables, and the prosody token reads your punctuation, so commas, full stops and question marks shape where it pauses and how the line rises and falls.
Also New Today: Hanezu TTS
Japanese makers got a tiny voice today too. Hanezu TTS by kaeru-shigure is a Japanese text-to-speech model with about 1.7 million parameters, plus an optional 70-million-parameter reading model to improve intonation. It's MIT licensed, aims to read Japanese with English words mixed in, and was trained on roughly 35 hours of synthetic speech made with Qwen3-TTS, with no real reference voices, to stay clear of rights issues. There's a browser demo to try it.
Where It Fits
TiHon is a research-grade voice for places where every kilobyte counts: smart speakers, toys, accessibility devices, kiosks and offline Vietnamese assistants running on a microcontroller. The non-commercial license keeps it out of shipping products for now, but it's a brilliant study of how far a tonal language can shrink.
If you want English instead, compare it with PiVo-1.4M, which is Apache-2.0, or Leokani-tts 7M for an ESP32 build.
Conclusion
Four clear Vietnamese voices in 402 KB, with no vocoder network and a ready path onto Arm NPUs, is a genuinely new low for TTS size. Open the notebook, pick Trúc Ly or Hải Đăng, and listen to how much voice fits into a hundred thousand numbers.
—Anabel ♡
