Repository navigation
Ito v1.0.0: streaming TTS for the ESP32-S3
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
- Code: GPLv3. Commercial licences available from Lokutor.
- Weights: CC BY-NC-SA 4.0 plus terms (non-commercial), gated download at https://huggingface.co/lokutor-ai/ito. Free for hobby, research and education; contact@lokutor.com for commercial use.
Try it
- Listen: https://lokutor-ai.github.io/ito/
ito_app_merged.binis the prebuilt firmware image already inesp32/prebuilt/(ESP-IDF 5.5.1 build). Seeesp32/README.mdfor 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