Integrace Kyutai TTS
Spusťte modely TTS Kyutai místně pro vysoce kvalitní převod textu na řeč. Příručka pokrývá Pocket TTS (CPU) i TTS 1.6B (GPU) se servery kompatibilními s OpenAI, které jsou součástí Libre WebUI.
Přehled
Kyutai nabízí dva modely TTS:
| Model | Parametry | Zařízení | Nejvhodnější pro |
|---|---|---|---|
| Pocket TTS | 100M | Pouze CPU | Notebooky, prostředí s málem prostředků |
| TTS 1.6B | 1.6B | GPU/MPS/CPU | Servery, kvalitní syntéza |
Oba používají framework CALM (Continuous Audio Language Models) a podporují klonování hlasu ze zvukových vzorků.
Pocket TTS (CPU)
Lehký TTS běžící v reálném čase na CPU. GPU není potřeba.
Požadavky
| Komponenta | Minimum |
|---|---|
| Python | 3.10 - 3.14 |
| PyTorch | 2.5+ |
| RAM | 4GB |
| Disk | 500MB |
Rychlý start
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
Server běží na http://localhost:8200.
Test
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
Hlasy
| Hlas | Popis |
|---|---|
| Alba | Žena, jasný a přirozený |
| Marius | Muž, teplý tón |
| Javert | Muž, autoritativní |
| Jean | Muž, jemný |
| Fantine | Žena, měkký |
| Cosette | Žena, mladý |
| Eponine | Žena, expresivní |
| Azelma | Žena, jasný |
Výkon
- Přibližně šestinásobek reálného času na MacBook Air M4
- Latence asi 200 ms pro první zvukový úsek
- Používá pouze 2 jádra CPU
TTS 1.6B (GPU)
Vysoce kvalitní TTS s akcelerací GPU. Automatický výběr zařízení: CUDA > MPS > CPU.
Requirements
| Komponenta | Minimum | Doporučeno |
|---|---|---|
| Python | 3.10+ | 3.12 |
| GPU VRAM | 6GB | 8GB+ |
| RAM | 8GB | 16GB+ |
| Disk | 4GB | 8GB |
Podpora platforem
| Platforma | Backend | Poznámky |
|---|---|---|
| NVIDIA GPU | CUDA | Nejlepší výkon, podpora bfloat16 |
| Apple Silicon | MPS | Používá float16 |
| CPU | PyTorch | Pomalejší, float32 |
Quick Start
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
Server běží na http://localhost:8201.
Výběr zařízení
# 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
Test It
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
Hlasy
Alba MacKenna (CC BY 4.0):
| Hlas | Styl |
|---|---|
alba / alba-casual | Neformální konverzace |
alba-merchant | Postava obchodníka |
alba-announcer | Styl hlasatele |
Expresso (CC BY-NC 4.0 - non-commercial):
| Hlas | Emoce |
|---|---|
expresso-happy | Radost |
expresso-sad | Smutek |
expresso-angry | Hněv |
VCTK (CC BY 4.0):
vctk-p225,vctk-p226,vctk-p227,vctk-p228
Klonování hlasu
Oba servery podporují klonování hlasu ze zvukových souborů.
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
Předejte libovolnou cestu hlasu HuggingFace jako parametr 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
Referenční příručka API
Speech Generation
Endpoint: POST /v1/audio/speech
{
"model": "kyutai-tts",
"input": "Text to convert to speech",
"voice": "alba",
"response_format": "wav",
"stream": false
}
| Parametr | Typ | Výchozí | Popis |
|---|---|---|---|
model | string | různé | kyutai-tts nebo kyutai-tts-1.6b |
input | string | povinné | Text k syntéze (max. 10 000 znaků) |
voice | string | alba | Název hlasu nebo cesta HuggingFace |
response_format | string | wav | Formát zvuku (podporuje se jen wav) |
stream | boolean | false | Zapnout streamování (jen Pocket TTS) |
cfg_coef | float | 2.0 | Vedení bez klasifikátoru (jen 1.6B) |
Odpověď: Zvukový soubor (audio/wav)
OpenAI Voice Aliases
Pro kompatibilitu s klienty OpenAI TTS:
| OpenAI Voice | 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 |
List Voices
Endpoint: GET /v1/voices
Health Check
Endpoint: GET /health
Konfigurace pluginu
Pocket TTS
Zapněte v Nastavení > Pluginy > Kyutai TTS
Soubor pluginu: 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
Zapněte v Nastavení > Pluginy > Kyutai TTS 1.6B
Soubor pluginu: 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
}
}
}
}
Přístup k síti
Pro přístup z jiných počítačů:
# 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 ...
Podle toho aktualizujte endpoint pluginu:
{
"endpoint": "http://192.168.1.100:8200/v1/audio/speech"
}
Řešení potíží
Model Download Fails
Modely se při prvním spuštění stahují z HuggingFace:
# Set token for gated models
export HF_TOKEN=hf_...
CUDA Out of Memory
Pro TTS 1.6B s omezenou VRAM:
- Zavřete jiné aplikace GPU
- Zkuste
cfg_coef=1.5pro menší spotřebu paměti - Použijte Pocket TTS (CPU)
Audio Quality Issues
- Robotický zvuk: Zkuste jiný hlas
- Oříznutý zvuk: Text může být příliš dlouhý; server jej automaticky rozdělí
- Špatná výslovnost: Model je optimalizovaný pro angličtinu a francouzštinu
MPS (Apple Silicon) Issues
RuntimeError: MPS backend error
Model 1.6B používá float16 na MPS. Pokud potíže trvají, vynuťte CPU:
python server.py --device cpu
Porovnání s Qwen3-TTS
| Funkce | Kyutai Pocket | Kyutai 1.6B | Qwen3-TTS |
|---|---|---|---|
| Parametry | 100M | 1.6B | 0.6B-1.7B |
| Vyžaduje GPU | Ne | Volitelně | Ano |
| Jazyky | Angličtina | EN/FR | 10 jazyků |
| Klonování hlasu | Ano | Ano | Ano |
| Návrh hlasu | Ne | Ne | Ano |
| Port | 8200 | 8201 | 8100 |
Kyutai zvolte pro případy zaměřené na angličtinu s jednodušší konfigurací. Qwen3-TTS zvolte pro vícejazyčnou podporu a návrh hlasu.
Zdroje
- Kyutai TTS - Oficiální stránka projektu
- Pocket TTS GitHub - Model CPU
- Delayed Streams Modeling - Model 1.6B
- Kolekce hlasů - Dostupné hlasy
- Karta modelu - Technické podrobnosti