Sari la conținutul principal

Integrarea Kyutai TTS

Rulați local modelele TTS Kyutai pentru conversia textului în vorbire de înaltă calitate. Acest ghid prezintă atât Pocket TTS (CPU), cât și TTS 1.6B (GPU), cu servere compatibile cu OpenAI incluse în Libre WebUI.

Prezentare generală

Kyutai oferă două modele TTS:

ModelParametriDispozitivIdeal pentru
Pocket TTS100MNumai CPULaptopuri, medii cu resurse reduse
TTS 1.6B1.6BGPU/MPS/CPUServere, sinteză de înaltă calitate

Ambele folosesc cadrul CALM (Continuous Audio Language Models) și acceptă clonarea vocii din eșantioane audio.

Pocket TTS (CPU)

TTS ușor care rulează în timp real pe CPU. Nu necesită GPU.

Cerințe

ComponentăMinim
Python3.10 - 3.14
PyTorch2.5+
RAM4GB
Disk500MB

Pornire rapidă

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

Serverul rulează la http://localhost:8200.

Testare

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

Voci

VoceDescriere
AlbaFeminină, clară și naturală
MariusMasculină, ton cald
JavertMasculină, autoritară
JeanMasculină, blândă
FantineFeminină, delicată
CosetteFeminină, tânără
EponineFeminină, expresivă
AzelmaFeminină, luminoasă

Performanță

  • ~6x mai rapid decât timpul real pe MacBook Air M4
  • ~200ms latență pentru primul fragment audio
  • Folosește doar 2 nuclee CPU

TTS 1.6B (GPU)

TTS de înaltă calitate cu accelerare GPU. Selectare automată a dispozitivului: CUDA > MPS > CPU.

Cerințe

ComponentăMinimRecomandat
Python3.10+3.12
GPU VRAM6GB8GB+
RAM8GB16GB+
Disk4GB8GB

Platforme acceptate

PlatformăBackendNote
NVIDIA GPUCUDACea mai bună performanță, acceptă bfloat16
Apple SiliconMPSFolosește float16
CPUPyTorchMai lent, float32

Pornire rapidă

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

Serverul rulează la http://localhost:8201.

Selectarea dispozitivului

# 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

Testare

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

Voci

Alba MacKenna (CC BY 4.0):

VoceStil
alba / alba-casualConversație informală
alba-merchantPersonaj de negustor
alba-announcerStil de crainic

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

VoceEmoție
expresso-happyFericită
expresso-sadTristă
expresso-angryFurioasă

VCTK (CC BY 4.0):

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

Clonarea vocii

Ambele servere acceptă clonarea vocilor din fișiere 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

Transmiteți orice cale vocală HuggingFace ca parametru 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

Referință API

Generarea vorbirii

Adresă API: POST /v1/audio/speech

{
"model": "kyutai-tts",
"input": "Text to convert to speech",
"voice": "alba",
"response_format": "wav",
"stream": false
}
ParametruTipImplicitDescriere
modelstringvariazăkyutai-tts sau kyutai-tts-1.6b
inputstringobligatoriuText de sintetizat (max. 10,000 de caractere)
voicestringalbaNumele vocii sau calea HuggingFace
response_formatstringwavFormat audio (este acceptat numai wav)
streambooleanfalseActivează redarea în flux (numai Pocket TTS)
cfg_coeffloat2.0Ghidare fără clasificator (numai 1.6B)

Răspuns: Fișier audio (audio/wav)

Aliasuri de voce OpenAI

Pentru compatibilitate cu clienții OpenAI TTS:

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

Lista vocilor

Adresă API: GET /v1/voices

Verificarea stării

Adresă API: GET /health


Configurarea pluginului

Pocket TTS

Activați în Setări > Pluginuri > Kyutai TTS

Fișier 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

Activați în Setări > Pluginuri > Kyutai TTS 1.6B

Fișier 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
}
}
}
}

Acces în rețea

Pentru acces de pe alte computere:

# 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ți în mod corespunzător endpoint-ul pluginului:

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

Depanare

Descărcarea modelului eșuează

Modelele se descarcă de la HuggingFace la prima rulare:

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

Memorie CUDA insuficientă

Pentru TTS 1.6B cu VRAM limitată:

  1. Închideți alte aplicații GPU
  2. Încercați cfg_coef=1.5 pentru utilizare mai redusă a memoriei
  3. Folosiți Pocket TTS (bazat pe CPU)

Probleme de calitate audio

  • Sunet robotic: Încercați o altă voce
  • Sunet întrerupt: Textul poate fi prea lung; serverul îl împarte automat
  • Pronunție greșită: Modelul este optimizat pentru engleză și franceză

Probleme MPS (Apple Silicon)

RuntimeError: MPS backend error

Modelul 1.6B folosește float16 pe MPS. Dacă problemele persistă, impuneți CPU:

python server.py --device cpu

Comparație cu Qwen3-TTS

FuncțieKyutai PocketKyutai 1.6BQwen3-TTS
Parametri100M1.6B0.6B-1.7B
GPU necesarNuOpționalDa
LimbiEnglezăEN/FR10 limbi
Clonarea vociiDaDaDa
Proiectarea vociiNuNuDa
Port820082018100

Alegeți Kyutai pentru utilizări axate pe engleză și o configurare mai simplă. Alegeți Qwen3-TTS pentru suport multilingv și funcții de proiectare a vocii.


Resurse