Zum Hauptinhalt springen

Kyutai TTS-Integration

Führe Kyutais TTS-Modelle lokal für hochwertige Text-zu-Sprache-Ausgabe aus. Diese Anleitung behandelt Pocket TTS (CPU) und TTS 1.6B (GPU) mit den in Libre WebUI enthaltenen OpenAI-kompatiblen Servern.

Übersicht

Kyutai bietet zwei TTS-Modelle:

ModellParameterGerätAm besten geeignet für
Pocket TTS100MNur CPULaptops und ressourcenarme Umgebungen
TTS 1.6B1.6BGPU/MPS/CPUServer und hochwertige Synthese

Beide verwenden das CALM-Framework (Continuous Audio Language Models) und unterstützen das Klonen von Stimmen aus Audioaufnahmen.

Pocket TTS (CPU)

Leichtgewichtiges TTS, das in Echtzeit auf der CPU läuft. Keine GPU erforderlich.

Anforderungen

KomponenteMinimum
Python3.10 - 3.14
PyTorch2.5+
RAM4GB
Speicher500MB

Schnellstart

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

Der Server läuft unter http://localhost:8200.

Testen

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

Stimmen

StimmeBeschreibung
AlbaWeiblich, klar und natürlich
MariusMännlich, warmer Ton
JavertMännlich, autoritär
JeanMännlich, sanft
FantineWeiblich, weich
CosetteWeiblich, jung
EponineWeiblich, ausdrucksstark
AzelmaWeiblich, hell

Leistung

  • Etwa 6x Echtzeit auf einem MacBook Air M4
  • Etwa 200ms Latenz bis zum ersten Audioausschnitt
  • Verwendet nur 2 CPU-Kerne

TTS 1.6B (GPU)

Hochwertiges TTS mit GPU-Beschleunigung. Automatische Gerätewahl: CUDA > MPS > CPU.

Anforderungen

KomponenteMinimumEmpfohlen
Python3.10+3.12
GPU VRAM6GB8GB+
RAM8GB16GB+
Speicher4GB8GB

Plattformunterstützung

PlattformBackendHinweise
NVIDIA GPUCUDABeste Leistung, unterstützt bfloat16
Apple SiliconMPSVerwendet float16
CPUPyTorchLangsamer, verwendet float32

Schnellstart

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

Der Server läuft unter http://localhost:8201.

Geräteauswahl

# 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

Testen

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

Stimmen

Alba MacKenna (CC BY 4.0):

StimmeStil
alba / alba-casualLockere Unterhaltung
alba-merchantHändlerfigur
alba-announcerAnsagerstil

Expresso (CC BY-NC 4.0 - nicht kommerziell):

StimmeEmotion
expresso-happyFröhlich
expresso-sadTraurig
expresso-angryWütend

VCTK (CC BY 4.0):

  • vctk-p225, vctk-p226, vctk-p227, vctk-p228

Stimmenklonen

Beide Server unterstützen das Klonen aus Audiodateien.

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

Übergib einen beliebigen HuggingFace-Stimmenpfad als Parameter 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-Referenz

Spracherzeugung

Endpunkt: POST /v1/audio/speech

{
"model": "kyutai-tts",
"input": "Text to convert to speech",
"voice": "alba",
"response_format": "wav",
"stream": false
}
ParameterTypStandardBeschreibung
modelstringverschiedenkyutai-tts oder kyutai-tts-1.6b
inputstringerforderlichZu synthetisierender Text (maximal 10,000 Zeichen)
voicestringalbaStimmenname oder HuggingFace-Pfad
response_formatstringwavAudioformat (nur wav unterstützt)
streambooleanfalseStreaming aktivieren (nur Pocket TTS)
cfg_coeffloat2.0Klassifikatorfreie Führung (nur 1.6B)

Antwort: Audiodatei (audio/wav)

OpenAI-Stimmenaliase

Zur Kompatibilität mit OpenAI-TTS-Clients:

OpenAI-StimmePocket TTSTTS 1.6B
alloyalbaalba
echomariusvctk-p225
fablecosetteexpresso-happy
onyxjavertvctk-p226
novafantinealba-announcer
shimmereponinealba-merchant

Stimmen auflisten

Endpunkt: GET /v1/voices

Zustandsprüfung

Endpunkt: GET /health


Plugin-Konfiguration

Pocket TTS

Aktiviere es unter Einstellungen > Plugins > Kyutai TTS

Plugin-Datei: 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

Aktiviere es unter Einstellungen > Plugins > Kyutai TTS 1.6B

Plugin-Datei: 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
}
}
}
}

Netzwerkzugriff

Für den Zugriff von anderen Geräten:

# 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 ...

Aktualisiere den Plugin-Endpunkt entsprechend:

{
"endpoint": "http://192.168.1.100:8200/v1/audio/speech"
}

Fehlerbehebung

Modelldownload schlägt fehl

Modelle werden beim ersten Start von HuggingFace geladen:

# Set token for gated models
export HF_TOKEN=hf_...

CUDA-Speicher erschöpft

Für TTS 1.6B bei begrenztem VRAM:

  1. Schließe andere GPU-Anwendungen.
  2. Versuche cfg_coef=1.5 für geringeren Speicherbedarf.
  3. Verwende Pocket TTS auf der CPU.

Probleme mit der Audioqualität

  • Robotischer Klang: Probiere eine andere Stimme.
  • Abgeschnittenes Audio: Der Text könnte zu lang sein; der Server teilt automatisch.
  • Falsche Aussprache: Das Modell ist für Englisch und Französisch optimiert.

MPS-Probleme (Apple Silicon)

RuntimeError: MPS backend error

Das 1.6B-Modell verwendet float16 auf MPS. Erzwinge bei Problemen die CPU:

python server.py --device cpu

Vergleich mit Qwen3-TTS

FunktionKyutai PocketKyutai 1.6BQwen3-TTS
Parameter100M1.6B0.6B-1.7B
GPU erforderlichNeinOptionalJa
SprachenEnglischEN/FR10 languages
StimmenklonenJaJaJa
StimmendesignNeinNeinJa
Port820082018100

Wähle Kyutai für englischzentrierte Anwendungsfälle mit einfacher Einrichtung. Wähle Qwen3-TTS für Mehrsprachigkeit und Stimmendesign.


Ressourcen