📌 项目地址:kyutai-labs/pocket-tts | ⭐ 5,966 颗星 | 🔧 Python | 📜 未标注
为什么需要 Pocket TTS
常见的 TTS 方案要么依赖 GPU 推理(模型动辄几百 MB 到 GB),要么使用云 API(有延迟、隐私担忧、按量付费)。如果只是想在自己的笔记本上快速生成一段语音,或者将 TTS 嵌入到边缘设备、桌面应用中,现有工具的门槛往往较高。Kyutai 实验室开源的 Pocket TTS 试图解决这个痛点:一个 纯 CPU 运行、模型仅 100M 参数、6 倍实时速度 的轻量级 TTS 库,安装后一条命令即可生成语音。
项目关键特性
- CPU 优先:不需要 GPU,甚至不强制安装 GPU 版的 PyTorch。
- 低延迟:大约 200ms 输出第一个音频块,支持流式输出。
- 体积小:模型 100M 参数,可轻松放入内存。
- 多语言:支持英语、法语、德语、葡萄牙语、意大利语、西班牙语(未来可能增加)。
- 语音克隆:可以基于少量样本复制音色(需要自行准备参考音频)。
- 无限长文本:可以处理任意长度的输入,不受模型上下文限制。
- CLI 和 Python API:既可在命令行直接使用,也可集成到 Python 项目中。
快速上手:CLI 用法
安装
推荐使用 uv(一个快速的 Python 包管理器),它会自动隔离依赖并安装:
uvx pocket-tts generate
如果已经安装了 pip,也可以:
pip install pocket-tts
pocket-tts generate
首次运行会自动下载模型权重,然后生成一个默认文本的 WAV 文件 ./tts_output.wav,并在终端打印速度统计信息。
自定义语音和文本
pocket-tts generate --voice alba --text "Hello, this is Pocket TTS." --language english
支持的语音列表及对应的许可证可以查看 Hugging Face 的 voices 页面。常见语音包括:
alba(英语)giovanni(意大利语)lola(西班牙语,部分语言未在 README 完整列出,建议参考官方文档)
使用其他语言的 24 层模型
某些语言提供更高品质但稍慢的 24 层变体,可通过 --language 指定,例如:
pocket-tts generate --language italian_24l
导出或服务
除了 generate,CLI 还提供 export-voice 和 serve 子命令,具体用法可参考官方文档。
Python API 集成
Pocket TTS 在 Python 中只需一次函数调用即可生成音频。由于 README 未列出具体 API 签名,详细用法请查阅文档。大致流程为:导入 pocket_tts,加载模型,调用生成函数并传入文本和语音参数。
性能表现
根据官方测试(MacBook Air M4, CPU 模式):
– 首块延迟:约 200ms
– 实时因子:约 6 倍实时(即生成 1 秒音频约需 0.17 秒)
– CPU 核心占用:仅使用 2 个 CPU 核心
– 内存占用:模型约 400MB(100M 参数)
这些数据意味着 Pocket TTS 可以流畅运行在普通个人电脑、树莓派 5 等设备上,甚至可以通过 WebAssembly 在浏览器中运行(官方 Demo 即为此实现)。
注意事项
- Python 版本:支持 3.10 ~ 3.14,需要 PyTorch 2.5+(无需 CUDA 版本)。
- 语音许可证:每个预制语音的授权不同,使用前务必查看 Hugging Face 语音卡 中的 License 说明。
- 语音克隆:官方未在 README 中给出详细的克隆命令,需要参考文档或模型卡片。
- 非英语品质:部分语言的 24 层变体质量更高,但推理时间增长;默认的 12 层模型更轻快。
- 模型下载:首次使用时自动从 Hugging Face 下载(约 400MB),需要有网络连接。
适合怎样的用户
Pocket TTS 特别适合以下场景:
– 本地化 TTS 需求:不希望将文本发送到云端,且没有 GPU 资源。
– 嵌入式或低功耗设备:树莓派、NAS、旧笔记本等。
– 快速原型验证:一条命令即可合成语音,无需配置环境。
– 需要多语言支持的开发者:可以用同一套 API 生成多种语言的语音。
如果你是追求极致音质(如多说话人、情感合成)的用户,可能需要关注更大的模型(如 Bark、XTTS)。但若你在意 离线运行、部署简便、CPU 友好 这一组合,Pocket TTS 是目前最直接的选择之一。