Intégration de Kyutai TTS
Exécutez localement les modèles TTS de Kyutai pour obtenir une synthèse vocale de haute qualité. Ce guide présente Pocket TTS (processeur) et TTS 1.6B (carte graphique), avec les serveurs compatibles avec OpenAI inclus dans Libre WebUI.
Présentation
Kyutai propose deux modèles TTS :
| Modèle | Paramètres | Matériel | Usage idéal |
|---|---|---|---|
| Pocket TTS | 100M | Processeur uniquement | Ordinateurs portables, environnements modestes |
| TTS 1.6B | 1.6B | GPU/MPS/CPU | Serveurs, synthèse de haute qualité |
Tous deux utilisent le cadre CALM (Continuous Audio Language Models) et prennent en charge le clonage de voix à partir d’échantillons audio.
Pocket TTS (processeur)
Solution TTS légère qui s’exécute en temps réel sur le processeur. Aucune carte graphique n’est requise.
Configuration requise
| Composant | Minimum |
|---|---|
| Python | 3.10 - 3.14 |
| PyTorch | 2.5+ |
| RAM | 4GB |
| Disque | 500MB |
Démarrage rapide
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
Le serveur s’exécute sur http://localhost:8200.
Tester le serveur
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
Voix
| Voix | Description |
|---|---|
| Alba | Féminine, claire et naturelle |
| Marius | Masculine, ton chaleureux |
| Javert | Masculine, autoritaire |
| Jean | Masculine, douce |
| Fantine | Féminine, douce |
| Cosette | Féminine, jeune |
| Eponine | Féminine, expressive |
| Azelma | Féminine, lumineuse |
Performances
- Environ 6 fois le temps réel sur un MacBook Air M4
- Environ 200ms de latence pour le premier fragment audio
- Utilise seulement 2 cœurs de processeur
TTS 1.6B (carte graphique)
TTS de haute qualité avec accélération graphique. Sélection automatique du matériel : CUDA > MPS > CPU.
Configuration requise
| Composant | Minimum | Recommandé |
|---|---|---|
| Python | 3.10+ | 3.12 |
| VRAM GPU | 6GB | 8GB+ |
| RAM | 8GB | 16GB+ |
| Disque | 4GB | 8GB |
Plateformes prises en charge
| Plateforme | Serveur dorsal | Remarques |
|---|---|---|
| GPU NVIDIA | CUDA | Meilleures performances, prise en charge de bfloat16 |
| Apple Silicon | MPS | Utilise float16 |
| Processeur | PyTorch | Plus lent, float32 |
Démarrage rapide
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
Le serveur s’exécute sur http://localhost:8201.
Sélection du matériel
# 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
Tester le serveur
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
Voix
Alba MacKenna (CC BY 4.0) :
| Voix | Style |
|---|---|
alba / alba-casual | Conversation décontractée |
alba-merchant | Personnage de marchand |
alba-announcer | Style d’annonce |
Expresso (CC BY-NC 4.0 - usage non commercial) :
| Voix | Émotion |
|---|---|
expresso-happy | Joie |
expresso-sad | Tristesse |
expresso-angry | Colère |
VCTK (CC BY 4.0) :
vctk-p225,vctk-p226,vctk-p227,vctk-p228
Clonage de voix
Les deux serveurs prennent en charge le clonage de voix à partir de fichiers audio.
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
Transmettez tout chemin de voix HuggingFace comme paramètre 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
Référence de l’API
Génération vocale
Point de terminaison : POST /v1/audio/speech
{
"model": "kyutai-tts",
"input": "Text to convert to speech",
"voice": "alba",
"response_format": "wav",
"stream": false
}
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
model | string | variable | kyutai-tts ou kyutai-tts-1.6b |
input | string | obligatoire | Texte à synthétiser (10,000 caractères au maximum) |
voice | string | alba | Nom de la voix ou chemin HuggingFace |
response_format | string | wav | Format audio (seul wav est pris en charge) |
stream | boolean | false | Activer la diffusion (Pocket TTS uniquement) |
cfg_coef | float | 2.0 | Guidage sans classificateur (1.6B uniquement) |
Réponse : fichier audio (audio/wav)
Alias de voix OpenAI
Pour assurer la compatibilité avec les clients TTS OpenAI :
| Voix OpenAI | 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 |
Répertorier les voix
Point de terminaison : GET /v1/voices
Contrôle d’intégrité
Point de terminaison : GET /health
Configuration des plugins
Pocket TTS
Activez-le sous Paramètres > Plugins > Kyutai TTS
Fichier du plugin : 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
Activez-le sous Paramètres > Plugins > Kyutai TTS 1.6B
Fichier du plugin : 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
}
}
}
}
Accès réseau
Pour y accéder depuis d’autres machines :
# 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 ...
Mettez à jour le point de terminaison du plugin en conséquence :
{
"endpoint": "http://192.168.1.100:8200/v1/audio/speech"
}
Dépannage
Échec du téléchargement du modèle
Les modèles sont téléchargés depuis HuggingFace lors de la première exécution :
# Set token for gated models
export HF_TOKEN=hf_...
Mémoire CUDA insuffisante
Pour TTS 1.6B avec une VRAM limitée :
- Fermez les autres applications qui utilisent la carte graphique.
- Essayez
cfg_coef=1.5afin de réduire l’utilisation de la mémoire. - Utilisez plutôt Pocket TTS (sur processeur).
Problèmes de qualité audio
- Son robotique : essayez une autre voix.
- Audio tronqué : le texte est peut-être trop long ; le serveur le découpe automatiquement.
- Mauvaise prononciation : le modèle est optimisé pour l’anglais et le français.
Problèmes MPS (Apple Silicon)
RuntimeError: MPS backend error
Le modèle 1.6B utilise float16 sur MPS. Si les problèmes persistent, forcez l’utilisation du processeur :
python server.py --device cpu
Comparaison avec Qwen3-TTS
| Fonctionnalité | Kyutai Pocket | Kyutai 1.6B | Qwen3-TTS |
|---|---|---|---|
| Paramètres | 100M | 1.6B | 0.6B-1.7B |
| GPU requis | Non | Facultatif | Oui |
| Langues | Anglais | EN/FR | 10 langues |
| Clonage de voix | Oui | Oui | Oui |
| Création de voix | Non | Non | Oui |
| Port | 8200 | 8201 | 8100 |
Choisissez Kyutai pour les usages centrés sur l’anglais avec une configuration plus simple. Choisissez Qwen3-TTS pour la prise en charge multilingue et les fonctionnalités de création de voix.
Ressources
- Kyutai TTS - Page officielle du projet
- Pocket TTS sur GitHub - Modèle pour processeur
- Delayed Streams Modeling - Modèle 1.6B
- Collection de voix - Voix disponibles
- Fiche du modèle - Détails techniques