Kyutai TTS 連携
Kyutai の TTS モデルをローカルで実行し、高品質な音声合成を利用します。このガイドでは、Libre WebUI に 同梱された OpenAI-compatible サーバーを使う Pocket TTS(CPU)と TTS 1.6B(GPU)の両方を説明します。
概要
Kyutai は 2 つの TTS モデルを提供しています。
| モデル | パラメーター | デバイス | 最適な用途 |
|---|---|---|---|
| Pocket TTS | 100M | CPU のみ | ノート PC、リソースの少ない環境 |
| TTS 1.6B | 1.6B | GPU/MPS/CPU | サーバー、高品質な音声合成 |
どちらも CALM(Continuous Audio Language Models)framework を使用し、音声サンプルからの音声クローニングに対応しています。
Pocket TTS(CPU)
CPU 上でリアルタイム動作する軽量な TTS です。GPU は必要ありません。
要件
| コンポーネント | 最小要件 |
|---|---|
| Python | 3.10 - 3.14 |
| PyTorch | 2.5+ |
| RAM | 4GB |
| ディスク | 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
- CPU core を 2 個だけ使用
TTS 1.6B(GPU)
GPU acceleration を使用する高品質な TTS です。デバイスは CUDA > MPS > CPU の順に自動選択されます。
要件
| コンポーネント | 最小要件 | 推奨 |
|---|---|---|
| Python | 3.10+ | 3.12 |
| GPU VRAM | 6GB | 8GB+ |
| RAM | 8GB | 16GB+ |
| ディスク | 4GB | 8GB |
対応プラットフォーム
| プラットフォーム | バックエンド | 詳細 |
|---|---|---|
| NVIDIA GPU | CUDA | 最高の性能、bfloat16 に対応 |
| Apple Silicon | MPS | float16 を使用 |
| CPU | PyTorch | 低速、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 parameter として渡します。
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
}
| パラメーター | 型 | 既定値 | 説明 |
|---|---|---|---|
model | string | モデル別 | kyutai-tts または kyutai-tts-1.6b |
input | string | 必須 | 合成するテキスト(最大 10,000 文字) |
voice | string | alba | 音声名または HuggingFace パス |
response_format | string | wav | 音声形式(wav のみ対応) |
stream | boolean | false | ストリーミングを有効にする(Pocket TTS のみ) |
cfg_coef | float | 2.0 | classifier-free guidance(1.6B のみ) |
レスポンス: 音声ファイル(audio/wav)
OpenAI 音声エイリアス
OpenAI TTS クライアントとの互換性を保つため、次のエイリアスを使用できます。
| OpenAI 音声 | Pocket TTS | TTS 1.6B |
|---|---|---|
alloy | alba | alba |
echo | marius | vctk-p225 |
fable | cosette | expresso-happy |
onyx | javert | vctk-p226 |
nova | fantine | alba-announcer |
shimmer | eponine | alba-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 を使用する場合:
- ほかの GPU アプリケーションを閉じます。
- メモリ使用量を減らすため
cfg_coef=1.5を試します。 - 代わりに CPU ベースの Pocket TTS を使用します。
音質の問題
- 機械的な声: 別の音声を試します。
- 音声が途中で切れる: テキストが長すぎる可能性があります。サーバーは自動的に分割します。
- 発音が正しくない: モデルは英語とフランス語向けに最適化されています。
MPS(Apple Silicon)の問題
RuntimeError: MPS backend error
1.6B モデルは MPS で float16 を使用します。問題が解消しない場合は、CPU を明示的に指定します。
python server.py --device cpu
Qwen3-TTS との比較
| 機能 | Kyutai Pocket | Kyutai 1.6B | Qwen3-TTS |
|---|---|---|---|
| パラメーター | 100M | 1.6B | 0.6B-1.7B |
| GPU が必要 | いいえ | 任意 | はい |
| 言語 | 英語 | 英語/仏語 | 10 言語 |
| 音声クローニング | はい | はい | はい |
| 音声デザイン | いいえ | いいえ | はい |
| ポート | 8200 | 8201 | 8100 |
英語中心の用途で設定を簡単にしたい場合は Kyutai を選びます。多言語対応と音声デザイン機能が必要な場合は Qwen3-TTS を選びます。
リソース
- Kyutai TTS - 公式プロジェクトページ
- Pocket TTS GitHub - CPU モデル
- Delayed Streams Modeling - 1.6B モデル
- 音声コレクション - 利用可能な音声
- モデルカード - 技術情報