Leokani-tts 7M: Tiny TTS Now Runs on an ESP32

Introduction
Milliwatt Labs has turned Leokani-tts 7M, its tiny English text-to-speech model, into something you can drop almost anywhere. The open weights are on Hugging Face under CC BY-NC 4.0. Over the last two days the team added a browser demo Space, an ESP32-P4 build that speaks at 1.1x real time on a 360 MHz microcontroller, and, as of today, a bundled phonemizer called Leokani G2P so the model no longer needs espeak-ng.
The whole voice is 7 million parameters. That is a 28 MB fp32 file, 14 MB in fp16, or 7.8 MB as int8 ONNX. For comparison, Kokoro-82M is 328 MB and Kyutai's Pocket TTS is 226 MB.
What Shipped
- Model: Leokani-tts 7M (version 1.1) by Milliwatt Labs, released October 29 on the Milliwatt Labs model page.
- Voice: one female American English voice, trained on synthetic speech generated by Kokoro-82M.
- Audio: 24 kHz mono.
- Formats: PyTorch safetensors (fp32 and fp16) plus ONNX in fp32, fp16 and int8. The card says int8 rated the same as full precision in blind listening tests.
- New this weekend: the browser Space (October 31), the ESP32-P4 port (October 31) and Leokani G2P bundled into the repo (November 2).
- License: the TTS weights are CC BY-NC 4.0, so non-commercial only. Leokani G2P is separate: MIT code with CC BY 4.0 weights and lexicon.
- Watermark: every output carries an inaudible watermark that lets Milliwatt Labs recognize its audio. The card says the mark holds no information about you or your text.
The Numbers
Milliwatt Labs benchmarks everything on one thread. These are the card's figures, not ours.
- Mac M3 Pro, one thread: 90x real time, 50 ms to first speech.
- One Arm Cortex-A725 core (Raspberry Pi class): 25x real time, 190 ms to first speech.
- Quality: 0.07% word error rate (Whisper large-v3 as judge) and a UTMOSv2 score of 3.53. Kokoro-82M scores 3.76 and Piper 3.77 on the same test, so Leokani trades a little naturalness for a huge speed and size win.
- Apps and devices: 296x on the native Mac app, 101x on an iPhone 17 Pro Max, 20.6x on a $50 Android phone, 11.5x on a Raspberry Pi CM4, and 1.1x on an ESP32-P4.
- GPU: on an NVIDIA DGX Spark it batches at 4,043x real time, roughly an hour of speech per second, at 0.36 joules per minute of speech.
On our own test box, an 8-core Linux VM with no GPU, the ONNX script with --g2p leokani rendered the 9.2-second lighthouse sample line in 0.84 seconds, and that includes Python startup and model loading. The output was a clean 24 kHz file with no espeak-ng installed.
How to Run It
The easiest test is the browser Space, which runs the model locally in JavaScript so your text never leaves your device. For local use, the ONNX path needs only two packages:
hf download milliwattlabs/leokani-tts-7M --local-dir leokani-tts
cd leokani-tts
pip install onnxruntime numpy
python leokani_onnx.py "Hello there. How was your day?" --g2p leokani -o hello.wav
python leokani_onnx.py --int8 "Same voice, the smallest file." --g2p leokani -o int8.wavThe PyTorch script leokani.py also takes --speed 0.85 for slower delivery and --fp16 for the half-size weights.
Milliwatt Labs also ships ready-made builds from its model page: a Mac app, a command-line tool with an MCP server for AI assistants, an Android app that can act as the phone's system voice, Linux and Raspberry Pi installers, a JavaScript package, and Docker images that expose a Wyoming server and an OpenAI-compatible speech API. Home Assistant users can add the Milliwatt Labs add-on repository and install it as an app.
Pro Tip
Write numbers and money out in words. The card notes that "$219" is read as "dollar two hundred nineteen", while "219 dollars" comes out right. Unusual names can also trip the phonemizer, so test any proper nouns your project depends on.
Where It Fits
Leokani is not an expressive voice. It has one neutral, home-assistant style voice in English only, with no cloning and no emotion control. Its pitch is reach: a clear voice that fits in a microcontroller, a cheap phone or a browser tab, with first audio in tens of milliseconds. That makes it a strong pick for offline assistants, smart-home announcements, accessibility readers and hardware prototypes.
If you want a voice you can direct, look at a model like Silencio-2 instead. If you need commercial rights, note that Leokani's weights are non-commercial; Milliwatt Labs offers commercial licenses and custom voices through hello@milliwattlabs.com.
Conclusion
Leokani-tts 7M reads dates, names and long sentences cleanly, runs on a microcontroller, and now installs without a GPL dependency. If you build small voice devices, it is worth a few minutes in the browser demo.
—Anabel ♡
