免费 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 万参数,推理速度快
- 音质优秀:媲美大型商业模型
- 多语言支持:英文(美式/英式)、中文(普通话)
- 多种音色:20+ 种英文音色、8 种中文音色
- 中英混合:支持在中文文本中插入英文单词
- 时间戳支持:可返回每句话的时间戳,适合字幕生成
- 完全免费:Apache 许可证,可商用
部署方案
方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| Docker 本地部署(本文) | 完全免费、数据隐私、可离线使用 | 需要本地算力 |
| HuggingFace API | 无需部署、即开即用 | 需要网络、有调用限制 |
| 商业 API | 稳定性高、效果有保障 | 按量付费、成本较高 |
为什么选择 Docker 部署?
- 完全免费:无 API 调用费用
- 数据隐私:文本和音频都在本地处理
- 可离线使用:部署后无需网络连接
- 易于扩展:可集成到现有系统中
快速部署
环境要求
- Docker 和 Docker Compose
- 约 2GB 磁盘空间(模型文件)
- 4GB+ 内存(推荐 8GB)
一键部署
# 1. 克隆项目
git clone https://gitee.com/chenjim/tts-hexgrad-kokoro
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 测试脚本
├── models/ # 模型文件目录
│ ├── kokoro-v1_0.pth # Kokoro 主模型
│ └── voices/ # 音色文件
└── tmp/ # 临时文件目录
核心特性:基于 FastAPI 框架提供 RESTful API 接口,支持:
/tts- 基础文本转语音/dialogue- 双音色对话合成/dialogue/timestamps- 带时间戳的对话合成/voices- 获取可用音色列表/health- 健康检查
功能演示
1. 基础文本转语音
英文示例:
curl -X POST http://localhost:18765/tts \
-H "Content-Type: application/json" \
-d '{"text": "Hello world", "voice": "af_heart", "format": "mp3"}' \
-o output.mp3
中文示例:
curl -X POST http://localhost:18765/tts \
-H "Content-Type: application/json" \
-d '{"text": "你好世界", "voice": "zf_xiaoxiao", "lang_code": "z", "format": "mp3"}' \
-o output.mp3
2. 中英混合
curl -X POST http://localhost:18765/tts \
-H "Content-Type: application/json" \
-d '{
"text": "人工智能 AI 正在改变世界。Machine Learning 技术发展迅速。",
"voice": "zf_xiaoxiao",
"lang_code": "z",
"format": "mp3"
}' \
-o output.mp3
3. 时间戳分段
适合生成字幕:
curl -X POST http://localhost:18765/tts \
-H "Content-Type: application/json" \
-d '{
"text": "第一句话。第二句话。",
"voice": "zf_xiaoxiao",
"lang_code": "z",
"return_timestamps": true
}'
返回:
{
"segments": [
{"index": 0, "text": "第一句话。", "startTime": 0, "endTime": 3675},
{"index": 1, "text": "第二句话。", "startTime": 3675, "endTime": 7275}
]
}
4. 双音色对话
支持 [A] [B] 标记实现对话效果:
curl -X POST http://localhost:18765/dialogue \
-H "Content-Type: application/json" \
-d '{
"text": "[A] 你今天过得怎么样? [B] 我今天过得很开心!",
"voice_a": "zf_xiaoxiao",
"voice_b": "zm_yunxi",
"lang_code": "z"
}' \
-o dialogue.mp3
性能测试
基于 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 部署,你可以快速搭建一个免费的、高质量的语音合成服务,完全掌控自己的数据。
参考资源
本文基于 Kokoro-82M v1.0 版本撰写,部署方案已针对国内网络环境优化。
本文链接:免费 TTS 方案:国内基于 Docker 部署 Kokoro - https://h89.cn/archives/528.html
版权声明:原创文章 遵循 CC 4.0 BY-SA 版权协议,转载请附上原文链接和本声明。