sanoTTS

सानो — small
a tiny neural text-to-speech voice · sano (सानो) is Nepali for small

The smallest neural text-to-speech family we know of — and it plays right here, live, in your browser.

a full neural stack — duration → acoustic → decoder — quantized to int8, phonemizer and all. Below: hear every released voice, then synthesize live on this page.

▶ Synthesize live — type anything, pick a voice

Hear the voices

One fresh sentence per voice, rendered by the models themselves. 745k to 1.8M parameters — every voice fits in a few megabytes.

LanguageVoiceListen
English 🇺🇸
amy1.46M params SCOREQ 4.13
kristin1.40M params SCOREQ 4.09
hfc1.83M params SCOREQ 3.94
amy-small1.08M params SCOREQ 3.70
robot (on-device)745k params int8 · on-chip the model that runs faster than real time on a $3 ESP32-S3 — same weights, same phonemizer
Nepali 🇳🇵नमस्ते! तपाईंलाई भेटेर खुशी लाग्यो।
Nepali1.47M params
Hindi 🇮🇳नमस्ते! आपसे मिलकर बहुत खुशी हुई।
Hindi1.50M params
Vietnamese 🇻🇳Xin chào! Rất vui được gặp bạn hôm nay.
Vietnamese1.46M params
Indonesian 🇮🇩Halo! Senang bertemu dengan Anda hari ini.
Indonesian1.46M params
Chinese 🇨🇳你好!很高兴今天见到你。
Chinese1.50M params

How it compares

Measured with our no-reference harness (SCOREQ / UTMOS / DNSMOS-SIG) on the same 24-sentence diverse set, run identically across every model below.

Size comparison (parameters)

Size comparison (parameters) 0 20M 40M 60M 80M parameters — linear axis, so the sliver IS the point sanoTTS (9 voices) 0.75M–1.8M params sanoTTS family: largest voice hfc, 1.83M params sanoTTS family: smallest voice, 745k params (the on-device model) 0.75M–1.8M TinyTTS 1.62M params TinyTTS: 1.62M params, ships 3.5 MB fp16 (verified from their Hugging Face repo) 1.62M Inflect Nano 4.63M params Inflect Nano: 4.63M params 4.63M Kokoro 82M params Kokoro: 82M params, ~330 MB fp32 (widely cited public figure) 82M

Kokoro is 45× larger than our largest voice — and 110× larger than our smallest.

Shipped-file sizes: sanoTTS amy 2.8 MB fp16 and TinyTTS 3.5 MB fp16, both verified from the released files; Kokoro's ~330 MB fp32 is its widely cited public figure.

Three metrics, head to head

sanoTTS amy1.46M params TinyTTS1.62M params Inflect Nano4.63M params
SCOREQ 4.133.943.81
UTMOS 4.103.653.65
DNSMOS-SIG 3.613.623.58

Same 24-sentence set, three independent no-reference metrics; best value per row in crimson. sanoTTS leads on SCOREQ and UTMOS; on DNSMOS-SIG TinyTTS edges us by 0.01 — no single metric tells the whole story.

The size-quality frontier we traced

The size-quality frontier we traced 3.6 3.8 4.0 4.2 1.09M 1.35M 1.84M 1.09M params, SCOREQ 3.70 1.19M params, SCOREQ 3.73 1.35M params, SCOREQ 4.08 1.46M params, SCOREQ 4.13 1.84M params, SCOREQ 4.16 3.70 4.16

Same voice (amy), same duration/acoustic recipe — only decoder size changes. Quality lives in the decoder: doubling it from 1.09M to 1.84M params moves SCOREQ from 3.70 to 4.16.


Synthesize live in your browser

Type anything. The text is phonemized by espeak-ng compiled to WebAssembly (the same 275 KB port that runs on the chip) and spoken by that voice's own neural stack — all client-side, no server. Pick a voice:

loading runtime…
Phonemes
Audio produced
Compute time (this CPU)
Speed on this machine

The speed shown is this browser on your CPU — the on-device English voice runs at 0.22× real time on an ESP32-S3. Every mascot above (marked ●) synthesizes your typed text live, right here, with no server involved.


Open source under GPL-3.0 — builds on piper and espeak-ng. Distill your own tiny voice: github.com/Ampixa/sanoTTS.