{"slug": "the-smallest-neural-text-to-speech-family", "title": "The smallest neural text-to-speech family", "summary": "A neural text-to-speech family called sanoTTS, described by its makers as the smallest they know of, runs entirely client-side in the browser, with its 1.46M-parameter \"amy\" voice scoring 4.13 on SCOREQ and 4.10 on UTMOS across a 24-sentence test set, ahead of TinyTTS (3.94/3.65) and Inflect Nano (3.81/3.65). The stack — duration, acoustic and decoder stages quantized to int8, with espeak-ng compiled to WebAssembly at 275 KB and a 448 KB pinyin lexicon for Chinese — ships 28 voices across 16 languages, and the on-device English voice runs at 0.22× real time on an ESP32-S3. The developers report Kokoro is 36× larger than their largest voice and 279× larger than their smallest, with shipped files of 2.8 MB fp16 for sanoTTS amy and 3.5 MB fp16 for TinyTTS against Kokoro's roughly 330 MB fp32.", "body_md": "The smallest neural text-to-speech family we know of — and it plays right here, live, in your browser.\n\na full neural stack — duration → acoustic → decoder — quantized to int8, phonemizer and all. 28 voices, 16 languages, all spoken on this page.\n\nType anything. The text is phonemized by **espeak-ng compiled to\n  WebAssembly** (the same 275 KB port that runs on the chip; Chinese uses a\n  **448 KB pinyin lexicon** instead) and spoken by that voice's own neural stack\n  — all client-side, no server. Pick a voice:\n\n| Phonemes | — | \n| Audio produced | — | \n| Time (this CPU) | — | \n| Speed on this machine | — | \n\nThe speed shown is **this browser on your CPU** —\n  the on-device English voice runs at 0.22× real time on an ESP32-S3. Every voice in the\n  picker synthesizes your typed text live, right here, with no server involved. Where a language\n  offers two sizes, the chips under its mascot switch between them.\n  *heart* and *heart-nano* take a different route from text to sound than the other\n  voices (a 100-band mel interface into a noise-shaping decoder), so they load their own small\n  runtime; *heart-nano* runs the int8 arithmetic of the microcontroller build unchanged.\n\nMeasured with our no-reference harness (SCOREQ / UTMOS / DNSMOS-SIG) on the same 24-sentence diverse set, run identically across every model below.\n\n**Size comparison (parameters)**\n\nKokoro is 36× larger than our largest voice — and 279× larger than our smallest.\n\nShipped-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.\n\n**Three metrics, head to head**\n\n|  | sanoTTS amy1.46M params | sanoTTS heart2.27M params | TinyTTS1.62M params | Inflect Nano4.63M params | \n|---|---|---|---|---|\n| SCOREQ | 4.13 | 3.48 | 3.94 | 3.81 | \n| UTMOS | 4.10 | 3.38 | 3.65 | 3.65 | \n| DNSMOS-SIG | 3.61 | 3.51 | 3.62 | 3.58 | \n\nSame 24-sentence set, three independent no-reference metrics; best value per row in\n  crimson. sanoTTS amy leads on SCOREQ and UTMOS; on DNSMOS-SIG TinyTTS edges us by 0.01 — no single\n  metric tells the whole story. *heart* is a different voice and recipe (24 kHz, noise-shaping\n  decoder) scored on the identical 24 sentences; *heart-nano*, its 294k sibling, scores\n  2.29 / 2.45 / 3.35 on the same three metrics.\n\n**The size-quality frontier we traced**\n\nSame 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.\n\n**Every language we ship, and what we know about it**\n\n**WER** is Whisper word error rate over 16 held-out Tatoeba sentences per\n  language — conversational text, deliberately a different domain from the corpus these\n  voices were distilled on. The **sample** buttons synthesize that language on this page, right\n  now, through the same runtime as the picker above. Where a language ships in two sizes, both are\n  playable. Chinese is the one exception: written Chinese has no spaces, so word error rate means\n  nothing there and the figure is **character** error rate over the same 16 Tatoeba sentences,\n  with traditional and simplified folded together. On held-out FLORES that voice scores 0.199\n  against its teacher’s 0.188 — the voice it replaced scored 0.468.\n\n| Language | WER | Sample | \n|---|---|---|\n| Portuguese 🇧🇷 | 0.038 |  | \n| Italian 🇮🇹 | 0.080 |  | \n| German 🇩🇪 | 0.099512k · 0.145 |  | \n| Russian 🇷🇺 | 0.120 |  | \n| Spanish 🇪🇸 | 0.147 |  | \n| French 🇫🇷 | 0.221 |  | \n| Indonesian 🇮🇩 | 0.256 |  | \n| Arabic 🇯🇴 | 0.274 |  | \n| Turkish 🇹🇷 | 0.303 |  | \n| Czech 🇨🇿 | 0.351 |  | \n| Polish 🇵🇱 | — |  | \n| Romanian 🇷🇴 | 0.392 |  | \n| Vietnamese 🇻🇳 | 0.468 |  | \n| English 🇺🇸 | — |  | \n| Nepali 🇳🇵 | — |  | \n| Hindi 🇮🇳 | — |  | \n| Chinese 🇨🇳 | 0.024CER, not WER |  | \n\nLower is better. Press play to judge the rest.\n\n**What these numbers are, and are not.** WER is measured with Whisper over 16\n  held-out Tatoeba sentences per language — directional, not precise. It says the words come\n  through; it says nothing about whether a voice sounds good. No listening test has been run on any\n  of the ten languages added on 2026-09-08, and none of them has a SCOREQ. Czech, Romanian and\n  French got *worse* on unseen text than on the corpus they were trained on, so they are the\n  ones to press first. Indonesian and Vietnamese are the espeak arm of a paired A/B — the\n  phoneme path this page actually runs. Everything above is reproducible from\n  `experiments/evidence/ood-tatoeba-20260908.json`,\n  `idvi-espeak-free-ab-20260904.json` and\n  `heart-diverse24-remeasure-20260904.json`.\n\nOpen source under **GPL-3.0** — builds on\n  [piper](https://github.com/OHF-Voice/piper1-gpl) and\n  [espeak-ng](https://github.com/espeak-ng/espeak-ng). Distill your own tiny voice:\n  [github.com/Ampixa/sanoTTS](https://github.com/Ampixa/sanoTTS).\n\n© 2026 Ampixa", "url": "https://wpnews.pro/news/the-smallest-neural-text-to-speech-family", "canonical_source": "https://tts.ampixa.com/sanoTTS/", "published_at": "2026-11-03 08:52:29+00:00", "updated_at": "2026-11-03 09:24:47.854939+00:00", "lang": "en", "topics": ["artificial-intelligence", "machine-learning", "ai-research", "ai-tools", "natural-language-processing"], "entities": ["sanoTTS", "TinyTTS", "Kokoro", "Inflect Nano", "espeak-ng", "ESP32-S3", "Whisper", "Tatoeba"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/the-smallest-neural-text-to-speech-family", "markdown": "https://wpnews.pro/news/the-smallest-neural-text-to-speech-family.md", "text": "https://wpnews.pro/news/the-smallest-neural-text-to-speech-family.txt", "jsonld": "https://wpnews.pro/news/the-smallest-neural-text-to-speech-family.jsonld"}}