kokoro-tts
pip install 即用的本地多语言 TTS 工具,支持 EPUB/PDF 有声书制作和 40+
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
pip install 即用的本地多语言 TTS 工具,支持 EPUB/PDF 有声书制作和 40+
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你在通勤路上想"听完"一篇长论文,或者给家里的老人下载一份他们喜欢的历史书籍的朗读版本,但市面上的 TTS 工具要么音质机械、要么只支持英文、要么安装配置麻烦得让人头疼。
Kokoro TTS 就是为解决这些问题而生的。这是一个完全运行在终端(CLI)的文本转语音工具,基于开源的 Kokoro-82M ONNX 模型,支持中、英、日、法、意等多语言,提供 40+ 预制音色,并能自由混合两个音色的权重来创造独特嗓音。最关键的是——安装只需一条命令,模型下载后即可直接使用。

图1:Kokoro TTS 命令行运行界面,支持多种语言和音色选择
Kokoro TTS 并非凭空造轮子,而是基于 hexgrad/Kokoro-82M 模型(发布于 Hugging Face)的官方推理实现。Kokoro-82M 是一个参数量为 8200 万的 ONNX 格式语音合成模型,由开发者 Nazmul Hossain(GitHub @nazdridoy)封装为 Python CLI 工具。相比动辄数 GB 的主流 TTS 模型,82M 参数量在保持高质量的同时大幅降低了部署门槛——整个模型文件约 1.5GB,在消费级 GPU 或纯 CPU 上均可运行。
项目采用 MIT 开源许可证,目前处于 Beta 阶段(v2.3.1),GitHub 已有超过 1585 颗星,topics 涵盖 kokoro-tts、tts、audiobook、epub、pdf、podcast 等,反映出其核心定位:把任意文本内容转化为自然流畅的语音输出。
Kokoro TTS 支持 7 种语言(en-us、en-gb、fr-fr、it、ja、cmn),提供 40+ 预制音色,分为不同性别和风格:
Kokoro TTS 的亮点功能之一是音色混合(Voice Blending)。用户可以用权重比例混合两个音色:
kokoro-tts input.txt --voice "af_sarah:60,am_adam:40" # 60% 女性音色 + 40% 男性音色
这意味着即使预制音色有限,也可以通过组合创造出更具个性或更符合特定场景的声音。
与大多数只接受纯文本的 TTS 工具不同,Kokoro TTS 原生支持 EPUB 电子书和 PDF 文档:
ebooklib 库解析 epub 结构,自动按章节提取文本,配合 --split-output 参数可按章节分割生成音频文件PyMuPDF 和 pymupdf4llm 提取文本内容,同样支持章节级分割这使得制作整本有声书从"需要写爬虫处理格式"变成"一条命令搞定"。
Kokoro TTS 支持 --stream 参数,直接将生成的音频流式输出到系统音频设备播放,无需等待整本书转换完成。这对快速预览某个音色或文本片段的合成效果非常实用。
项目代码高度集中:整个功能实现仅有 kokoro_tts/__init__.py 一个文件(约 58KB),__main__.py 仅作为入口点调用主模块的 main() 函数。这种设计减少了包管理的复杂度,也便于用户快速理解核心逻辑。
主模块包含以下核心功能模块:
| 函数 | 职责 |
|---|---|
check_required_files() | 检查 kokoro-v1.0.onnx 模型文件和 voices-v1.0.bin 音色包是否存在,缺失则打印下载命令 |
extract_text_from_epub() | 调用 ebooklib + BeautifulSoup 解析 epub 文档内容 |
chunk_text() | 智能文本分块:按句子边界切分,单句过长时按词拆分,初始块大小 1000 字符 |
validate_language() | 调用 Kokoro 模型获取支持语言列表并验证输入 |
spinning_wheel() | 旋转加载动画,提供处理进度反馈 |
| 流式音频输出 | 通过 sounddevice 实时播放,通过 soundfile 保存 WAV,通过 pydub/ffmpeg 导出 MP3 |
核心依赖非常精简:
kokoro-onnx==0.3.9:ONNX Runtime 推理引擎封装ebooklib:EPUB 解析PyMuPDF(含 layout、pymupdf4llm):PDF 提取beautifulsoup4:HTML/XML 解析sounddevice + soundfile:音频 I/O所有依赖均可通过 PyPI 一键安装,无 C/C++ 扩展编译需求。
Kokoro 模型以 ONNX 格式发布,这意味着:
| 方式 | 命令 | 适用场景 |
|---|---|---|
| PyPI 推荐 | uv tool install kokoro-tts 或 pip install kokoro-tts | 日常使用,最简洁 |
| Git 直接安装 | pip install git+https://github.com/nazdridoy/kokoro-tts | 获取最新开发版 |
| 本地克隆 | git clone && uv pip install -e . | 开发调试 |
| 无安装运行 | uv run -m kokoro_tts | 临时使用,无需污染环境 |
安装完成后,还需手动下载两个模型文件(约 1.5GB):
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.onnx
需要注意:Python 版本限制为 3.11-3.12,Python 3.13 暂不支持。这是由于 kokoro-onnx 依赖尚未适配最新版 Python。
当前项目没有提供 Dockerfile 或 docker-compose.yml,对于习惯容器化部署的用户来说略有遗憾。但由于:
手动 Docker 化仅需约 10 行 Dockerfile 即可轻松实现一键部署。
Python 3.13 用户无法使用,需降级到 3.11/3.12。这对追求最新 Python 生态的开发者是个阻碍。
没有在安装脚本中集成模型下载步骤,首次使用需要用户手动 wget 两个模型文件(约 1.5GB),对非技术用户有一定门槛。
README 的 TODO 列表中明确提到"Add GUI",但目前只有 CLI。对于不熟悉命令行的用户,上手成本较高。
chunk_text() 函数使用固定 1000 字符的句子级分块,对于极长的 PDF 文档(如数百页的技术书籍),分块边界可能导致段落语义断裂,影响合成的连贯性。
--split-output 按章节分割,适合上传到播客平台--speed 参数)和音色练习听力Kokoro TTS 是一款定位清晰的 本地 CLI 语音合成工具,以极简的安装方式、丰富的多语言音色支持和灵活的 EPUB/PDF 处理能力,在开源 TTS 工具中找到了自己的生态位。它不是要取代商用级 TTS 服务,而是在"本地"、"开源"、"免费"三角约束下做到最优。对于需要将大量文本内容转化为语音的开发者、内容创作者和教育从业者,这是一款值得加入工具箱的实用利器。
项目信息:nazdridoy/kokoro-tts | 1585★ | MIT License | Python 3.11-3.12 | ONNX TTS