Kyutai TTS-integráció
Futtassa helyben a Kyutai TTS-modelljeit kiváló minőségű szövegfelolvasáshoz. Ez az útmutató a Pocket TTS (CPU) és a TTS 1.6B (GPU) használatát is bemutatja, a Libre WebUI-hoz mellékelt OpenAI-kompatibilis szerverekkel.
Áttekintés
A Kyutai két TTS-modellt kínál:
| Modell | Paraméterek | Eszköz | Legjobb felhasználás |
|---|---|---|---|
| Pocket TTS | 100M | Csak CPU | Laptopok, erőforrás-szegény környezetek |
| TTS 1.6B | 1.6B | GPU/MPS/CPU | Szerverek, kiváló minőségű szintézis |
Mindkettő a CALM (Continuous Audio Language Models) keretrendszert használja, és támogatja a hangmintákból történő hangklónozást.
Pocket TTS (CPU)
Könnyű TTS, amely valós időben fut CPU-n. Nem szükséges GPU.
Követelmények
| Összetevő | Minimum |
|---|---|
| Python | 3.10 - 3.14 |
| PyTorch | 2.5+ |
| RAM | 4GB |
| Disk | 500MB |
Gyors kezdés
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
A szerver a http://localhost:8200 címen fut.
Tesztelés
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
Hangok
| Hang | Leírás |
|---|---|
| Alba | Női, tiszta és természetes |
| Marius | Férfi, meleg tónusú |
| Javert | Férfi, tekintélyes |
| Jean | Férfi, lágy |
| Fantine | Női, finom |
| Cosette | Női, fiatalos |
| Eponine | Női, kifejező |
| Azelma | Női, élénk |
Teljesítmény
- ~6× valós idejű sebesség MacBook Air M4-en
- ~200ms késleltetés az első hangtöredékig
- Csak 2 CPU-magot használ
TTS 1.6B (GPU)
Kiváló minőségű TTS GPU-gyorsítással. Automatikus eszközválasztás: CUDA > MPS > CPU.
Követelmények
| Összetevő | Minimum | Ajánlott |
|---|---|---|
| Python | 3.10+ | 3.12 |
| GPU VRAM | 6GB | 8GB+ |
| RAM | 8GB | 16GB+ |
| Disk | 4GB | 8GB |
Platformtámogatás
| Platform | Backend | Megjegyzések |
|---|---|---|
| NVIDIA GPU | CUDA | Legjobb teljesítmény, bfloat16-támogatás |
| Apple Silicon | MPS | float16 használata |
| CPU | PyTorch | Lassabb, float32 |
Gyors kezdés
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
A szerver a http://localhost:8201 címen fut.
Eszközválasztás
# 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
Tesztelés
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
Hangok
Alba MacKenna (CC BY 4.0):
| Hang | Stílus |
|---|---|
alba / alba-casual | Kötetlen beszélgetés |
alba-merchant | Kereskedő karakter |
alba-announcer | Bemondói stílus |
Expresso (CC BY-NC 4.0 - non-commercial):
| Hang | Érzelem |
|---|---|
expresso-happy | Vidám |
expresso-sad | Szomorú |
expresso-angry | Mérges |
VCTK (CC BY 4.0):
vctk-p225,vctk-p226,vctk-p227,vctk-p228
Hangklónozás
Mindkét szerver támogatja a hangfájlokból történő hangklónozást.
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
A voice paraméterként bármely HuggingFace hangútvonal megadható:
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-referencia
Beszédgenerálás
API-cím: POST /v1/audio/speech
{
"model": "kyutai-tts",
"input": "Text to convert to speech",
"voice": "alba",
"response_format": "wav",
"stream": false
}
| Paraméter | Típus | Alapérték | Leírás |
|---|---|---|---|
model | string | változó | kyutai-tts vagy kyutai-tts-1.6b |
input | string | kötelező | Szintetizálandó szöveg (legfeljebb 10,000 karakter) |
voice | string | alba | Hangnév vagy HuggingFace-útvonal |
response_format | string | wav | Hangformátum (csak wav támogatott) |
stream | boolean | false | Streaming engedélyezése (csak Pocket TTS) |
cfg_coef | float | 2.0 | Osztályozó nélküli irányítás (csak 1.6B) |
Válasz: Hangfájl (audio/wav)
OpenAI-hangálnevek
Az OpenAI TTS-kliensekkel való kompatibilitáshoz:
| OpenAI-hang | 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 |
Hangok felsorolása
API-cím: GET /v1/voices
Állapotellenőrzés
API-cím: GET /health
Bővítménybeállítás
Pocket TTS
Engedélyezze a Beállítások > Bővítmények > Kyutai TTS alatt
Bővítményfájl: 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
Engedélyezze a Beállítások > Bővítmények > Kyutai TTS 1.6B alatt
Bővítményfájl: 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
}
}
}
}
Hálózati hozzáférés
Más gépekről történő hozzáféréshez:
# 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 ...
Ennek megfelelően frissítse a bővítmény endpointját:
{
"endpoint": "http://192.168.1.100:8200/v1/audio/speech"
}
Hibaelhárítás
A modell letöltése sikertelen
A modellek első futtatáskor a HuggingFace-ről töltődnek le:
# Set token for gated models
export HF_TOKEN=hf_...
Elfogyott a CUDA-memória
TTS 1.6B használata korlátozott VRAM-mal:
- Zárja be a többi GPU-alkalmazást
- Próbálja a
cfg_coef=1.5értéket kisebb memóriahasználathoz - Használja helyette a CPU-alapú Pocket TTS-t
Hangminőségi problémák
- Robotszerű hang: Próbáljon másik hangot
- Levágott hang: Lehet, hogy a szöveg túl hosszú; a szerver automatikusan felosztja
- Hibás kiejtés: A modell angolra és franciára optimalizált
MPS-problémák (Apple Silicon)
RuntimeError: MPS backend error
Az 1.6B modell MPS-en float16-ot használ. Ha a problémák fennállnak, kényszerítse a CPU használatát:
python server.py --device cpu
Összehasonlítás a Qwen3-TTS modellel
| Funkció | Kyutai Pocket | Kyutai 1.6B | Qwen3-TTS |
|---|---|---|---|
| Paraméterek | 100M | 1.6B | 0.6B-1.7B |
| GPU szükséges | Nem | Opcionális | Igen |
| Nyelvek | Angol | EN/FR | 10 nyelv |
| Hangklónozás | Igen | Igen | Igen |
| Hangtervezés | Nem | Nem | Igen |
| Port | 8200 | 8201 | 8100 |
Válassza a Kyutait angolra összpontosító felhasználáshoz és egyszerűbb beállításhoz. Többnyelvű támogatáshoz és hangtervezési funkciókhoz válassza a Qwen3-TTS-t.
Források
- Kyutai TTS - A projekt hivatalos oldala
- Pocket TTS GitHub - CPU-modell
- Delayed Streams Modeling - 1.6B modell
- Hanggyűjtemény - Elérhető hangok
- Modellkártya - Műszaki részletek