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