Kokoro 由 hexgrad(Discord 上的 @rzvzn)训练发布,架构是 StyleTTS 2 加 ISTFTNet,只放出解码器,没有扩散过程。主线权重 v1.0 在 2025 年 1 月定版,SHA256 前缀 496dba11,此后 pip 包走到 0.9.4 就基本稳定下来,不再是那种每两周换一次调用方式的项目。整个 v1.0 训练只烧掉约 500 个 A100 80GB 卡时,语料是几百小时的公有领域音频、Apache/MIT 授权音频,外加闭源商用 TTS 的合成数据——这也是它敢把权重挂成 Apache 2.0 的底气。
参数量 8200 万意味着 fp32 权重只有 326MB,ONNX int8 量化之后 86MB。真跑起来把 PyTorch 和 CUDA 上下文一起算进去,单实例常驻显存是 2.37GB 到 3.98GB——这是 Kokoro-FastAPI 在 4060Ti 16GB 上跑《时间机器》全书测出来的区间,不是估算。于是一张 24GB 的卡可以同时塞下 Kokoro、一个 Whisper ASR 和一个 7B 对话模型,这在 XTTS、F5-TTS 那类模型上是奢望。同一块 4060Ti 上的实时率是 35 到 100 倍,流式首包约 300ms,吞吐约 138 tokens/s。
代价也要说清楚。Kokoro 不做音色克隆:音色是 54 个训练好的 style 向量,每个 .pt 文件 523KB,正好是一张 510×256 的 fp32 查找表;你可以按权重混合它们,但没有 encoder 权重,就没法用三十秒录音造一个新说话人。语言是另一条硬边界,目前只有美式/英式英语、西班牙语、法语、印地语、意大利语、日语、巴西葡语和中文,德语、俄语、土耳其语、越南语的请求帖在仓库里挂了一年多,最热的德语线程 77 条回复仍然没有权重落地。这两点想清楚,剩下的就只是挑一张够便宜的卡。
01 —
现在能下到的 Kokoro 版本
主线只有一条,部署形态有四种,量化文件之间差了将近 4 倍体积
| 版本 | 参数量 | 显存 | 上下文 | 说明 |
|---|---|---|---|---|
| hexgrad/Kokoro-82M v1.0 | 82M | fp32 权重 326MB / 单实例常驻 2.4–4.0GB | 510 音素 token / 段 | 主线权重,2025 年 1 月定版后一直没变。54 个音色、9 个语言码(a/b/e/f/h/i/j/p/z),固定 24kHz 单声道输出。新项目从这里开始,别绕路。 |
| hexgrad/Kokoro-82M-v1.1-zh | 82M | 与 v1.0 完全一致,显存占用无差别 | 510 音素 token / 段 | 中文强化分支。LongMaoData 无偿提供 100 小时专业中文录音,只花了 120 个 A100 卡时。约 103 个音色,但砍掉了 v1.0 的大量英文音色,官方原话是“不是严格意义上的升级”。做纯中文播报值得一试。 |
| onnx-community/Kokoro-82M-v1.0-ONNX | 82M | fp16 163MB / int8 92.4MB / q8f16 86MB | 510 音素 token / 段 | 社区官方 ONNX 导出,八种精度并存:fp32 326MB、q4f16 155MB、uint8 177MB、uint8f16 114MB。CPU 推理、浏览器 WASM、边缘盒子走这条线。注意 DirectML 执行器目前仍有已知报错。 |
| kokoro-onnx(thewh1teagle) | 82M | kokoro-v1.0.onnx 约 300MB + voices-v1.0.bin | 510 音素 token / 段 | MIT 许可的极简 Python 封装,两个文件即可运行,Apple Silicon 上接近实时。不想在容器里装 torch 全家桶时用它最省事。 |
| Kokoro v0.19 / hexgrad/kLegacy | 82M | 同架构,无独立优化 | 510 音素 token / 段 | misaki G2P 之前的老版本,归档在 kLegacy 仓库。音色命名和调用接口都与 v1.0 不兼容,只有维护存量项目才需要碰它。 |
02 —
该租哪张卡
Kokoro 的瓶颈从来不是显存,而是你要多低的首包延迟、多高的并发
常驻一个 OpenAI 兼容的 TTS 服务
RTX 3090 24GB$0.193/卡·时
单实例封顶吃 4GB,24GB 意味着同一张卡可以并排开六七个 worker,或者顺手把 Whisper ASR 一起挂上去。
实时对话流式播报,首包越快越好
RTX 4090 24GB$0.540/卡·时
小模型的单流延迟吃时钟频率和访存带宽,不吃张量算力;400 字符分块下首包稳定在 300ms 量级。
有声书、播客、课件的批量离线合成
Tesla T4 16GB$0.298/卡·时
跑批不在乎延迟,16GB 显存对一个 82M 模型是奢侈;按秒计费,跑完就停,一整部书的账单是几分钱。
复现官方训练或做社区微调实验
A100 PCIE 80GB$0.824/卡·时
v1.1-zh 只用了 120 个 A100 80GB 卡时,v1.0 约 500 个——这是极少数你真能提前算清预算的 TTS 训练。
03 —
四步跑起来
espeak-ng 那一步是九成人卡住的地方,先把它装上
- 01
开一张 3090,确认 CUDA 通了
控制台选 PyTorch 预置镜像开机,SSH、Jupyter 或 Web 终端进去都行。Kokoro 对 torch 版本不挑,但 Python 必须在 3.10 到 3.12 之间——kokoro 包的 requires-python 写死了 >=3.10,<3.13,3.13 的环境会直接装不上。
python -c "import sys, torch; print(sys.version, torch.__version__, torch.cuda.is_available())" - 02
装 espeak-ng,再装 kokoro
misaki 负责 G2P,遇到词表外的词会回落到 espeak-ng,所以这是硬依赖而不是可选项,缺了它启动就报错。中文额外需要 misaki[zh](pypinyin + jieba),日文是 misaki[ja]。Windows 上还得装 .msi 并配 PHONEMIZER_ESPEAK_LIBRARY,这也是直接租一台 Linux 卡机更省事的原因。
apt-get update && apt-get install -y espeak-ng && pip install "kokoro>=0.9.4" "misaki[zh]" soundfile - 03
合成第一段中文
KPipeline 按 lang_code 决定 G2P 后端,voice 必须和语言码对上:语言码 z 要配 zf_/zm_ 开头的音色,混用会得到一段听得懂但口音很怪的音频。返回的是生成器,逐段吐出字素、音素和 24kHz 波形。想换成中文强化分支,构造时加 repo_id='hexgrad/Kokoro-82M-v1.1-zh' 即可。
python -c "from kokoro import KPipeline; import soundfile as sf; p=KPipeline(lang_code='z'); [sf.write(f'out{i}.wav', a, 24000) for i,(g,ps,a) in enumerate(p('本地部署一个语音合成模型,其实没有想象中那么贵。', voice='zf_xiaoxiao'))]" - 04
换成 HTTP 服务,接进现有代码
Kokoro-FastAPI 把它包成 OpenAI 的 /v1/audio/speech,现有 SDK 改个 base_url 就能用,另外还给了 /v1/audio/voices/combine 做音色混合,写法是 af_bella(2)+af_sky(1) 这种加权比例。默认镜像是 CUDA 12.6;如果你开的是 RTX 5090,要换成 latest-cu128 那个 tag。文本归一化偶尔会吃掉短语,遇到就在请求里传 normalization_options.normalize=false 关掉。
docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:latest
一部有声书要多少钱
按 Kokoro-FastAPI 在 4060Ti 上实测的 35–100 倍实时率,保守取 30 倍:一部 10 小时的有声书,纯合成需要 10 ÷ 30 = 0.34 卡时。RTX 3090 24GB 按 $0.193/卡·时 算,0.34 × 0.193 ≈ $0.066;加上拉镜像和下 327MB 权重的五分钟(0.08 卡时 ≈ $0.016),整单不到 $0.09。换成常驻服务:一张 3090 跑满一个月是 24 × 30 × 0.193 = $138.96,而计费按秒走,夜里停机算力费立刻归零,只剩存储按 $0.414/GB·月 继续计——Kokoro 权重加全部音色不到 400MB,那部分每月约 $0.17。想复现官方训练同样算得清:v1.1-zh 的 120 个 A100 卡时,在 A100 PCIE 80GB $0.824/卡·时 上就是 120 × 0.824 = $98.88;v1.0 的 500 卡时是 500 × 0.824 = $412。没有开通费,没有最低消费,没有配额申请。
04 —
