Ampixa/sanoTTS
sanoTTS (सानो = 'small' in Nepali): a ~1.4M-param neural TTS that runs on a $3 chip or in the browser. Leads SCOREQ/UTMOS in the sub-15M class.
What it solves
sanoTTS provides a family of extremely small neural text-to-speech (TTS) voices that can run locally on low-power hardware without requiring a cloud connection, a dedicated Neural Processing Unit (NPU), or a server. It enables real-time speech synthesis on devices as simple as a $3 ESP32-S3 microcontroller or directly within a web browser via WebAssembly (WASM).
How it works
The system uses a multi-stage pipeline: an espeak-ng phonemizer converts text to phoneme IDs, a duration model predicts timing, an acoustic model predicts generator latents, and a decoder renders the final audio. Depending on the target platform, it uses different decoders: a compact time-domain decoder for browsers (fp32 WASM) and a quantized int8 iSTFT decoder for microcontrollers to ensure real-time performance.
Who it’s for
- Embedded developers building voice-enabled devices on cheap microcontrollers.
- Web developers wanting to add client-side, serverless TTS to their websites.
- Python developers looking for a lightweight, dependency-free TTS library.
Highlights
- Ultra-compact size: Models range from 294k to 2.3M parameters, with the smallest (heart-nano) occupying only 337 KB.
- Broad language support: Includes 30 voices across 16 languages, including English, Spanish, French, Arabic, and Nepali.
- High efficiency: Achieves a Real-Time Factor (RTF) of 0.383 on an ESP32-S3, meaning it synthesizes speech 2.6x faster than real-time.
- Zero dependencies: The Python package uses pure numpy for inference, and the browser version runs entirely client-side.
- Customizable: Includes a full training recipe for users to create and distill their own voices.
Related
- Project
- Project
- Project
- Project