跳到主要内容

Kyutai TTS 集成

在本地运行 Kyutai 的 TTS 模型,获得高质量文字转语音。本指南介绍 Pocket TTS(CPU)和 TTS 1.6B(GPU),以及 Libre WebUI 内置的 OpenAI 兼容服务器。

概述

Kyutai 提供两个 TTS 模型:

模型参数量设备最适合
Pocket TTS100M仅 CPU笔记本电脑、低资源环境
TTS 1.6B1.6BGPU/MPS/CPU服务器、高质量合成

两者都使用 CALM(Continuous Audio Language Models)框架,并支持从音频样本克隆声音。

Pocket TTS(CPU)

可在 CPU 上实时运行的轻量 TTS,无需 GPU。

要求

组件最低要求
Python3.10 - 3.14
PyTorch2.5+
RAM4GB
磁盘500MB

快速入门

cd examples/kyutai-tts-server

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Start server
python server.py

服务器运行在 http://localhost:8200

测试

curl http://localhost:8200/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"model": "kyutai-tts", "input": "Hello, welcome to Libre WebUI!", "voice": "alba"}' \
--output speech.wav

声音

声音说明
Alba女声,清晰自然
Marius男声,温暖
Javert男声,权威
Jean男声,柔和
Fantine女声,柔和
Cosette女声,年轻
Eponine女声,富有表现力
Azelma女声,明亮

性能

  • 在 MacBook Air M4 上约为实时速度的 6 倍
  • 首个音频片段延迟约 200ms
  • 只使用 2 个 CPU 核心

TTS 1.6B(GPU)

支持 GPU 加速的高质量 TTS。自动设备选择顺序:CUDA > MPS > CPU。

要求

组件最低要求建议
Python3.10+3.12
GPU VRAM6GB8GB+
RAM8GB16GB+
磁盘4GB8GB

平台支持

平台后端说明
NVIDIA GPUCUDA性能最佳,支持 bfloat16
Apple SiliconMPS使用 float16
CPUPyTorch较慢,使用 float32

快速入门

cd examples/kyutai-tts-1.6b-server

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install PyTorch with CUDA (for NVIDIA GPUs)
pip install torch --index-url https://download.pytorch.org/whl/cu121

# Install dependencies
pip install -r requirements.txt

# Start server (auto-detects GPU)
python server.py

服务器运行在 http://localhost:8201

设备选择

# Auto-detect (CUDA > MPS > CPU)
python server.py

# Force specific device
python server.py --device cuda
python server.py --device mps
python server.py --device cpu

测试

curl http://localhost:8201/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"model": "kyutai-tts-1.6b", "input": "Hello from the GPU!", "voice": "alba"}' \
--output speech.wav

声音

Alba MacKenna(CC BY 4.0):

声音风格
alba / alba-casual日常对话
alba-merchant商人角色
alba-announcer播音风格

Expresso(CC BY-NC 4.0 - 非商业):

声音情绪
expresso-happy开心
expresso-sad悲伤
expresso-angry愤怒

VCTK(CC BY 4.0):

  • vctk-p225, vctk-p226, vctk-p227, vctk-p228

声音克隆

两个服务器都支持从音频文件克隆声音。

Pocket TTS

# From local file
curl http://localhost:8200/v1/audio/voice-clone \
-F "input=Hello from a cloned voice" \
-F "reference_audio=@my_voice.wav" \
--output cloned.wav

# From HuggingFace URL
curl http://localhost:8200/v1/audio/voice-clone-url \
-H "Content-Type: application/json" \
-d '{
"input": "Hello world!",
"voice_url": "hf://kyutai/tts-voices/alba-mackenna/casual.wav"
}' \
--output speech.wav

TTS 1.6B

将任意 HuggingFace 声音路径作为 voice 参数传递:

curl http://localhost:8201/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "kyutai-tts-1.6b",
"input": "Custom voice synthesis",
"voice": "hf://kyutai/tts-voices/vctk/p230.wav"
}' \
--output speech.wav

