Skip to content

Ito v1.0.0: streaming TTS for the ESP32-S3

Choose a tag to compare

@danivs10 danivs10 released this 03 Nov 21:36
· 24 commits to main since this release

First tagged release of Ito, streaming text-to-speech for the ESP32-S3 (Xtensa LX7, 8 MB PSRAM, no neural accelerator, no cloud).

What it is

  • Neural English TTS, 3.3 M parameters in the shipped voices, two voices (female, male), 24 kHz output, distilled from a larger open TTS model.
  • Streaming: audio starts once a 125 ms first chunk is computed, so the wait before the first sound does not grow with sentence length.
  • Phonemization (espeak-ng) runs on the host in this release; the chip takes phoneme ids over serial. All timings below start at the phoneme ids.

Measured on one board (ESP32-S3-DevKitC-1 N16R8, 3 November 2026, firmware fbb900f, female voice; details in esp32/BENCHMARKING.md)

  • Boards that pass the boot supply self-test run the full two-core split: first 125 ms chunk ready about 180-184 ms after the phoneme ids, real-time factor about 0.65, 0 underruns.
  • Fallback (row split): about 231-236 ms, RTF about 0.83.
  • Not included: text-to-phoneme conversion, serial transfer, I2S/DAC output latency. One board, one session; a second board we have hangs in the full split and uses the fallback. Not a guarantee for your hardware, so please send your numbers.

Licence

Try it

  • Listen: https://lokutor-ai.github.io/ito/
  • ito_app_merged.bin is the prebuilt firmware image already in esp32/prebuilt/ (ESP-IDF 5.5.1 build). See esp32/README.md for flashing and the weights step.

Limits: English only; two voices; listening-test results are from a single listener who is an author (see README); no independent reproduction yet. A paper is in preparation and is not yet published.

sha256 of ito_app_merged.bin: 454d1fffeebcc7ea58308ed232f3c03c107a6eeb45f098a410efa44292ccc585