The model files are fetched from a v1.0.0 URL
A CLI text-to-speech tool using the Kokoro model, supporting multiple languages, voices (with blending), and various input formats including EPUB books and PDF documents.
At a glance
- What is it?
- kokoro-tts is a command line text-to-speech tool built on the Kokoro model, with voice blending, chapter splitting and EPUB or PDF input. Its setup instructions point at release URLs tagged v1.0.0 even though the tool itself is published in the 2.3 line.
- Who is it for?
- kokoro-tts suits someone producing audiobooks or spoken versions of documents from a command line, who has a GPU or patience for CPU inference and will download the model files by hand. It does not suit a Python 3.13 environment, and it is not a desktop application of any kind.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 50 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A v1.0.0 download URL inside a 2.3 tool
The install steps are four methods and one detail that does not obviously belong. After installation, the required model files have to be downloaded into the working directory, and the URLs given are tagged v1.0.0:
wget https://github.com/nazdridoy/kokoro-tts/releases/download/v1.0.0/voices-v1.0.bin
wget https://github.com/nazdridoy/kokoro-tts/releases/download/v1.0.0/kokoro-v1.0.onnxThe tool is published as version 2.3.2, so a reader has to decide whether the model and voice files track the tool version or not. The file names carry their own version, voices-v1.0.bin and kokoro-v1.0.onnx, so the assets carry their own version independent of the tool, and the URLs have not been reissued since, and the note after the commands is the important one: the script requires both files to be present in the same directory where you run the kokoro-tts command. So this is not a one-time setup step you can forget, it is a property of where you run the tool from, and a scheduled job that changes directory will fail to find its model.
Python 3.13 is named as unsupported
The prerequisites section is one line and it draws a boundary: Python 3.11 to 3.12, with the parenthesis stating that Python 3.13 and newer are not currently supported. That is worth pausing on in 2026, because the newest Python is well past 3.12 and the usual assumption is that a current tool works on a current interpreter. Here the tool is pinned below it, which means anyone on a recent runtime has to install an older one, which in turn means a virtual environment manager rather than a system interpreter. The TODO list gives a second signal about where the project is: GPU support and PDF support are both checked off, while Add GUI is the one item left open. So the tool is deliberately terminal-first, and the project is tracking versions forward on the interpreter question more slowly than the ecosystem is moving.
Four install methods, and uv is recommended in each
Installation is documented four ways and the preference is the same every time. The shortest is from PyPI, where uv tool install kokoro-tts is marked recommended and pip install kokoro-tts is the alternative, after which kokoro-tts --help verifies it. The second is from the Git repository, with uv tool install taking the git URL or pip install taking the same URL. The third is a local editable install: clone, then uv venv and uv pip install -e ., or python -m venv .venv, activate it and run pip install -e ., with the Windows activation path spelled out separately. The fourth runs without installing the package at all, where the difference is that you install dependencies only, uv sync or pip install -r requirements.txt, and invoke the module directly with uv run -m kokoro_tts or python -m kokoro_tts. That last path is what you want in a container or a throwaway environment, since nothing lands in site-packages and the command name is the module name.
Voice blending is the feature the others serve
The feature list is eleven items and one of them is the differentiator: voice blending with customizable weights. Everything else in the list makes that usable. Multiple language and voice support gives you the palette, and blending lets you mix voices with weights rather than picking one, which is what turns a text-to-speech tool into something that can hold a narrator's voice across a long book without every chapter sounding identical. The input side is broader than the usual: EPUB, PDF and TXT file input, plus standard input and pipe support from other programs, so the tool sits in a shell pipeline rather than only in a file chooser. The output side is a WAV and MP3 choice, adjustable speech speed, streaming audio playback, and two chapter operations, splitting output into chapters and merging chapters back together. Streaming playback and detailed debug output round it out, and GPU support is listed as a feature with a matching entry in the TODO list marked complete.
Chapters are a first-class unit of output
Two of the eleven features are about chapters rather than audio, and they are related. Splitting output into chapters is what makes a long document usable as an audiobook, since a whole book in one file is hard to navigate and impossible to resume. Merging chapters is the inverse, for when you have produced per-chapter files and want a single deliverable. Neither feature is described in terms of how chapter boundaries are detected, so it is not possible to tell from the documentation whether a heading in the EPUB is required, whether the split is by input file structure, or whether it is a manual step. That gap matters more than it sounds for the use cases named in the topic tags, since audiobook, podcast and document narration all depend on where a chapter starts and ends being predictable. The debug output option is the tool you would reach for to answer that question, which is the one place the documentation offers a way to find out.
The demo describes a studio, the tool is a command
The demo section is worth reading for tone as much as content. Kokoro TTS is described as an open-source CLI tool that delivers high-quality text-to-speech straight from the terminal, with the framing of a personal voice studio capable of turning any text into natural-sounding speech with minimal effort. Two sample recordings are published, one MP3 and one WAV, linked from the repository, and a short screen recording shows the interface. What the demo does not show is any of the configuration surface: which voices exist, what the blending weights look like in practice, or how a chapter split is configured. The repository's homepage points at the Kokoro model itself on Hugging Face rather than at a documentation site, so the model's own page is where the voice list and model card live, and this repository is the wrapper around it.
Where kokoro-tts is the wrong tool
Four cases. The first is a Python 3.13 environment. The prerequisite names 3.11 to 3.12 and says 3.13 and newer are not currently supported, so adopting means pinning an older interpreter and carrying a virtual environment with it. The second is anyone wanting a desktop interface, since the only open item on the TODO list is Add GUI, and a terminal tool with an --help is the whole surface. The third is a pipeline that cannot download model files. The voices and model binaries are fetched with wget into the directory you run from, so an air-gapped or restricted environment needs someone to carry those two files in, and any scheduled job that changes directory loses them. The fourth is commercial narration at scale. This is a CLI wrapper around a model published under its own terms on Hugging Face, with no batching interface, no queue, and no documentation of throughput on CPU, so a person who needs forty hours of finished audio has to measure the inference rate themselves before committing to it.
Editorial conclusion
kokoro-tts suits someone producing audiobooks or spoken versions of documents from a command line, who has a GPU or patience for CPU inference and will download the model files by hand. It does not suit a Python 3.13 environment, and it is not a desktop application of any kind. Before adopting, install with uv tool install kokoro-tts, download voices-v1.0.bin and kokoro-v1.0.onnx into the directory you will run the command from, and check that the model version lines up with the tool version you installed.
Frequently asked questions
How do I install kokoro-tts?
The recommended route is uv tool install kokoro-tts, with pip install kokoro-tts as the alternative. Installing from Git, a local editable install and a no-install run using python -m kokoro_tts are also documented, and uv is preferred in every one of them.
Which Python versions does kokoro-tts support?
Python 3.11 to 3.12. The prerequisites state that Python 3.13 and newer are not currently supported, so a newer interpreter means pinning an older one.
Where do the model files come from?
They are downloaded separately into the directory you run from: voices-v1.0.bin and kokoro-v1.0.onnx, fetched with wget from release URLs tagged v1.0.0. Both files must be present in the same directory as the command.
What input formats does kokoro-tts accept?
EPUB, PDF and TXT files, plus standard input and piping from other programs. Output can be WAV or MP3, with adjustable speech speed, streaming playback, and splitting output into chapters or merging chapters back together.
Does kokoro-tts support GPUs?
GPU support is listed as a feature and the matching TODO entry is marked complete. There is no GUI, which is the one TODO item still open.