82M 参数跑出类人语音:Kokoro 正在把 TTS 从云端拉回本地

82M 参数跑出类人语音:Kokoro 正在把 TTS 从云端拉回本地

TTS语音合成开源AI本地部署隐私

数据源:HN + Lobsters

几年前,本地跑出自然流畅的语音合成还属于「想太多」。现在,一个 82M 参数的开源模型可以在一台 12 年前的 CPU 上生成高质量语音,而且不需要 GPU。

这个模型叫 Kokoro

Kokoro-82M 是 hexgrad 在 2024 年圣诞节发布的开源 TTS 模型,Apache 2.0 许可。底层架构是 StyleTTS 2 加 ISTFTNet 声码器——纯解码器,没有扩散模型,这也是它推理速度极快的原因。

Kokoro 的 Web UI 界面

参数少,不等于弱

82M 参数在今天的 AI 世界里属于「轻量级」。作为对比,一个大语言模型的参数动辄几十上百 B(Billion),大模型蒸馏出来的小模型也在 1-8B 级别。Kokoro 的 82M 只有这些模型的百分之一甚至千分之一。

但 TTS 和 LLM 没有直接可比性——语音合成的瓶颈在声学特征的生成和波形的还原精度,不在语言理解。Kokoro 证明了在这个领域,精巧的架构比暴力堆参数更有效。24kHz 输出,约 50 种音色可选,覆盖英语、普通话、印地语等语言。

Ariya Hidayat 在博客中给出了一个直观的速度对比。用 af_heart 音色跑一段测试文本:

  • Intel Core i7-4770K(2013 年发布):4.7 秒
  • Apple M2 Pro:4.5 秒
  • AMD Ryzen 7 8745HS:1.5 秒

第一颗 CPU 已经 12 岁了——比很多还在服役的 NAS 都老。它跑 Kokoro 的时间还没你读完这段文字的时间长。ariya.io 的测试环境还有一个细节:这台机器上 GPU 是留给本地 LLM 推理的,TTS 完全走 CPU。也就是说,本地跑一个完整的大模型问答系统(LLM + TTS)不需要两张显卡

一分钟部署,兼容 OpenAI API

实际部署出奇地简单。最便捷的方式是 Kokoro-FastAPI 容器镜像——一个预打包了所有语音模型的 Docker 镜像,约 5GB。拉下来一条命令跑起来:

docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi:latest

然后打开 http://localhost:8880/web 就能看到一个简易的 Web UI,输入文字、选音色、点生成,几秒钟后语音就出来了。

更关键的是,这个容器内置了 OpenAI speech API 兼容接口。如果你现有的应用已经在调 OpenAI 的 TTS API,把 endpoint 改成本地地址就能无缝切换——不需要改一行业务代码。ariya.io 在 GitHub 上放了 JS 和 Python 的示例代码,Python 版本差不多就这几行:

import requests
response = requests.post(
    "http://localhost:8880/v1/audio/speech",
    json={"model": "kokoro", "input": "Hello world", "voice": "af_heart"}
)
with open("output.mp3", "wb") as f:
    f.write(response.content)

为什么本地 TTS 这件事重要

把 TTS 从云端拉下来,核心不是省钱——虽然对调用量大的场景确实省钱。核心是延迟和隐私

云端 TTS 的延迟包含网络往返加推理时间,对实时交互场景(语音助手、游戏 NPC、同声传译)来说,几百毫秒的额外延迟就是可感知的卡顿。本地推理的 1.5 秒是端到端时间,而且不会因为并发量大而排队。

隐私侧的考量更直接:语音数据不离开设备。医疗场景的语音记录、企业内部会议转录、个人语音日记——这些场景对「数据不出本地」是硬需求。Kokoro 的 Apache 2.0 许可也意味着没有商用限制,可以直接集成到商业产品里。

如果你同时需要语音识别(STT)和语音合成(TTS),另一个选择是 Speaches——同样兼容 OpenAI API 的容器化服务,内建了 Whisper(STT)+ Kokoro(TTS),一站式解决双向语音。区别在于 Speaches 不预打包模型权重,需要通过 API 下载。

本地 AI 拼图的又一块

Kokoro 不是孤立的。把它和本地 LLM(如 Ollama 跑的 Llama、Mistral 或者更小的模型)组合,再加上本地 STT,你就能在完全离线的机器上跑一套完整的语音对话系统。不需要 API key,不需要网络,不需要把数据发给任何第三方。

82M 参数跑出这个效果,说明 TTS 领域正在经历和大语言模型类似的「小型化」趋势——模型越来越小,质量越来越好,部署门槛越来越低。对开发者来说,本地语音的时代已经开始了。

参考链接: