免费 TTS 方案:国内基于 Docker 部署 Kokoro
免费 TTS 方案:国内基于 Docker 部署 Kokoro
本文首发地址 https://h89.cn/archives/528.html
项目方案地址 https://gitee.com/chenjim/tts-hexgrad-kokoro
一款开源、高质量、支持多语言的文本转语音服务,完全免费,可本地部署。
前言
在 AI 语音合成领域,商业 API(如 Azure、AWS Polly)虽然效果出色,但成本较高。而开源方案中,Kokoro-82M 以其轻量级(仅 8200 万参数)和高质量脱颖而出,成为个人开发者和中小企业的理想选择。
本文将详细介绍如何在国内网络环境下,使用 Docker 快速部署 Kokoro TTS 服务。
Kokoro 简介
Kokoro-82M 是由 hexgrad 开发的开源 TTS 模型,具有以下特点:
- 轻量高效:8200 万参数,推理速度快
- 音质优秀:媲美大型商业模型
- 多语言支持:英文(美式/英式)、中文(普通话)、西班牙语、法语、印地语、意大利语、日语、葡萄牙语
- 多种音色:50+ 种音色,涵盖多种语言和性别
- 中英混合:支持在中文文本中插入英文单词
- 时间戳支持:可返回每句话的时间戳,适合字幕生成
- 完全免费:Apache 许可证,可商用
部署方案
方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| Docker 本地部署(本文) | 完全免费、数据隐私、可离线使用 | 需要本地算力 |
| HuggingFace API | 无需部署、即开即用 | 需要网络、有调用限制 |
| 商业 API | 稳定性高、效果有保障 | 按量付费、成本较高 |
为什么选择 Docker 部署?
- 完全免费:无 API 调用费用
- 数据隐私:文本和音频都在本地处理
- 可离线使用:部署后无需网络连接
- 易于扩展:可集成到现有系统中
跟 EmotiVoice、Piper 的对比
如果你也在看开源 TTS,Kokoro、网易 EmotiVoice、Piper 这三类方案的定位其实不太一样:
| 方案 | 主要特点 | 部署门槛 | 中文能力 | 适合场景 |
|---|---|---|---|---|
| Kokoro | 轻量、音质好、支持中英混合,本文方案已补好国内镜像和 Docker 部署 | 低,CPU 即可跑通 | 中文可用,适合通用配音 | 本地服务、内容朗读、项目集成 |
| 网易 EmotiVoice | 中英双语、2000+ 音色、支持情感提示控制,提供 Web 界面和 OpenAI 兼容 API | 较高,官方 Docker 体验依赖 NVidia GPU | 中文表现强,情感表达更丰富 | 有声书、角色配音、情绪化语音生成 |
| Piper(OHF-Voice/piper1-gpl) | 本地优先、启动快、提供 CLI/HTTP/Python/C++ API,语言覆盖广 | 低,CPU 友好 | 有中文音色,但效果更依赖具体 voice | 边缘设备、离线播报、Home Assistant 一类场景 |
简单说:
- 如果你想要部署省心、接口直接、中文和英文都能用,Kokoro 是比较均衡的一档。
- 如果你更看重情感控制、音色数量、角色化表达,EmotiVoice 更有优势,但整体环境更重。
- 如果你更看重轻量、本地、跨平台嵌入,Piper 会更合适,尤其适合做系统播报或设备侧 TTS。
- 如果涉及商用,除了效果,也要看许可证:Kokoro 模型是 Apache 2.0、本文项目代码是 MIT;EmotiVoice 是 Apache-2.0;Piper 仓库是 GPL-3.0,而且不同音色模型还要单独确认授权。
安卓、iOS 上能不能直接离线用?
有,但两边成熟度不一样。
- 安卓:有现成可用的离线免费方案。比较实用的是基于 Sherpa-ONNX 的 TTS 引擎,可以走 Piper 一类轻量模型路线;另外 RHVoice 也能直接装成系统 TTS,不过更偏无障碍朗读,中文并不是它的强项。
- iOS:也能离线用,但不像安卓那样方便装一个“系统级第三方 TTS 引擎”。更现实的做法通常有两种:一是直接用 iPhone 自带语音朗读;二是在 App 内集成离线引擎。
- 如果你是普通用户:安卓优先看 SherpaTTS 这类现成方案;iPhone 直接用系统自带朗读,门槛最低。
- 如果你是开发者:想同时覆盖安卓和 iOS,Sherpa-ONNX 这条路线更实用,它本身支持 Android、iOS 离线运行,也能接 Kokoro、Piper 这类模型。
- 如果你问 EmotiVoice 能不能直接上手机离线跑:不算它的强项。它更适合桌面端或服务端,移动端“开箱即用”程度不如 Piper / Sherpa-ONNX 这类方案。
快速部署
环境要求
- Docker 和 Docker Compose
- 约 2GB 磁盘空间(模型文件)
- 4GB+ 内存(推荐 8GB)
一键部署
# 1. 克隆项目
git clone https://gitee.com/chenjim/tts-hexgrad-kokoro.git
cd tts-hexgrad-kokoro
# 2. 运行自动部署脚本
./setup.sh
脚本会自动完成:
- 下载 Kokoro-82M 主模型(313MB)
- 下载配置文件和音色文件
- 下载 spaCy 英文模型(13MB)
- 构建 Docker 镜像
- 启动服务并进行健康检查
国内镜像加速
针对国内网络环境,本项目已内置镜像加速:
- Docker 镜像:使用
docker.1ms.run镜像源 - apt 源:阿里云 Debian 镜像
- pip 源:阿里云 PyPI 镜像
- 模型下载:使用
hf-mirror.com镜像站
无需额外配置,开箱即用。
项目结构
.
├── setup.sh # 自动部署脚本
├── Dockerfile # Docker 镜像定义
├── docker-compose.yml # Docker Compose 配置
├── main.py # FastAPI 服务主程序
├── test.py # Python 测试脚本
├── README.md # 项目文档
├── models/ # 模型文件目录
│ ├── kokoro-v1_0.pth # Kokoro 主模型
│ └── voices/ # 音色文件(50+ 种)
└── tmp/ # 临时文件目录
核心特性:基于 FastAPI 框架提供 RESTful API 接口,支持:
/tts- 文本转语音(支持分句分段)/voices- 获取可用音色列表/health- 健康检查
功能演示
1. 基础文本转语音
调用 API(返回 JSON):
curl -X POST http://localhost:18765/tts \
-H "Content-Type: application/json" \
-d '{"text": "Hello world", "voice": "af_heart", "format": "mp3"}'
保存音频文件:
curl -s -X POST http://localhost:18765/tts \
-H "Content-Type: application/json" \
-d '{"text": "Hello world", "voice": "af_heart", "format": "mp3"}' \
| python3 -c "import sys,json,base64; d=json.load(sys.stdin); open('output.mp3','wb').write(base64.b64decode(d['segments'][0]['audio_base64']))"
2. 中文语音
curl -X POST http://localhost:18765/tts \
-H "Content-Type: application/json" \
-d '{"text": "你好世界", "voice": "zf_xiaoxiao", "lang_code": "z"}'
3. 中英混合
curl -X POST http://localhost:18765/tts \
-H "Content-Type: application/json" \
-d '{"text": "人工智能 AI 正在改变世界", "voice": "zf_xiaoxiao", "lang_code": "z"}'
4. 时间戳分段
适合生成字幕,设置 split_sentence: true:
curl -X POST http://localhost:18765/tts \
-H "Content-Type: application/json" \
-d '{"text": "第一句话。第二句话。", "voice": "zf_xiaoxiao", "lang_code": "z", "split_sentence": true}'
返回格式:
{
"duration_ms": 7275,
"format": "mp3",
"voice": "zf_xiaoxiao",
"segments": [
{"text": "第一句话。", "startTime": 0, "endTime": 3675, "audio_base64": "..."},
{"text": "第二句话。", "startTime": 3675, "endTime": 7275, "audio_base64": "..."}
]
}
性能测试
基于 Intel CPU(无 GPU)的测试结果:
| 语言 | 文本长度 | 音频时长 | 生成时间 | 文件大小 |
|---|---|---|---|---|
| 英文 | 85 词 | 27.3 秒 | 9.2 秒 | 546 KB |
| 中文 | 100 字 | 21.9 秒 | 8.3 秒 | 438 KB |
结论:CPU 即可流畅运行,无需 GPU。
可用音色
中文音色(推荐 xiaoxiao)
女声:
zf_xiaoxiao- 小晓(推荐,自然流畅)zf_xiaoni- 小妮zf_xiaobei- 小贝zf_xiaoyi- 小怡
男声:
zm_yunxi- 云溪zm_yunyang- 云扬zm_yunjian- 云健zm_yunxia- 云霞
英文音色(美式)
女声(推荐 af_heart):
af_heart- Heart(A 级,情感丰富)af_bella- Bella(A- 级,稳定性好)af_nicole- Nicole(B- 级,适合长文本)
男声:
am_michael- Michael(C+ 级,男声最佳)am_fenrir- Fenrir(C+ 级)am_puck- Puck(C+ 级)
应用场景
- 有声读物:将电子书转换为有声书
- 视频配音:为短视频、课件生成配音
- 智能客服:语音交互系统
- 辅助阅读:帮助视障人士阅读文字
- 语言学习:发音练习、听力训练
总结
Kokoro-82M 是一款性价比极高的开源 TTS 方案,特别适合:
- 预算有限的个人开发者
- 注重数据隐私的企业
- 需要离线部署的场景
- 对多语言支持有需求的用户
- 对中英文混合支持有需求的用户
通过 Docker 部署,你可以快速搭建一个免费的、高质量的语音合成服务,完全掌控自己的数据。
请求参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
text |
string | 必填 | 要转换的文本 |
voice |
string | af_heart |
音色名称 |
speed |
float | 1.0 |
语速(0.5-2.0) |
lang_code |
string | a |
语言代码 |
format |
string | mp3 |
输出格式(mp3/wav) |
split_sentence |
boolean | false |
是否分句分段 |
语言代码
a- 美式英语 (American English)b- 英式英语 (British English)z- 普通话 (Mandarin Chinese)e- 西班牙语 (Spanish)f- 法语 (French)h- 印地语 (Hindi)i- 意大利语 (Italian)j- 日语 (Japanese)p- 葡萄牙语 (Portuguese)
技术栈
- TTS 模型:Kokoro-82M (hexgrad)
- Web 框架:FastAPI + Uvicorn
- 音频处理:soundfile + ffmpeg
- 文本处理:misaki (G2P), spaCy (英文), pypinyin (中文)
- 容器化:Docker + Docker Compose
故障排查
服务无响应
# 查看容器日志
docker logs tts-hexgrad-kokoro-kokoro-1
# 检查容器状态
docker ps | grep kokoro
# 重启服务
docker-compose restart
中文语音失败
确保已安装中文依赖:
docker exec tts-hexgrad-kokoro-kokoro-1 pip list | grep -E "pypinyin|jieba|ordered-set"
模型下载问题
setup.sh 已内置国内镜像加速,默认使用 hf-mirror.com 和阿里云 apt/pip 源。
检查文件:
# 主模型应为 313MB
ls -lh models/kokoro-v1_0.pth
# 查看已下载的音色
ls -lh models/voices/
开发说明
修改代码
由于 main.py 是通过 volume 挂载的,修改后只需重启容器:
docker-compose restart kokoro
重新构建镜像
docker-compose build --no-cache kokoro
docker-compose up -d
许可证
- Kokoro 模型:Apache 2.0 License,参见 hexgrad/Kokoro-82M
- 本项目代码:MIT License
参考资源
- Kokoro-82M 官方仓库
- Kokoro GitHub
- Misaki G2P
- 网易有道 EmotiVoice
- OHF-Voice Piper
- Sherpa-ONNX
- RHVoice
- Apple Speech Synthesis
本文基于 Kokoro-82M v1.0 版本撰写,部署方案已针对国内网络环境优化。
本文链接:免费 TTS 方案:国内基于 Docker 部署 Kokoro - https://h89.cn/archives/528.html
版权声明:原创文章 遵循 CC 4.0 BY-SA 版权协议,转载请附上原文链接和本声明。