kyutai-labs/pocket-tts
摘要
Kyutai 发布了 Pocket TTS,这是一个轻量级的文本转语音模型,可高效在 CPU 上运行,拥有 1 亿参数、低延迟和语音克隆功能,支持多种语言。
查看缓存全文
缓存时间: 2026/07/07 16:38
kyutai-labs/pocket-tts 来源:https://github.com/kyutai-labs/pocket-tts
Pocket TTS
一个轻量级文本转语音(TTS)应用,设计在 CPU 上高效运行。无需再为使用 GPU 和调用 TTS 模型的 Web API 而烦恼。借助 Kyutai 的 Pocket TTS,只需一个 pip install 和一个函数调用即可生成音频。支持 Python 3.10、3.11、3.12、3.13 和 3.14。需要 PyTorch 2.5+,但不需要 PyTorch 的 GPU 版本。
🔊 演示 (https://kyutai.org/pocket-tts) | 🐱💻GitHub 仓库 (https://github.com/kyutai-labs/pocket-tts) | 🤗 Hugging Face 模型卡片 (https://huggingface.co/kyutai/pocket-tts) | ⚙️ 技术报告 (https://kyutai.org/blog/2026-01-13-pocket-tts) | 📄 论文 (https://arxiv.org/abs/2509.06926) | 📚 文档 (https://kyutai-labs.github.io/pocket-tts/)
主要特点
- 在 CPU 上运行
- 模型体积小,仅 1 亿参数
- 音频流式生成
- 低延迟,约 200ms 即可获得第一个音频块
- 速度快于实时,在 MacBook Air M4 的 CPU 上约 6 倍实时速度
- 仅使用 2 个 CPU 核心
- Python API 和命令行界面
- 声音克隆
- 多语言支持:英语、法语、德语、葡萄牙语、意大利语、西班牙语
- 可处理无限长的文本输入
- 可在客户端浏览器中运行
未来可能增加更多语言。
无需安装,直接在网站尝试
访问 Kyutai 网站 (https://kyutai.org/pocket-tts) 即可在浏览器中直接试用。您可以输入文本、选择不同声音并生成语音,无需任何安装。
使用命令行界面尝试
generate 命令
您可以直接从命令行使用 pocket-tts。我们建议使用 uv,因为它可以在隔离环境中即时安装所有依赖项(uv 安装说明见此处 (https://docs.astral.sh/uv/getting-started/installation/#standalone-installer))。您也可以使用 pip install pocket-tts 手动安装。
以下命令会生成一个 wav 文件 ./tts_output.wav,内容为默认文本和默认声音,并显示一些速度统计信息。
uvx pocket-tts generate
# 或者如果手动用 pip 安装:
pocket-tts generate
使用 --voice 修改声音,使用 --text 修改文本。我们提供一个小型的声音目录。在运行 generate、export-voice 或 serve 命令时,使用 --language 选择预训练的语言模型(默认:english)。非英语语言还有更大的 24 层变体,质量更高但速度较慢。例如,您可以使用 --language italian_24l 来选择它们。--config 选项仅接受本地 YAML 路径用于自定义权重。
您可以查看此页面 (https://huggingface.co/kyutai/tts-voices),其中详细说明了每种声音的许可证。
- alba (https://huggingface.co/kyutai/tts-voices/blob/main/alba-mackenna/casual.wav) (en)
- giovanni (https://huggingface.co/kyutai/pocket-tts/blob/add_lang_not_documented/common_voice_it_36520747-enhanced-v2.mp3) (it)
- lola (https://huggingface.co/kyutai/pocket-tts/blob/add_lang_not_documented/common_voice_es_19762977-enhanced-v2.mp3) (es)
- juergen (https://huggingface.co/kyutai/pocket-tts/blob/add_lang_not_documented/de-DE-juergen.mp3) (de)
- rafael (https://huggingface.co/kyutai/pocket-tts/blob/add_lang_not_documented/g-Vi8PgmSY0-enhanced-v2.wav) (pt)
- estelle (https://huggingface.co/kyutai/tts-voices/blob/main/unmute-prod-website/developpeuse-3.wav) (fr)
- anna (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p228_023_enhanced.wav) (en)
- azelma (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p303_023_enhanced.wav) (en)
- bill_boerst (https://huggingface.co/kyutai/tts-voices/blob/main/voice-zero/bill_boerst.wav) (en)
- caro_davy (https://huggingface.co/kyutai/tts-voices/blob/main/voice-zero/caro_davy.wav) (en)
- charles (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p254_023_enhanced.wav) (en)
- cosette (https://huggingface.co/kyutai/tts-voices/blob/main/expresso/ex04-ex02_confused_001_channel1_499s.wav) (en)
- eponine (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p262_023_enhanced.wav) (en)
- eve (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p361_023_enhanced.wav) (en)
- fantine (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p244_023_enhanced.wav) (en)
- george (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p315_023_enhanced.wav) (en)
- jane (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p339_023_enhanced.wav) (en)
- jean (https://huggingface.co/kyutai/tts-voices/blob/main/ears/p010/freeform_speech_01_enhanced.wav) (en)
- javert (https://huggingface.co/kyutai/tts-voices/blob/main/voice-donations/Butter.wav) (en)
- marius (https://huggingface.co/kyutai/tts-voices/blob/main/voice-donations/Selfie.wav) (en)
- mary (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p333_023_enhanced.wav) (en)
- michael (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p360_023_enhanced.wav) (en)
- paul (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p259_023_enhanced.wav) (en)
- peter_yearsley (https://huggingface.co/kyutai/tts-voices/blob/main/voice-zero/peter_yearsley.wav) (en)
- stuart_bell (https://huggingface.co/kyutai/tts-voices/blob/main/voice-zero/stuart_bell.wav) (en)
- vera (https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p229_023_enhanced.wav) (en)
--voice 参数也可以接受一个普通 wav 文件作为输入以进行声音克隆。您可以使用自己的文件,或查看我们的声音仓库 (https://huggingface.co/kyutai/tts-voices)。我们建议在使用 Pocket TTS 之前对样本进行清洗 (https://podcast.adobe.com/en/enhance),因为样本的音频质量也会被复现。
欢迎查看 generate 文档 (https://kyutai-labs.github.io/pocket-tts/CLI%20Commands/generate/) 以获取更多细节和示例。
如需快速尝试多种声音和提示,建议使用 serve 命令。
serve 命令
您也可以运行一个本地服务器,通过 HTTP 请求生成音频。
uvx pocket-tts serve
# 或者如果手动用 pip 安装:
pocket-tts serve
导航到 http://localhost:8000 尝试 Web 界面,它比命令行更快,因为模型在请求之间保留在内存中。
您可以查看 serve 文档 (https://kyutai-labs.github.io/pocket-tts/CLI%20Commands/serve/) 以获取更多细节和示例。
export-voice 命令
处理音频文件(例如 .wav 或 .mp3)以进行声音克隆相对较慢,但加载 safetensors 文件(从音频文件转换而来的声音嵌入)非常快。您可以使用 export-voice 命令来执行此转换。请参阅 export-voice 文档 (https://kyutai-labs.github.io/pocket-tts/CLI%20Commands/export_voice/) 获取更多细节和示例。
作为 Python 库使用
您可以在 Colab 上尝试 Python 库 (https://colab.research.google.com/github/kyutai-labs/pocket-tts/blob/main/docs/pocket-tts-example.ipynb)。
安装包:
pip install pocket-tts
# 或 uv add pocket-tts
您可以将此包用作一个简单的 Python 库,从文本生成音频。
from pocket_tts import TTSModel
import scipy.io.wavfile
tts_model = TTSModel.load_model()
voice_state = tts_model.get_state_for_audio_prompt(
"alba" # 其中一个预设声音,见上方
# 您也可以使用本地或来自 Hugging Face 的任何声音文件:
# "./some_audio.wav"
# 或 "hf://kyutai/tts-voices/expresso/ex01-ex02_default_001_channel2_198s.wav"
)
audio = tts_model.generate_audio(voice_state, "Hello world, this is a test.")
# audio 是一个包含 PCM 数据的一维 torch 张量。
scipy.io.wavfile.write("output.wav", tts_model.sample_rate, audio.numpy())
如果您有多个想要使用的声音,可以拥有多个声音状态对象。load_model() 和 get_state_for_audio_prompt() 是相对较慢的操作,因此我们建议在可能的情况下将模型和声音状态保留在内存中。为了更快地加载声音,您可以将声音状态导出为 safetensors 文件:
from pocket_tts import TTSModel, export_model_state
model = TTSModel.load_model()
# 导出声音状态,以便以后快速加载
model_state = model.get_state_for_audio_prompt("some_voice.wav")
export_model_state(model_state, "./some_voice.safetensors")
# 稍后,快速加载它,这非常快,因为它只是从磁盘读取 kvcache,不执行其他计算。
model_state_copy = model.get_state_for_audio_prompt("./some_voice.safetensors")
audio = model.generate_audio(model_state_copy, "Hello world!")
您可以查看 Python API 文档 (https://kyutai-labs.github.io/pocket-tts/API%20Reference/python-api/) 以获取更多细节和示例。
不支持的功能
目前,我们不支持以下功能(但欢迎通过 pull request 添加):
- 在文本输入中添加静音以生成停顿。(https://github.com/kyutai-labs/pocket-tts/issues/6)
我们尝试在 GPU 上运行此 TTS 模型,但与 CPU 执行相比并未观察到加速,这主要是因为我们的 batch size 为 1 且模型非常小。
开发和本地设置
我们欢迎贡献!请随时在 GitHub 上提交 issue 或 pull request。您可以在 CONTRIBUTING.md (https://github.com/kyutai-labs/pocket-tts/tree/main/CONTRIBUTING.md) 文件中找到开发说明。您还可以在其中找到如何进行本地开发的可编辑安装。
浏览器内实现
Pocket TTS 足够小,可以直接在浏览器中以 WebAssembly/JavaScript 运行。我们目前还没有官方支持,但您可以尝试以下社区实现之一:
- wasm-pocket-tts (https://github.com/LaurentMazare/xn/tree/main/wasm-pocket-tts) 由 @LaurentMazare 开发:使用 XN 的 Pocket TTS Rust 移植版。演示地址 (https://laurentmazare.github.io/pocket-tts/)
- pocket-tts-onnx-export (https://github.com/KevinAHM/pocket-tts-onnx-export) 由 @KevinAHM 开发:模型导出为 .onnx 并使用 ONNX Runtime Web (https://onnxruntime.ai/docs/tutorials/web/) 运行。演示地址 (https://huggingface.co/spaces/KevinAHM/pocket-tts-web)
- pocket-tts (https://github.com/babybirdprd/pocket-tts) 由 @babybirdprd 开发:Candle 版本(Rust),支持 WebAssembly 和 PyO3 绑定,也能够在 Web 上运行。
- jax-js (https://github.com/ekzhang/jax-js/tree/main/website/src/routes/tts) 由 @ekzhang 开发:使用 jax-js,一个面向 Web 的 ML 库。演示地址 (https://jax-js.com/tts)
其他实现
- pocket-tts-mlx (https://github.com/jishnuvenugopal/pocket-tts-mlx) 由 @jishnuvenugopal 开发:针对 Apple Silicon 优化的 MLX 后端。
- pocket-tts-xn (https://github.com/LaurentMazare/xn/tree/main/pocket-tts) 由 @LaurentMazare 开发:使用 XN 实现的 Pocket TTS Rust 移植版。
- pocket-tts-candle (https://github.com/babybirdprd/pocket-tts) 由 @babybirdprd 开发:Candle 版本(Rust),支持 WebAssembly 和 PyO3 绑定。
- PocketTTS.cpp (https://github.com/VolgaGerm/PocketTTS.cpp) 由 @VolgaGerm 开发:使用 ONNX Runtime 的单一文件 C++ 运行时,包含 CLI、HTTP 服务器和 FFI C API。
- sherpa-onnx (https://github.com/k2-fsa/sherpa-onnx) 由 @csukuangfj 开发:在 Windows、macOS、Linux 以及嵌入式板卡(Raspberry Pi、Jetson、RK3588 等)上运行 PocketTTS,并提供 12 种编程语言的绑定:C++、C、Python、JavaScript、Java、C#、Kotlin、Swift、Go、Dart、Rust、Pascal,以及 WebAssembly (https://huggingface.co/spaces/k2-fsa/web-assembly-en-tts-pocket)。
- pocket-tts-csharp (https://github.com/TheAjaykrishnanR/pocket-tts-csharp) 由 @TheAjaykrishnanR 开发:使用 TorchSharp (https://github.com/dotnet/TorchSharp) 和 TorchSharp.PyBridge (https://github.com/shaltielshmid/TorchSharp.PyBridge) 实现的 Pocket TTS C# 移植版,便于在 .NET 项目中作为库使用。
使用 Pocket TTS 的项目
- pocket-reader (https://github.com/lukasmwerner/pocket-reader) 由 @lukasmwerner 开发:浏览器屏幕阅读器。
- pocket-tts-wyoming (https://github.com/ikidd/pocket-tts-wyoming) 由 @ikidd 开发:使用 Wyoming 协议的 pocket-tts Docker 容器,已为 Home Assistant Voice 使用做好准备。
- Sonorus (https://www.nexusmods.com/hogwartslegacy/mods/2409) 由 @KevinAHM 开发:与《霍格沃茨之遗》中任何有名角色用其原始声音对话。
- Native macOS App (https://github.com/slaughters85j/pocket-tts-macos) 由 @slaughters85j 开发:原生 macOS 应用,无需 Python。通过 Core ML 运行 Pocket-TTS,完全在设备上执行。包含已签名和公证的 .app 版本。
- Electron macOS App (https://github.com/slaughters85j/pocket-tts) 由 @slaughters85j 开发:Electron Mac 桌面应用 + macOS 快速操作。
- pocket-tts-openai_streaming_server (https://github.com/teddybear082/pocket-tts-openai_streaming_server) 由 @teddybear082 开发:兼容 OpenAI 的流式服务器,已 Docker 化并提供
.exe版本。 - pocket-tts-unity (https://github.com/lookbe/pocket-tts-unity) 由 @lookbe 开发:Pocket-TTS 的 Unity 6 集成。
- ComfyUI-Pocket-TTS (https://github.com/ai-joe-git/ComfyUI-Pocket-TTS) 由 @ai-joe-git 开发:ComfyUI 的轻量级 CPU 文本转语音节点。
- pocket-tts-server (https://github.com/ai-joe-git/pocket-tts-server) 由 @ai-joe-git 开发:一个轻量级、实时声音克隆和聊天服务器,具有兼容 OpenAI 的 API。只需 20 秒音频即可克隆任何声音,并立即使用该声音与 AI 聊天。
- discord-tts (https://github.com/alkmei/discord-tts) 由 @alkmei 开发:使用 Pocket TTS 的多声音 Discord 文本转语音机器人。
- cursed-codex (https://github.com/dooart/cursed-codex) 由 @dooart 开发:具有疯狂现场足球评论功能的 AI 编码代理。
- pocket-tts-deno (https://github.com/ohmstone/pocket-tts-deno):pocket-tts-server (https://github.com/ai-joe-git/pocket-tts-server) 的移植版,作为 wasm + onnx deno 服务器,提供语音 TTS API。
- FrontPocket (https://github.com/markd89/FrontPocket) 由 @markd89 开发:Pocket-TTS 的前端界面,可从剪贴板、文件、命令行(热键)和 GUI 工具栏朗读文本。可立即更改播放速度、声音,并在句子之间前后移动。
- openclaw-pockettts (https://github.com/dodgyrabbit/openclaw-pockettts) 由 @dodgyrabbit 开发:使用 Python 实现但以 OpenAI TTS API 形式暴露的 Docker 容器,便于与 OpenClaw 集成。
- openclaw-pocketts.cpp (https://github.com/dodgyrabbit/openclaw-pockettts.cpp) 由 @dodgyrabbit 开发:包含 PocketTTS.cpp 版本的 Docker 容器,打包用于与 OpenClaw 轻松集成。
- tts-audiobook-tool (https://github.com/zeropointnine/tts-audiobook-tool) 由 @zeropointnine 开发:支持自动错误检测、48khz 升频、同步浏览器阅读器、独立服务器模式的多模型有声书生成器。
- seshat-tts (https://github.com/scriptriva/seshat-tts) 由 @scriptriva 开发:为游戏和应用程序提供实时音频合成的无障碍工具。它还包含一个能够根据用户预设克隆声音的声音管理器。
- LocalVocal.ai (https://localvocal.ai) 由 @joshwhiton 开发:适用于 Apple Silicon Mac 的完全本地化对话式语音工具。包括语音活动与话轮检测、听写、声音克隆、与 Claude、Codex 等对话的命令行界面……以及更多功能。
禁止使用
我们的模型的使用必须遵守所有适用法律法规,并且不得导致、涉及或促进任何非法、有害、欺骗、欺诈或未经授权的活动。禁止用途包括但不限于:未经明确合法同意进行声音模仿或克隆;错误信息、虚假信息或欺骗(包括假新闻、欺诈性电话或将生成的内容呈现为真实人物或事件的真实录音);以及生成非法、有害、诽谤、辱骂、骚扰、歧视、仇恨或侵犯隐私的内容。对于任何不合规的使用,我们概不负责。
作者
Manu Orsini*、Simon Rouard*、Gabriel De Marmiesse*、Václav Volhejn、Neil Zeghidour、Alexandre Défossez
*贡献相等
相似文章
Kyutai 的 Pocket TTS 能在 CPU 上运行,仅需 5 秒音频即可克隆声音,采用 MIT 许可证发布。在英文 TTS 上与 Kokoro、Supertonic 和 Inflect-Nano 进行了基准测试。
Kyutai 发布了 Pocket TTS,这是一个文本转语音模型,只需 5 秒音频即可克隆声音,可在 CPU 上运行,并以 MIT 许可证发布。该模型在英文 TTS 上与 Kokoro、Supertonic 和 Inflect-Nano 进行了基准测试。
CPU TTS基准测试与UTMOS MOS评分:Kokoro、Supertonic、Inflect-Nano和Kyutai的新Pocket TTS [P]
一项CPU TTS基准测试使用UTMOS MOS评分对比了Kokoro、Supertonic、Inflect-Nano和Kyutai的Pocket TTS,揭示了关于RTF缩放、UTMOS在小声码器上的局限性以及未记录的输出上限的有趣发现。Pocket TTS在CPU上提供了独特的零样本声音克隆能力。
使用Kokoro实现本地、CPU友好、高质量的文本转语音(TTS)
本文介绍Kokoro,一个轻量级82M参数的文本转语音模型,可在本地CPU上运行,提供跨多种语言的高质量语音合成,同时保护隐私。文章解释了如何通过Docker容器设置Kokoro,并使用兼容OpenAI的API进行简单集成。
@FeitengLi: 99M 参数的 TTS 跑在 CPU 上,比 2B 大模型跑在 A100 上还快。 Supertone 新开源的 supertonic-3 ONNX Runtime,完全本地,浏览器能跑,手机能跑,树莓派也能跑。
Supertone released Supertonic 3, an open-source TTS model with 99M parameters that runs faster on CPU than a 2B model on A100, supporting 31 languages and ONNX Runtime for fully local inference.
@GoJun315: 本地跑的开源 TTS,把 ElevenLabs 干掉了。 Supertonic,完全跑在本地的语音合成模型,不联网、零 API 费用。 - 仅 99M 参数,M4 Pro 上比实时快 167 倍,树莓派也能跑 - 支持 31 种语言,覆盖…
Supertonic is a lightning-fast, on-device TTS model with 99M parameters, supporting 31 languages. It runs locally with no API costs, outperforms cloud TTS on accuracy for numbers, phone numbers, and technical terms, and can be installed via Python, Node.js, Rust, Go, and more.