Kokoro-82M 上手:8200 万参数开源语音合成,装法、音色与边界

AI相关11小时前发布 一方
0 00

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 解决不了。

Kokoro 的 PyPI 项目页截图,可看到 0.9.4 版本号、Python 版本要求与安装命令
截图来源:pypi.org(2026-11-03)

音色怎么挑:命名规则与官方评级

音色名是两字母前缀加一个词。首字母是语言,第二个字母是性别,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] 这类标记补停顿。三步做完仍不满意,再考虑换音色或换模型。

适合谁:需要离线或批量配音的内容团队、给内部工具加朗读功能的开发者、研究小体量语音模型的学生。上手路径是先在线试听定音色,再按上面的步骤装本地环境,最后拿自己的稿子跑一百句做验收,重点听数字、专有名词和长句断点。

© 版权声明

相关文章