メインコンテンツまでスキップ

Kyutai TTS 連携

Kyutai の TTS モデルをローカルで実行し、高品質な音声合成を利用します。このガイドでは、Libre WebUI に 同梱された OpenAI-compatible サーバーを使う Pocket TTS(CPU)と TTS 1.6B(GPU)の両方を説明します。

概要

Kyutai は 2 つの TTS モデルを提供しています。

モデルパラメーターデバイス最適な用途
Pocket TTS100MCPU のみノート PC、リソースの少ない環境
TTS 1.6B1.6BGPU/MPS/CPUサーバー、高品質な音声合成

どちらも CALM(Continuous Audio Language Models)framework を使用し、音声サンプルからの音声クローニングに対応しています。

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
  • CPU core を 2 個だけ使用

TTS 1.6B(GPU)

GPU acceleration を使用する高品質な TTS です。デバイスは CUDA > MPS > CPU の順に自動選択されます。

要件

コンポーネント最小要件推奨
Python3.10+3.12
GPU VRAM6GB8GB+
RAM8GB16GB+
ディスク4GB8GB

対応プラットフォーム

プラットフォームバックエンド詳細
NVIDIA GPUCUDA最高の性能、bfloat16 に対応
Apple SiliconMPSfloat16 を使用
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-p225vctk-p226vctk-p227vctk-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
}
パラメーター既定値説明
modelstringモデル別kyutai-tts または kyutai-tts-1.6b
inputstring必須合成するテキスト(最大 10,000 文字)
voicestringalba音声名または HuggingFace パス
response_formatstringwav音声形式(wav のみ対応)
streambooleanfalseストリーミングを有効にする(Pocket TTS のみ)
cfg_coeffloat2.0classifier-free guidance(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 が必要いいえ任意はい
言語英語英語/仏語10 言語
音声クローニングはいはいはい
音声デザインいいえいいえはい
ポート820082018100

英語中心の用途で設定を簡単にしたい場合は Kyutai を選びます。多言語対応と音声デザイン機能が必要な場合は Qwen3-TTS を選びます。


リソース