What Kokoro is
Kokoro-82M is an open text-to-speech model released by its author, hexgrad, on Hugging Face. It is small for its quality: 82 million parameters, built on the StyleTTS 2 and ISTFTNet architectures, with Apache 2.0 weights. Version 1.0 (27 January 2025) has 54 voices in 8 languages, trained on a few hundred hours of audio; the author puts the cost of training both releases at about 1,000 hours on A100 GPUs, around $1,000. It was trained on permissive and non-copyrighted audio only. It speaks at 24 kHz.1
Small means it runs almost anywhere: on a server, on a laptop’s processor, and here, in a browser tab through Transformers.js and ONNX Runtime. audiobook.tools is not affiliated with Kokoro or its author; we use the model under its licence.
The 28 English voices
Kokoro’s voice list grades each voice on the quality of its reference audio (target) and how much of it the model saw in training; the overall grade combines both.2 Higher grades hold up better over long passages. Grades are estimates: play the samples above, since voices sound better or worse to different people.
| Voice | Accent | Overall | Target | Trained on |
|---|---|---|---|---|
Heart af_heart | American female | A | – | not given |
Bella af_bella | American female | A- | A | 10–100 h |
Nicole af_nicole | American female | B- | B | 10–100 h |
Emma bf_emma | British female | B- | B | 10–100 h |
Aoede af_aoede | American female | C+ | B | 1–10 h |
Kore af_kore | American female | C+ | B | 1–10 h |
Sarah af_sarah | American female | C+ | B | 1–10 h |
Michael am_michael | American male | C+ | B | 1–10 h |
Fenrir am_fenrir | American male | C+ | B | 1–10 h |
Puck am_puck | American male | C+ | B | 1–10 h |
Alloy af_alloy | American female | C | B | 10–100 min |
Nova af_nova | American female | C | B | 10–100 min |
Isabella bf_isabella | British female | C | B | 10–100 min |
George bm_george | British male | C | B | 10–100 min |
Fable bm_fable | British male | C | B | 10–100 min |
Sky af_sky | American female | C- | B | 1–10 min |
Lewis bm_lewis | British male | D+ | C | 1–10 h |
Jessica af_jessica | American female | D | C | 10–100 min |
River af_river | American female | D | C | 10–100 min |
Echo am_echo | American male | D | C | 10–100 min |
Eric am_eric | American male | D | C | 10–100 min |
Liam am_liam | American male | D | C | 10–100 min |
Onyx am_onyx | American male | D | C | 10–100 min |
Alice bf_alice | British female | D | C | 10–100 min |
Lily bf_lily | British female | D | C | 10–100 min |
Daniel bm_daniel | British male | D | C | 10–100 min |
Santa am_santa | American male | D- | C | 1–10 min |
Adam am_adam | American male | F+ | D | 1–10 h |
The other 26 voices speak Japanese (5), Mandarin Chinese (8), Spanish (3), French (1), Hindi (4), Italian (2) and Brazilian Portuguese (3). Kokoro’s own notes say support for them “may be absent or thin due to weak G2P and/or lack of training data”.2
Getting the most from it
Length
Kokoro reads best in pieces of about 100 to 200 phonemes: very short lines (a word or two) can sound weak, and very long ones rush.2 This page cuts text at sentences, joins short ones, and splits long ones at commas, so a paragraph of any length lands in that range.
Pauses and rhythm
- Punctuation is the main control: a comma is a short breath, a full stop a longer one; question marks lift the end; an ellipsis trails off.
- A blank line is a paragraph pause (0.6 s, adjustable).
[pause 2s],[pause 500ms]or<break time="2s"/>add silence of that length, up to 10 s. - Speed runs from 0.5× to 2×. Kokoro changes the pace of the speech itself, not the pitch, so slower stays natural.
Numbers, dates and symbols
Before the voice sees your text, numbers, dates, times, money, percentages and common abbreviations are written out the way a narrator says them: “3 March 2026” becomes “the third of March, twenty twenty-six”, “9:30 am” becomes “nine thirty a.m.” (said as letters), “Dr. Hale” becomes “Doctor Hale”, “St. Ives” becomes “Saint Ives”, “$1,250” becomes “one thousand two hundred and fifty dollars”. Try the Numbers example above, then open the take’s phonemes to see what was said.
Pronunciation
Kokoro hears phonemes, not letters. Our phonemizer looks words up in misaki’s dictionaries (Kokoro’s own: about 184,000 American and 197,000 British entries) and works out the rest by rule. When a name comes out wrong, give it its phonemes with [word](/phonemes/). The alphabet is misaki’s, mostly IPA with a few capital letters for diphthongs:3
| Symbol | Sound | Symbol | Sound |
|---|---|---|---|
ˈ ˌ | main and secondary stress, before the vowel | A | “ay” in hey (eɪ) |
ə | “a” in about | I | “igh” in high (aɪ) |
i / ɪ | see / sit | O (US) Q (UK) | “oh” (oʊ / əʊ) |
u / ʊ | flu / wood | W | “ow” in how (aʊ) |
ʌ / ɑ / ɔ | sun / spa / all | Y | “oy” in soy (ɔɪ) |
ɛ / ɜ | bed / her | ʃ ʒ | “sh”, “s” in Asia |
æ (US) a (UK) | “a” in ash | θ ð | thin, than |
ɒ (UK) | “o” in on | ʤ ʧ | jump, chump |
ᵊ | a muted schwa, as in pixel | ŋ ɹ j | sung, red, yes |
ː (UK) | a long vowel | ɾ (US) | the “tt” in butter |
Blends
Each voice is a table of style vectors. Kokoro’s pipeline accepts several voices at once (voice='af_bella,af_sarah') and averages their tables;4 this page does the same with a weight, so 70% Heart and 30% Sarah sounds mostly like Heart with some of Sarah’s colour. Blend voices of one accent: each accent has its own pronunciations.
Where it runs
| Your device | Model (downloaded once) | Speed |
|---|---|---|
| Graphics card (WebGPU: Chrome and Edge on most computers) | full precision, about 327 MB | usually several times faster than real time |
| Processor (WebAssembly: every current browser, phones included) | 8-bit, about 93 MB | on a laptop, about 2–3 seconds of work per second of speech |
Each take shows how long it took and on which. The voice tables are about 0.5 MB each, fetched the first time a voice speaks; the pronunciation dictionary (1.4 MB) comes from this site.
Running Kokoro yourself
The same model runs on your own machine. We ran each route below on Linux in October 2026, on a processor alone; none needs a graphics card.
Python (the reference)
# optional, for a computer without an NVIDIA card: the CPU build of PyTorch (much smaller)
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install "kokoro>=0.9.4" soundfile
# Linux: also the eSpeak NG fallback for words misaki doesn't know
sudo apt-get install espeak-ngfrom kokoro import KPipeline
import soundfile as sf
pipeline = KPipeline(lang_code='a') # 'a' American English, 'b' British
for i, (graphemes, phonemes, audio) in enumerate(pipeline("Hello from Kokoro.", voice='af_heart', speed=1)):
sf.write(f'{i}.wav', audio, 24000)The kokoro package needs Python 3.10, 3.11 or 3.12: on Python 3.13, pip finds only old versions and fails with “No matching distribution found”. A plain pip install brings PyTorch with NVIDIA’s CUDA libraries, 5.9 GB in our test; with the CPU build first it was 1.5 GB. The first run also downloads a small spaCy English model and the voice. On Windows, install eSpeak NG from its .msi; on Apple silicon, run with PYTORCH_ENABLE_MPS_FALLBACK=1 to use the GPU.4
JavaScript (Node or a browser)
npm i kokoro-jsimport { KokoroTTS } from "kokoro-js";
const tts = await KokoroTTS.from_pretrained("onnx-community/Kokoro-82M-v1.0-ONNX", {
dtype: "q8", // "fp32" is best on WebGPU
device: "cpu", // "wasm" or "webgpu" in a browser
});
const audio = await tts.generate("Hello from Kokoro.", { voice: "af_heart" });
audio.save("hello.wav");kokoro-js (Apache 2.0) comes with the same 28 English voices. It turns text into phonemes with eSpeak NG compiled to WebAssembly, through the phonemizer package; eSpeak NG itself is GPL-3.0, which matters if you ship it inside a product.5 This page uses our own phonemizer on misaki’s dictionaries instead.
A local server with an OpenAI-style API
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:latestcurl http://localhost:8880/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"model": "kokoro", "input": "Hello from Kokoro.", "voice": "af_heart", "response_format": "mp3"}' \
-o hello.mp3Kokoro-FastAPI (Apache 2.0, a community project) serves Kokoro at /v1/audio/speech in the same shape as OpenAI’s speech API, so tools that speak to OpenAI can use it, with a web page at http://localhost:8880/web. The CPU image is about 5 GB; a GPU image exists for NVIDIA cards.6 There is also kokoro-onnx (MIT) for Python without PyTorch.
Kokoro and other open voices
| Model | Licence | Runs | Voice cloning |
|---|---|---|---|
| Kokoro-82M | Apache 2.0, commercial use allowed | on your device, browser included | no (blends only) |
| Piper | MIT for the original; GPL-3.0 since development moved to piper1-gpl | on your device, very fast on small computers | no |
| XTTS-v2 (Coqui) | Coqui Public Model License: non-commercial use of the model and its output only | on your device, a GPU helps | yes, from a 6-second clip |
| Chatterbox (Resemble AI) | MIT | on your device, a GPU helps | yes |
| edge-tts | LGPL-3.0 (the client) | sends text to Microsoft Edge’s online speech service | no |
Licences checked on each project’s own repository and model card, October 2026.7 For selling an audiobook, the licence of the model and of its output both matter.
Sources
- hexgrad/Kokoro-82M, model card (Hugging Face)
- Kokoro-82M VOICES.md, voices and grades
- misaki EN_PHONES.md, the English phoneme set
- hexgrad/kokoro, README and
pipeline.py(voice averaging) - kokoro-js README; phonemizer on npm (“Simple text to phones converter using eSpeak NG”)
- remsky/Kokoro-FastAPI README
- piper1-gpl; coqui/XTTS-v2 and its LICENSE.txt; resemble-ai/chatterbox; rany2/edge-tts