Kokoro-82M 是 hexgrad 发布的开源语音合成模型,参数量 8200 万,权重采用 Apache-2.0 许可。它把文本转语音压到消费级显卡甚至纯 CPU 也能跑完的规模,输出 24 kHz 音频,不联网也能用。适合批量配音、离线播报,或者给自建应用补上朗读能力。
Kokoro-82M 能做什么:8 种语言、54 个音色
模型页的发布记录写得很清楚:v1.0 于 2025 年 1 月 27 日发布,含 8 种语言与 54 个音色;上一版 v0.19 在 2024 年 12 月 25 日发布,只有 1 种语言、10 个音色。两版合计用几百小时音频训练,官方给出的总训练开销约 1000 美元。
架构上它沿用 StyleTTS 2 与 ISTFTNet 的解码器思路,只发布解码器,不含扩散模型与编码器。许可是这件事的关键:权重是 Apache-2.0,代码仓库同样用 Apache-2.0,商用不必再单独谈授权。
| 维度 | 情况 |
|---|---|
| 参数量 | 8200 万(82M) |
| 语言 | 英语(美式、英式)、西班牙语、法语、印地语、意大利语、日语、巴西葡萄牙语、普通话 |
| 音色 | 54 个,按语言前缀加性别后缀命名 |
| 输出采样率 | 24 kHz(代码里写作 24000) |
| 许可 | Apache-2.0,权重与代码一致 |
| 换算参考 | 约 1000 字符对应 1 分钟音频;模型页记录 2025 年 4 月的市场 API 价低于每百万字符 1 美元 |
这些数字给了一把粗略的尺子。一万字稿子大约对应 10 分钟音频,本地跑只算电费;走第三方接口,就按上面那条单价估算。模型页显示该模型上月下载量约 1136 万次,代码仓库约 9.9k star,说明它还在被真实使用,而不是一次性热点。
安装与跑通第一段语音
最小安装是 pip 加 soundfile,再加系统级的 espeak-ng。后者用于英语生僻词回退,也用于部分非英语语言的音素转换,缺了它常会出现报错或读错。
- Python 版本按 PyPI 页面的要求是 3.10 到 3.12,超出这个区间装不上。
- 装库:pip install -U "kokoro>=0.9.4" soundfile
- 装 espeak-ng:Debian 与 Ubuntu 用 apt,Windows 下载 官方 .msi 安装包,macOS 用 brew。
代码骨架很短:从 kokoro 导入 KPipeline,用 lang_code 指定语言,'a' 是美式英语,'z' 是普通话;再调用 pipeline(文本, voice='af_heart')。生成器每次返回文本片段、音素和音频数组,采样率固定 24000,用 soundfile 写出即可。仓库 README 的 示例代码可以直接当模板。
非英语语言要另外装音素包:日语装 misaki[ja],普通话装 misaki[zh],音素转换由 misaki 完成。Mac 的 M 系列芯片想走 GPU,启动前设环境变量 PYTORCH_ENABLE_MPS_FALLBACK=1。Windows 上必须用 .msi 装 espeak-ng,光靠 pip 解决不了。

