Saltar al contenido principal

Integración de Kyutai TTS

Ejecuta localmente los modelos TTS de Kyutai para obtener texto a voz de alta calidad. Esta guía cubre Pocket TTS (CPU) y TTS 1.6B (GPU), con servidores compatibles con OpenAI incluidos en Libre WebUI.

Resumen

Kyutai ofrece dos modelos TTS:

ModeloParámetrosDispositivoUso recomendado
Pocket TTS100MSolo CPUPortátiles y entornos con pocos recursos
TTS 1.6B1.6BGPU/MPS/CPUServidores y síntesis de alta calidad

Ambos utilizan el marco CALM (Continuous Audio Language Models) y admiten clonación de voz a partir de muestras.

Pocket TTS (CPU)

TTS ligero que funciona en tiempo real en CPU. No requiere GPU.

Requisitos

ComponenteMínimo
Python3.10 - 3.14
PyTorch2.5+
RAM4GB
Disco500MB

Inicio rápido

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

El servidor se ejecuta en http://localhost:8200.

Probarlo

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

Voces

VozDescripción
AlbaFemenina, clara y natural
MariusMasculina, tono cálido
JavertMasculina, autoritaria
JeanMasculina, suave
FantineFemenina, suave
CosetteFemenina, joven
EponineFemenina, expresiva
AzelmaFemenina, luminosa

Rendimiento

  • ~6x tiempo real en un MacBook Air M4
  • ~200ms de latencia hasta el primer fragmento de audio
  • Solo utiliza 2 núcleos de CPU

TTS 1.6B (GPU)

TTS de alta calidad acelerado por GPU. Selección automática: CUDA > MPS > CPU.

Requisitos

ComponenteMínimoRecomendado
Python3.10+3.12
GPU VRAM6GB8GB+
RAM8GB16GB+
Disco4GB8GB

Plataformas compatibles

PlataformaBackendNotas
NVIDIA GPUCUDAMejor rendimiento, admite bfloat16
Apple SiliconMPSUtiliza float16
CPUPyTorchMás lento, utiliza float32

Inicio rápido

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

El servidor se ejecuta en http://localhost:8201.

Selección del dispositivo

# 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

Probarlo

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

Voces

Alba MacKenna (CC BY 4.0):

VozEstilo
alba / alba-casualConversación informal
alba-merchantPersonaje comerciante
alba-announcerEstilo de locutor

Expresso (CC BY-NC 4.0 - no comercial):

VozEmoción
expresso-happyAlegre
expresso-sadTriste
expresso-angryEnfadada

VCTK (CC BY 4.0):

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

Clonación de voz

Ambos servidores admiten la clonación desde archivos de 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

Pasa cualquier ruta de voz de HuggingFace como parámetro 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

Referencia de la API

Generación de voz

Endpoint: POST /v1/audio/speech

{
"model": "kyutai-tts",
"input": "Text to convert to speech",
"voice": "alba",
"response_format": "wav",
"stream": false
}
ParámetroTipoPredeterminadoDescripción
modelstringvariablekyutai-tts o kyutai-tts-1.6b
inputstringobligatorioTexto que sintetizar (máximo 10,000 caracteres)
voicestringalbaNombre de voz o ruta HuggingFace
response_formatstringwavFormato de audio (solo se admite wav)
streambooleanfalseActivar streaming (solo Pocket TTS)
cfg_coeffloat2.0Guía sin clasificador (solo 1.6B)

Respuesta: archivo de audio (audio/wav)

Alias de voces OpenAI

Para mantener la compatibilidad con clientes TTS de OpenAI:

Voz OpenAIPocket TTSTTS 1.6B
alloyalbaalba
echomariusvctk-p225
fablecosetteexpresso-happy
onyxjavertvctk-p226
novafantinealba-announcer
shimmereponinealba-merchant

Enumerar voces

Endpoint: GET /v1/voices

Comprobación de estado

Endpoint: GET /health


Configuración de plugins

Pocket TTS

Actívalo en Ajustes > Plugins > Kyutai TTS

Archivo del 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

Actívalo en Ajustes > Plugins > Kyutai TTS 1.6B

Archivo del 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
}
}
}
}

Acceso de red

Para acceder desde otros equipos:

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

Actualiza el endpoint del plugin:

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

Solución de problemas

Falla la descarga del modelo

Los modelos se descargan de HuggingFace la primera vez:

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

Memoria CUDA agotada

Para TTS 1.6B con poca VRAM:

  1. Cierra otras aplicaciones de GPU.
  2. Prueba cfg_coef=1.5 para consumir menos memoria.
  3. Utiliza Pocket TTS (basado en CPU).

Problemas de calidad

  • Sonido robótico: prueba otra voz.
  • Audio cortado: el texto puede ser demasiado largo; el servidor lo divide automáticamente.
  • Pronunciación incorrecta: el modelo está optimizado para inglés y francés.

Problemas con MPS (Apple Silicon)

RuntimeError: MPS backend error

El modelo 1.6B utiliza float16 en MPS. Si persiste, fuerza CPU:

python server.py --device cpu

Comparación con Qwen3-TTS

FunciónKyutai PocketKyutai 1.6BQwen3-TTS
Parámetros100M1.6B0.6B-1.7B
GPU necesariaNoOpcional
IdiomasInglésEN/FR10 languages
Clonación
Diseño de vozNoNo
Puerto820082018100

Elige Kyutai para casos centrados en inglés con configuración sencilla. Elige Qwen3-TTS para soporte multilingüe y diseño de voz.


Recursos