API 参考

语音生成

端点: POST /v1/audio/speech

{
"model": "kyutai-tts",
"input": "Text to convert to speech",
"voice": "alba",
"response_format": "wav",
"stream": false
}
参数类型默认值说明
modelstring视情况kyutai-ttskyutai-tts-1.6b
inputstring必需要合成的文本(最多 10,000 个字符)
voicestringalba声音名称或 HuggingFace 路径
response_formatstringwav音频格式(仅支持 wav
streambooleanfalse启用流式传输(仅 Pocket TTS)
cfg_coeffloat2.0无分类器引导(仅 1.6B)

响应: 音频文件(audio/wav

OpenAI 声音别名

为兼容 OpenAI TTS 客户端:

OpenAI 声音Pocket TTSTTS 1.6B
alloyalbaalba
echomariusvctk-p225
fablecosetteexpresso-happy
onyxjavertvctk-p226
novafantinealba-announcer
shimmereponinealba-merchant

列出声音

端点: GET /v1/voices

健康检查

端点: GET /health


插件配置

Pocket TTS

设置 > 插件 > Kyutai TTS 中启用

插件文件:plugins/kyutai-tts.json

{
"id": "kyutai-tts",
"name": "Kyutai TTS",
"type": "tts",
"endpoint": "http://localhost:8200/v1/audio/speech",
"capabilities": {
"tts": {
"config": {
"voices": [
"Alba",
"Marius",
"Javert",
"Jean",
"Fantine",
"Cosette",
"Eponine",
"Azelma"
],
"default_voice": "Alba",
"supports_streaming": true,
"no_auth_required": true
}
}
}
}

TTS 1.6B

设置 > 插件 > Kyutai TTS 1.6B 中启用

插件文件:plugins/kyutai-tts-1.6b.json

{
"id": "kyutai-tts-1.6b",
"name": "Kyutai TTS 1.6B",
"type": "tts",
"endpoint": "http://localhost:8201/v1/audio/speech",
"capabilities": {
"tts": {
"config": {
"voices": [
"Alba",
"Alba-Casual",
"Alba-Merchant",
"Alba-Announcer",
"Expresso-Happy",
"Expresso-Sad",
"Expresso-Angry",
"VCTK-P225",
"VCTK-P226"
],
"default_voice": "Alba",
"supports_streaming": true,
"no_auth_required": true
}
}
}
}

网络访问

从其他计算机访问:

# Start server on all interfaces
python server.py --host 0.0.0.0

# Access from another machine
curl http://192.168.1.100:8200/v1/audio/speech ...

相应更新插件端点:

{
"endpoint": "http://192.168.1.100:8200/v1/audio/speech"
}

故障排除

模型下载失败

模型首次运行时从 HuggingFace 下载:

# Set token for gated models
export HF_TOKEN=hf_...

CUDA 内存不足

VRAM 有限时运行 TTS 1.6B:

  1. 关闭其他 GPU 应用。
  2. 尝试 cfg_coef=1.5 降低内存用量。
  3. 改用基于 CPU 的 Pocket TTS。

音频质量问题

  • 声音机械: 尝试其他声音。
  • 音频截断: 文本可能过长;服务器会自动分块。
  • 发音错误: 模型针对英语和法语优化。

MPS(Apple Silicon)问题

RuntimeError: MPS backend error

1.6B 模型在 MPS 上使用 float16。问题持续时强制使用 CPU:

python server.py --device cpu

与 Qwen3-TTS 比较

功能Kyutai PocketKyutai 1.6BQwen3-TTS
参数量100M1.6B0.6B-1.7B
需要 GPU可选
语言英语EN/FR10 languages
声音克隆
声音设计
端口820082018100

英语为主且希望简单配置时选择 Kyutai;需要多语言支持和声音设计功能时选择 Qwen3-TTS。


资源