Kyutai TTS-integration
Kør Kyutais TTS-modeller lokalt til tekst-til-tale i høj kvalitet. Vejledningen omfatter både Pocket TTS (CPU) og TTS 1.6B (GPU) med OpenAI-kompatible servere, der følger med Libre WebUI.
Oversigt
Kyutai tilbyder to TTS-modeller:
| Model | Parametre | Enhed | Bedst til |
|---|---|---|---|
| Pocket TTS | 100M | Kun CPU | Bærbare computere, ressourcelette miljøer |
| TTS 1.6B | 1.6B | GPU/MPS/CPU | Servere, syntese i høj kvalitet |
Begge bruger CALM-rammeværket (Continuous Audio Language Models) og understøtter stemmekloning fra lydprøver.
Pocket TTS (CPU)
Let TTS, der kører i realtid på CPU. Ingen GPU kræves.
Krav
| Komponent | Minimum |
|---|---|
| Python | 3.10 - 3.14 |
| PyTorch | 2.5+ |
| RAM | 4GB |
| Disk | 500MB |
Hurtig 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
Serveren kører på 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
Stemmer
| Stemme | Beskrivelse |
|---|---|
| Alba | Kvinde, klar og naturlig |
| Marius | Mand, varm tone |
| Javert | Mand, autoritativ |
| Jean | Mand, blid |
| Fantine | Kvinde, blød |
| Cosette | Kvinde, ung |
| Eponine | Kvinde, udtryksfuld |
| Azelma | Kvinde, lys |
Ydeevne
- Cirka 6 gange realtid på MacBook Air M4
- Cirka 200 ms ventetid til første lydsegment
- Bruger kun 2 CPU-kerner
TTS 1.6B (GPU)
TTS i høj kvalitet med GPU-acceleration. Automatisk enhedsvalg: CUDA > MPS > CPU.
Requirements
| Komponent | Minimum | Anbefalet |
|---|---|---|
| Python | 3.10+ | 3.12 |
| GPU VRAM | 6GB | 8GB+ |
| RAM | 8GB | 16GB+ |
| Disk | 4GB | 8GB |
Platformunderstøttelse
| Platform | Backend | Bemærkninger |
|---|---|---|
| NVIDIA GPU | CUDA | Bedste ydeevne, bfloat16-understøttelse |
| Apple Silicon | MPS | Bruger float16 |
| CPU | PyTorch | Langsommere, float32 |
Hurtig 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
Serveren kører på http://localhost:8201.
Enhedsvalg
# 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
Voices
Alba MacKenna (CC BY 4.0):
| Stemme | Stil |
|---|---|
alba / alba-casual | Uformel samtale |
alba-merchant | Handelskarakter |
alba-announcer | Speakertype |
Expresso (CC BY-NC 4.0 - non-commercial):
| Stemme | Følelse |
|---|---|
expresso-happy | Glad |
expresso-sad | Trist |
expresso-angry | Vred |
VCTK (CC BY 4.0):
vctk-p225,vctk-p226,vctk-p227,vctk-p228
Stemmekloning
Begge servere understøtter stemmekloning fra lydfiler.
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
Send en vilkårlig HuggingFace-stemmesti som parameteren 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-reference
Talegenerering
Endpoint: POST /v1/audio/speech
{
"model": "kyutai-tts",
"input": "Text to convert to speech",
"voice": "alba",
"response_format": "wav",
"stream": false
}
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
model | string | varierer | kyutai-tts eller kyutai-tts-1.6b |
input | string | kræves | Tekst, der skal syntetiseres (højst 10.000 tegn) |
voice | string | alba | Stemmenavn eller HuggingFace-sti |
response_format | string | wav | Lydformat (kun wav understøttes) |
stream | boolean | false | Aktivér streaming (kun Pocket TTS) |
cfg_coef | float | 2.0 | Klassifikatorfri vejledning (kun 1.6B) |
Svar: Lydfil (audio/wav)
OpenAI-stemmealiaser
For kompatibilitet med OpenAI TTS-klienter:
| OpenAI-stemme | 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 |
Vis stemmer
Endpoint: GET /v1/voices
Helbredskontrol
Endpoint: GET /health
Plugin-konfiguration
Pocket TTS
Aktivér under Indstillinger > Plugins > Kyutai TTS
Pluginfil: 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
Aktivér under Indstillinger > Plugins > Kyutai TTS 1.6B
Pluginfil: 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
}
}
}
}
Netværksadgang
For adgang fra andre maskiner:
# 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 ...
Opdatér plugin-endpointet derefter:
{
"endpoint": "http://192.168.1.100:8200/v1/audio/speech"
}
Fejlfinding
Modelhentning mislykkes
Modeller hentes fra HuggingFace ved første kørsel:
# Set token for gated models
export HF_TOKEN=hf_...
CUDA løber tør for hukommelse
For TTS 1.6B med begrænset VRAM:
- Luk andre GPU-programmer
- Prøv
cfg_coef=1.5for lavere hukommelsesforbrug - Brug Pocket TTS i stedet (CPU-baseret)
Problemer med lydkvalitet
- Robotagtig lyd: Prøv en anden stemme
- Afklippet lyd: Teksten kan være for lang; serveren segmenterer automatisk
- Forkert udtale: Modellen er optimeret til engelsk og fransk
Problemer med MPS (Apple Silicon)
RuntimeError: MPS backend error
1.6B-modellen bruger float16 på MPS. Tving CPU, hvis problemerne fortsætter:
python server.py --device cpu
Sammenligning med Qwen3-TTS
| Funktion | Kyutai Pocket | Kyutai 1.6B | Qwen3-TTS |
|---|---|---|---|
| Parametre | 100M | 1.6B | 0.6B-1.7B |
| GPU kræves | Nej | Valgfrit | Ja |
| Sprog | Engelsk | EN/FR | 10 sprog |
| Stemmekloning | Ja | Ja | Ja |
| Stemmedesign | Nej | Nej | Ja |
| Port | 8200 | 8201 | 8100 |
Vælg Kyutai til engelskorienterede brugssager med enklere konfiguration. Vælg Qwen3-TTS til flersproget understøttelse og stemmedesign.
Ressourcer
- Kyutai TTS - Officiel projektside
- Pocket TTS GitHub - CPU-model
- Delayed Streams Modeling - 1.6B-model
- Stemmesamling - Tilgængelige stemmer
- Modelkort - Tekniske oplysninger