The interesting number in sanoTTS is not its quality score. It’s 337 kilobytes.
That’s the floor of the per-voice footprint for a family of neural text-to-speech models from Ampixa Labs, spanning 294,000 to 2.27 million parameters — roughly four orders of magnitude below the TTS systems most creative tools reach for. The name is Nepali: sāno, small.
The claim, and the measurement behind it
sanoTTS runs a complete neural pipeline — phoneme IDs to PCM audio — on a general-purpose microcontroller, with no neural accelerator and no network. The reference configuration is 567,008 parameters in two int8 blobs totaling 679,832 bytes, and on an ESP32-S3 it generates 4.54 seconds of speech in 1.02 seconds — a real-time factor of 0.22×, meaning it runs about 4.5× faster than playback. The audio comes out a GPIO pin into an LM386 and a speaker. Total chip cost: around $3.
The same models compile to WebAssembly and run live in a browser tab.
Ampixa has a paper on arXiv, sanoTTS: The Smallest Real-Time Neural TTS on a General-Purpose Microcontroller, and reports that the models lead SCOREQ and UTMOS naturalness metrics in the sub-15M-parameter class — the amy variant at 1.46M parameters outperforming considerably larger alternatives.
How it gets that small
The pipeline is four stages: phoneme extraction via espeak-ng, duration prediction, acoustic modeling, and audio decoding. Two model lineages sit underneath.
The piperlite voices — amy and relatives — are distilled from a Piper/VITS teacher and run time-domain decoders at 22.05 kHz. The newer nano lineage (heart, heart-nano) runs at 24 kHz with a mel-100 interface into a ConvNeXt1D decoder with iSTFT, distilled from a Kokoro teacher, and quantizes cleanly to int8 for microcontroller deployment.
Distillation is doing the heavy lifting: rather than training tiny models from scratch and accepting tiny-model quality, Ampixa is compressing known-good large teachers into a student that fits the silicon. The iSTFT decoder matters because it replaces the expensive neural vocoder stage that usually dominates a small TTS budget.
Recency and reach
Language coverage expanded sharply on September 8, 2026, when ten new languages — German, French, Spanish, Italian, Portuguese, Russian, Czech, Romanian, Turkish, and Arabic — were added, each in a 1.56M variant and, for eight of them, a ~511k variant. That builds on existing English, Nepali, Hindi, Vietnamese, Indonesian, and Chinese voices. A Chinese pinyin bundle (zh-xiaoya) landed within the last day.
Our Hugging Face tracker flagged the repo this week on an +82% jump in downloads over 24 hours — the kind of movement that usually follows a release rather than preceding it.
Why this belongs on a creative-technology site
Because it changes what a physical object can do without becoming a networked product. Until now, putting a voice in an installation, an instrument, a badge, or a kinetic sculpture meant one of three compromises: pre-rendered audio files (fixed text forever), a cloud API (latency, cost, an internet dependency, and a privacy story you have to tell your audience), or a Raspberry Pi-class board with the power draw and boot time that implies.
sanoTTS removes the trilemma for a large class of work. A gallery piece can speak arbitrary generated text, offline, from a battery, on a chip that costs less than the connector it’s soldered to. That’s the same architectural argument that made PolyMO’s local-only design possible — and it’s a good deal easier to make when the whole voice fits in under a megabyte.
The license is GPLv3, inherited from espeak-ng and Piper dependencies, which is worth knowing before it goes into anything you plan to distribute as a closed product.