音色怎么挑:命名规则与官方评级
音色名是两字母前缀加一个词。首字母是语言,第二个字母是性别,f 为女声,m 为男声。于是 af_heart 是美式英语女声,zm_yunxi 是普通话男声,bf_emma 是英式英语女声。记住这条规则,就能在代码里按语言筛音色,不必背清单。
| 语言组 | 前缀 | 音色分布 |
|---|---|---|
| 美式英语 | af_ / am_ | 11 女 / 9 男 |
| 英式英语 | bf_ / bm_ | 4 女 / 4 男 |
| 普通话 | zf_ / zm_ | 4 女 / 4 男 |
| 日语 | jf_ / jm_ | 4 女 / 1 男 |
| 西班牙语 | ef_ / em_ | 1 女 / 2 男 |
| 法语 | ff_ | 1 女 |
| 印地语 | hf_ / hm_ | 2 女 / 2 男 |
| 意大利语 | if_ / im_ | 1 女 / 1 男 |
| 巴西葡萄牙语 | pf_ / pm_ | 1 女 / 2 男 |
官方在 VOICES.md 里给每个音色标了目标质量与训练时长,并折算成 A 到 F 的综合评级。评级不是好坏的判决,它反映训练数据量与文本音频对齐的质量。音色是否合适,最终要拿自己的稿子试听。
同一份文件里还有两条实用提示。多数音色在 100 到 200 个 token 的区间比较稳,单次上限约 500 token;比 10 到 20 个 token 更短的句子容易发虚,超过 400 token 的长句容易赶。对策是把短句合并、把长句切开,或者调 speed 参数。
长文本与接口:从脚本到 OpenAI 兼容端点
官方库只给推理管道,不带 HTTP 服务。自己写循环时,可以按空行或句号切段,逐段调用生成器,再用 soundfile 把音频拼成一个文件。每段控制在几百字,就能避开上一节说的长句问题。
不想自己包一层的话,社区项目 Kokoro-FastAPI 提供了 Docker 镜像和 OpenAI 兼容接口。它默认监听 8880 端口,POST /v1/audio/speech 的请求体与 OpenAI 语音接口一致,voice 填音色名,response_format 支持 mp3、wav、opus、flac、aac、pcm。
- 要流式播放时它按块返回 PCM。README 给出的首字延迟参考值是:GPU 约 300 毫秒(块大小 400)、老款 i7 的 CPU 约 3500 毫秒(块大小 200)、M3 Pro 的 CPU 低于 1 秒。
- 音色能混:写成 af_bella(2)+af_sky(1) 表示按 2 比 1 配比混合,也能给混音起别名,再用 [voice:名字] 在同一段文本里换说话人。
- 它还能输出逐词或按块的时间戳,配字幕时比事后强制对齐省事;SSML 里的 break、voice、prosody 会被翻译成内部控制标记。
自己写批处理脚本时,有三件事值得先定下来:切段规则、失败重试、命名规范。切段按段落优先、句子次之;单段失败只重跑那一段,不必整篇重来;输出文件名带上音色名和语速,比事后靠时长猜要省事。
接现有工具很直接。它的文档给了 Open WebUI、SillyTavern、Home Assistant 的示例,思路都是把语音服务地址指向本地。我们之前写过 Open WebUI 自托管界面怎么接本地模型,语音这一层可以照同样办法补上。
输入端也值得顺手整理。播报稿常来自网页,先用 Crawl4AI 把网页正文转成 Markdown,清掉导航和广告再送进合成,成品会干净不少。想先听效果又不想装环境,可以去 Hugging Face Spaces 的在线演示试听,再决定要不要本地部署。
边界在哪里:中文效果、克隆与依赖
先说中文。普通话有 8 个音色,但 VOICES.md 给它们的综合评级都是 D,训练时长标注为 10 到 100 分钟量级,明显少于英语组的小时级。听感上能听懂、口型对得上,但语气起伏偏平,多音字和数字读法要靠文本预处理兜底。
再说克隆。模型本身不支持零样本音色克隆,2025 年初的第三方评测也指出了这一点。社区有基于参考音频的调音工具,但作者在文档里写明它是 tuner 而非 cloner,得到的是邻近音色,不是复刻。
第三是依赖链。从文字到音素依赖 misaki,非英语还要靠 espeak-ng 兜底。系统缺 espeak-ng,或 Python 版本超出 3.10 到 3.12,都会在启动阶段失败。做成容器时,这两项要一起写进镜像。
验收时有个笨办法很管用:把稿子里出现的品牌名、型号、缩写、易错多音字单独列一张表,逐条听一遍,再决定哪些需要改写成口语形式。这一步花的时间不多,却能挡掉大部分返工。
还有两个容易漏掉的点。一是声音授权:Apache-2.0 覆盖模型与代码,不覆盖你对某个真人声音的模仿,商用配音前要自己确认素材来源。二是仿冒站点:模型页专门提醒,域名带 kokoro 的第三方网站与作者无关,下载只认 Hugging Face 与 GitHub 上的仓库。
常见问题与上手建议
一定要有显卡吗?
不必。CPU 能跑,只是首字延迟和批量速度会慢,Kokoro-FastAPI 就提供纯 CPU 镜像,适合笔记本和内网小服务器。若一次要生成几小时音频,还是上 GPU 更省时间。
生成的音频能直接商用吗?
权重是 Apache-2.0,允许商用与再分发。需要留意训练集里含少量 CC BY 音频,模型页列出了出处;音色本身不附带真人授权,用于广告配音前请自行评估。
长文本断句怪、读音错怎么办?
按标点切段,每段控制在几百字;把数字、单位、专有名词改写成口语形式;再用 [pause:0.5s] 这类标记补停顿。三步做完仍不满意,再考虑换音色或换模型。
适合谁:需要离线或批量配音的内容团队、给内部工具加朗读功能的开发者、研究小体量语音模型的学生。上手路径是先在线试听定音色,再按上面的步骤装本地环境,最后拿自己的稿子跑一百句做验收,重点听数字、专有名词和长句断点。
© 版权声明
文章版权归作者所有,转载需注明出处。未声明原创的皆为网络收集,如有侵权请邮箱lishiwenhuagx@sina.com联系下架处理。




