Aller au contenu principal

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èleParamètresMatérielUsage idéal
Pocket TTS100MProcesseur uniquementOrdinateurs portables, environnements modestes
TTS 1.6B1.6BGPU/MPS/CPUServeurs, 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

ComposantMinimum
Python3.10 - 3.14
PyTorch2.5+
RAM4GB
Disque500MB

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

VoixDescription
AlbaFéminine, claire et naturelle
MariusMasculine, ton chaleureux
JavertMasculine, autoritaire
JeanMasculine, douce
FantineFéminine, douce
CosetteFéminine, jeune
EponineFéminine, expressive
AzelmaFé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

ComposantMinimumRecommandé
Python3.10+3.12
VRAM GPU6GB8GB+
RAM8GB16GB+
Disque4GB8GB

Plateformes prises en charge

PlateformeServeur dorsalRemarques
GPU NVIDIACUDAMeilleures performances, prise en charge de bfloat16
Apple SiliconMPSUtilise float16
ProcesseurPyTorchPlus 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) :

VoixStyle
alba / alba-casualConversation décontractée
alba-merchantPersonnage de marchand
alba-announcerStyle d’annonce

Expresso (CC BY-NC 4.0 - usage non commercial) :

VoixÉmotion
expresso-happyJoie
expresso-sadTristesse
expresso-angryColè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ètreTypeValeur par défautDescription
modelstringvariablekyutai-tts ou kyutai-tts-1.6b
inputstringobligatoireTexte à synthétiser (10,000 caractères au maximum)
voicestringalbaNom de la voix ou chemin HuggingFace
response_formatstringwavFormat audio (seul wav est pris en charge)
streambooleanfalseActiver la diffusion (Pocket TTS uniquement)
cfg_coeffloat2.0Guidage 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 OpenAIPocket TTSTTS 1.6B
alloyalbaalba
echomariusvctk-p225
fablecosetteexpresso-happy
onyxjavertvctk-p226
novafantinealba-announcer
shimmereponinealba-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 :

  1. Fermez les autres applications qui utilisent la carte graphique.
  2. Essayez cfg_coef=1.5 afin de réduire l’utilisation de la mémoire.
  3. 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 PocketKyutai 1.6BQwen3-TTS
Paramètres100M1.6B0.6B-1.7B
GPU requisNonFacultatifOui
LanguesAnglaisEN/FR10 langues
Clonage de voixOuiOuiOui
Création de voixNonNonOui
Port820082018100

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