Kokoro:本地运行、CPU友好、高质量的文本转语音模型
速览
Kokoro 是一款开源的文本转语音(TTS)模型,专为本地 CPU 环境优化,提供高质量语音合成。它无需依赖昂贵的 GPU,降低了部署门槛,适合个人开发者或资源受限的端侧应用。该模型在保持低延迟的同时,语音自然度接近云端方案,可能推动 TTS 在离线场景的普及。
AI 深度解读
背景
几年前,在本地设备上生成逼真的语音合成似乎还难以想象。如今,不仅语音质量已经极为出色,更重要的是,这一切可以在不牺牲隐私的前提下实现。Hacker News 上的一篇文章介绍了 Kokoro——一个轻量级、CPU 友好、高质量的 TTS(文本转语音)模型,它让本地语音合成变得简单而实用。
核心内容
文章展示的视频中,音频完全在本地机器上生成,该机器此前在《GTX 1080 Ti 运行本地 LLM》一文中使用过。尽管这台机器配备了独立 GPU,但 GPU 已完全预留给 LLM 推理使用,而语音合成则完全由 CPU 完成。
所使用的模型是 Kokoro,它仅有 82M 参数,却能生成多语言(包括英语、普通话和印地语)的真实语音。Kokoro 提供了约 50 种不同的音色,主要针对英语进行了优化。
设置 Kokoro 服务器有几种方式。最简单的方法是使用预制的容器镜像 Kokoro-FastAPI,其中包含了预下载的语音模型。正因如此,该容器镜像体积较大,约为 5 GB。
使用 Docker 或 Podman 启动容器的命令如下:
podman run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu
快速验证运行是否正确:容器会在 localhost:8880/web 提供一个简单的 Web UI,你可以在那里输入文本并生成(并自动播放)音频。
除了简单的 Web UI,该容器还提供了一个与 OpenAI 语音 API 兼容的 TTS 接口,便于适配已使用 OpenAI 语音 API 的现有程序。为了快速测试,js 和 Python 的示例代码托管在 github.com/remotebrowser/speak。克隆该仓库后,可按以下命令演示。
对于 JavaScript:
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
./speak.js "Good morning! How are you today?"
对于 Python,命令非常相似:
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
./speak.py "Good morning! How are you today?"
生成的音频会保存为 MP3 文件。如果机器上安装了 SoX(Sound eXchange,详情见 sox.sf.net),音频还会自动播放。
你也可以通过设置 TTS_VOICE 环境变量选择不同的音色:
export TTS_API_BASE_URL=http://127.0.0.1:8880/v1
export TTS_VOICE="am_eric"
./speak.js "Good morning! How are you today?"
完整的可用音色列表可在 Kokoro 官方项目页面找到:huggingface.co/hexgrad/Kokoro-82M/blob/main/VOICES.md。
合成速度如何?下面是使用 am_eric 音色对一段短测试段落(“Jupiter is the largest...”)的测量结果(取三次运行中的最佳值):
- Intel Core i7-4770K:4.7 秒
- Apple M2 Pro:4.5 秒
- AMD Ryzen 7 8745HS:1.5 秒
第一个 CPU 是 12 年前发布的。如果这个老旧的 CPU 都能很好地完成任务,说明这是一个能力很强的 TTS 系统。
最后,文章还提到另一个 OpenAI 兼容的容器化 TTS 服务:Speaches(speaches.ai)。与 Kokoro-FastAPI 不同,Speaches 要求用户通过其 API 显式下载语音权重(因为镜像中未打包),但它的优势在于包含了 OpenAI 著名的语音转文字(STT)系统 Whisper。如果你的应用同时需要 TTS 和 STT 功能,Speaches 可以一站式满足。
当与本地 LLM 结合使用时,这类语音合成系统让你可以聆听 LLM 的回答,而不仅仅是阅读它们。
关键要点
- Kokoro 是一个仅有 82M 参数的 TTS 模型,能够在 CPU 上高效运行,无需 GPU 即可生成高质量的多语言语音。
- Kokoro-FastAPI 容器镜像预装了约 50 种语音,并提供了简单 Web UI 和兼容 OpenAI 语音 API 的接口,方便集成。
- 使用 Docker/Podman 一行命令即可启动服务,并通过环境变量
TTS_VOICE切换音色。 - 性能测试显示,即使是 12 年前的 Intel Core i7-4770K 也能在约 5 秒内合成一段短文本,而现代 CPU(如 AMD Ryzen 7 8745HS)仅需 1.5 秒。
- 另一个选择 Speaches 虽然需要手动下载语音权重,但额外集成了 Whisper STT,适合需要双向语音转换的场景。
- 本地 TTS 与本地 LLM 结合,可让用户通过听觉获取 LLM 的回答,提升隐私保护和离线使用体验。
意义与影响
Kokoro 的出现标志着本地 CPU 驱动的 TTS 已经达到实用水平。它打破了以往对云端 GPU 或高端硬件的依赖,使得语音合成技术更易普及。对于注重隐私的用户(如处理敏感数据的企业或个人),本地运行意味着数据不出设备,消除了第三方服务的隐私风险。同时,与本地 LLM 结合,可以构建完全离线的语音对话系统,适用于嵌入式设备、边缘计算或无法联网的环境。Kokoro 的开源性质和轻量级设计,有望推动更多开发者在应用中集成本地语音功能,进一步降低语音交互的门槛。此外,兼容 OpenAI API 的设计也降低了现有迁移成本,让开发者能快速替换云端服务。
