Leokani-tts 7M

Leokani-tts is a fast English text-to-speech model: high-quality speech in a tiny model for any CPU, no GPU needed. It speaks in one female American English voice, which in this release was trained on a corpus of synthetic speech generated by Kokoro-82M. The name is Hawaiian: leo (voice) and kani (sound).

Leokani-tts is from Milliwatt Labs: AI measured in milliwatts, not megawatts. We build small, efficient models that run on the devices you already own, with no data center and no GPU.

Everything else is on milliwattlabs.com, free, with docs:

  • Try it in your browser: the model page runs Leokani locally in JavaScript; your text never leaves your device.
  • Mac app and a command-line tool with an MCP server for AI assistants.
  • Android app, which also works as the phone's system text-to-speech voice.
  • Linux and Raspberry Pi command-line tool (x86_64 and ARM64).
  • Home Assistant: a local Wyoming voice server, plus an OpenAI-compatible speech API, in Docker (amd64 and arm64).
  • JavaScript library for browsers and Node.js, and Python with ONNX Runtime or PyTorch (the files in this repo).

Samples

Text Audio
Hello! I'm a small text-to-speech model, and I run on an ordinary computer.
That sounds like a great plan! Let me know how it goes, and good luck tomorrow.
Did you remember to water the tomatoes before the rain started?
Your flight leaves on March 14th at 7:45 AM, and the fare is 219 dollars.
The trail is 4.2 miles long, climbs about 1,200 feet, and takes around 3 hours.
Maria Gonzalez and Hiroshi Tanaka are meeting Dr. Okafor in Minneapolis on Friday.
The old lighthouse stood at the edge of the bay for more than a century, and every evening the keeper climbed one hundred and twelve steps to light the lamp.
Sure, no problem.

Usage

hf download milliwattlabs/leokani-tts-7M --local-dir leokani-tts
cd leokani-tts
pip install -r requirements.txt                      # torch, safetensors

python leokani.py "Hello there. How was your day?" -o hello.wav
python leokani.py "A little slower, please." --speed 0.85 -o slow.wav
python leokani.py --fp16 "Same voice, half-size weights." -o fp16.wav

Leokani-tts needs espeak-ng to turn text into phonemes. espeak-ng is a separate dependency under GPL-3.0, and it is not included here. Install it with brew install espeak-ng (macOS) or sudo apt install espeak-ng (Debian/Ubuntu), or point to it with --espeak PATH. To skip it, pass Kokoro-style phonemes with --phonemes "...".

Usage (ONNX)

pip install onnxruntime
python leokani_onnx.py "Hello there. How was your day?" -o hello.wav
python leokani_onnx.py --int8 "Same voice, the smallest file." -o int8.wav

INT8: ~half the size of FP16; rated the same as full precision in blind listening tests.

Specs

7.0M parameters · 28 MB (fp32) or 14 MB (fp16) safetensors · leokani-tts.onnx (fp32), leokani-tts-fp16.onnx (fp16) and leokani-tts-int8.onnx (int8, 7.8 MB) · 24 kHz mono output.

On every platform

Leokani-tts 7M on every platform

Platform Device Speed First speech
Mac M3 Pro (native app) 296× 19 ms
iPhone 17 Pro Max 101× 64 ms
Browser Chrome on Mac 97× 64 ms
Linux server 1 vCPU VPS 36× 91 ms
Android moto g play 2024 ($50) 20.6× 234 ms
Raspberry Pi CM4, 4 cores 11.5× 440 ms
GPU DGX Spark (GB10), many lines at once 4,043× 9 ms

Speed = seconds of speech per second of compute. First speech = time to the first audio of a line, with the voice already loaded. Apps and downloads: milliwattlabs.com.

On a GPU

No GPU is needed, but on one Leokani is very efficient. Same GPU (NVIDIA GB10, DGX Spark), same test, every model:

Same GPU, every model

Model Params × real time, per line × real time, many lines at once GPU J per minute of speech
Leokani-tts 7M 7M 488× 4,043× 0.36
Piper (en_US lessac medium) 15.7M 72× — 3.52
KittenTTS nano 0.8 14M 75× — 6.15
KittenTTS mini 0.8 73M 29× — 9.29
Kokoro-82M 82M 86× — 14.6
Kyutai Pocket TTS 110M 14.1× — 32.1
Chatterbox 798M 2.1× — 430

4,043× real time is about an hour of speech every second. J per minute = GPU energy above idle; the GB10 has no CPU power sensor, so models that do part of their work on the CPU look slightly better than they are. — = no batch mode.

Performance on One Thread

Model Params Size Speed, Mac Speed, 1 Arm core First speech, Mac First speech, 1 Arm core WER UTMOS
Leokani-tts ¹ 7.0M 28 MB 90× 25× 50 ms 190 ms 0.07 % 3.53
KittenTTS nano 0.8 14.0M 60 MB 26× 3.6× 240 ms 1.7 s 0.41 % 2.18
Piper (en_US lessac medium) 15.7M 63 MB 49× 5.6× 86 ms 710 ms 0.90 % 3.77
KittenTTS mini 0.8 73M 82 MB 16× 3.4× 330 ms 1.6 s 0.21 % 2.04
Kokoro-82M 82M 328 MB 7.6× 0.48× 670 ms 11 s 0.35 % 3.76
Kyutai Pocket TTS 110M 226 MB 9.7× 1.2× 34 ms 280 ms 0.35 % 3.25
Chatterbox 798M 3.2 GB 0.28× 0.028× 15 s 150 s 0.55 % 3.36

¹ PyTorch on one thread, like every row here; the apps run faster (see On every platform). The ONNX version gives the same output, within 1 % of this speed on the Arm core and 4 % on the Mac.

On an iPhone 17 Pro Max (Core ML, Neural Engine), Leokani-tts renders the 8 sample lines at 101× real time, 64 ms per line (median, the whole line). Kokoro-82M on the same phone takes 308 ms to its first audio chunk (median).

Speed = seconds of speech per second of compute; first speech = median time to first audio over 20 sentences. Mac: M3 Pro CPU; Arm: one 2.8 GHz Cortex-A725 core (Raspberry Pi-class). WER (Whisper large-v3), UTMOSv2: 120 sentences.

Limitations

  • One voice, English only.
  • Pronunciation follows espeak-ng, so unusual names may be misread. Some symbols are read literally ("$219" becomes "dollar two hundred nineteen"), so write amounts out ("219 dollars").
  • Delivery is neutral, intended for a home-assistant style of inflection.

Acceptable use

Don't use Leokani-tts, or speech made with it, to:

  • impersonate a real person, or make it sound like someone said something they didn't, without their consent;
  • deceive or defraud people, including scams, phishing calls and fake emergency or official messages;
  • harass, threaten or bully anyone, or produce hateful or sexual content involving minors;
  • spread disinformation, including fake news audio or election-related deception;
  • break any law, including privacy, consumer-protection and robocall rules.

Tell people when speech is synthetic wherever the law requires it or they could reasonably be misled. You are responsible for what you make with the model. These terms come in addition to the license.

Speech made with Leokani-tts carries an inaudible watermark, built into the model, that lets Milliwatt Labs recognize audio it generated. The mark is the same in all audio and contains no information about you or your text.

License

CC BY-NC 4.0: non-commercial use only (see LICENSE). For a commercial license or a custom voice, email hello@milliwattlabs.com. Training audio data generated from Kokoro-82M by hexgrad, which is licensed under Apache-2.0 (licenses/Kokoro-82M-Apache-2.0.txt).

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support