Integrasi Kyutai TTS
Jalankan model TTS Kyutai secara lokal untuk teks-ke-ucapan berkualitas tinggi. Panduan ini mencakup Pocket TTS (CPU) dan TTS 1.6B (GPU) dengan server kompatibel OpenAI yang disertakan dalam Libre WebUI.
Ikhtisar
Kyutai menawarkan dua model TTS:
| Model | Parameter | Perangkat | Paling Sesuai Untuk |
|---|---|---|---|
| Pocket TTS | 100M | Hanya CPU | Laptop, lingkungan minim sumber daya |
| TTS 1.6B | 1.6B | GPU/MPS/CPU | Server, sintesis berkualitas tinggi |
Keduanya menggunakan kerangka CALM (Continuous Audio Language Models) dan mendukung kloning suara dari sampel audio.
Pocket TTS (CPU)
TTS ringan yang berjalan secara waktu nyata pada CPU. Tidak memerlukan GPU.
Persyaratan
| Komponen | Minimum |
|---|---|
| Python | 3.10 - 3.14 |
| PyTorch | 2.5+ |
| RAM | 4GB |
| Disk | 500MB |
Mulai Cepat
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
Server berjalan di http://localhost:8200.
Menguji
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
Suara
| Suara | Deskripsi |
|---|---|
| Alba | Perempuan, jernih dan alami |
| Marius | Laki-laki, nada hangat |
| Javert | Laki-laki, berwibawa |
| Jean | Laki-laki, lembut |
| Fantine | Perempuan, lembut |
| Cosette | Perempuan, muda |
| Eponine | Perempuan, ekspresif |
| Azelma | Perempuan, cerah |
Performa
- ~6x waktu nyata pada MacBook Air M4
- Latensi ~200ms untuk potongan audio pertama
- Hanya menggunakan 2 inti CPU
TTS 1.6B (GPU)
TTS berkualitas tinggi dengan akselerasi GPU. Pemilihan perangkat otomatis: CUDA > MPS > CPU.
Persyaratan
| Komponen | Minimum | Disarankan |
|---|---|---|
| Python | 3.10+ | 3.12 |
| GPU VRAM | 6GB | 8GB+ |
| RAM | 8GB | 16GB+ |
| Disk | 4GB | 8GB |
Dukungan Platform
| Platform | Backend | Catatan |
|---|---|---|
| NVIDIA GPU | CUDA | Performa terbaik, dukungan bfloat16 |
| Apple Silicon | MPS | Menggunakan float16 |
| CPU | PyTorch | Lebih lambat, float32 |
Mulai Cepat
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
Server berjalan di http://localhost:8201.
Pemilihan Perangkat
# 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
Menguji
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
Suara
Alba MacKenna (CC BY 4.0):
| Suara | Gaya |
|---|---|
alba / alba-casual | Percakapan santai |
alba-merchant | Karakter pedagang |
alba-announcer | Gaya penyiar |
Expresso (CC BY-NC 4.0 - non-commercial):
| Suara | Emosi |
|---|---|
expresso-happy | Gembira |
expresso-sad | Sedih |
expresso-angry | Marah |
VCTK (CC BY 4.0):
vctk-p225,vctk-p226,vctk-p227,vctk-p228
Kloning Suara
Kedua server mendukung kloning suara dari berkas 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
Berikan jalur suara HuggingFace apa pun sebagai 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
Referensi API
Pembuatan Ucapan
Endpoint: POST /v1/audio/speech
{
"model": "kyutai-tts",
"input": "Text to convert to speech",
"voice": "alba",
"response_format": "wav",
"stream": false
}
| Parameter | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
model | string | bervariasi | kyutai-tts atau kyutai-tts-1.6b |
input | string | wajib | Teks untuk disintesis (maks. 10.000 karakter) |
voice | string | alba | Nama suara atau jalur HuggingFace |
response_format | string | wav | Format audio (hanya wav didukung) |
stream | boolean | false | Mengaktifkan streaming (hanya Pocket TTS) |
cfg_coef | float | 2.0 | Panduan bebas classifier (hanya 1.6B) |
Respons: Berkas audio (audio/wav)
Alias Suara OpenAI
Untuk kompatibilitas dengan klien OpenAI TTS:
| Suara 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 |
Daftar Suara
Endpoint: GET /v1/voices
Pemeriksaan Kesehatan
Endpoint: GET /health
Konfigurasi Plugin
Pocket TTS
Aktifkan di Pengaturan > Plugin > Kyutai TTS
Berkas 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
Aktifkan di Pengaturan > Plugin > Kyutai TTS 1.6B
Berkas 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
}
}
}
}
Akses Jaringan
Untuk mengakses dari mesin lain:
# 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 ...
Perbarui endpoint plugin sesuai kebutuhan:
{
"endpoint": "http://192.168.1.100:8200/v1/audio/speech"
}
Pemecahan Masalah
Pengunduhan Model Gagal
Model diunduh dari HuggingFace saat pertama kali dijalankan:
# Set token for gated models
export HF_TOKEN=hf_...
Memori CUDA Habis
Untuk TTS 1.6B dengan VRAM terbatas:
- Tutup aplikasi GPU lain
- Coba
cfg_coef=1.5agar penggunaan memori lebih rendah - Gunakan Pocket TTS sebagai gantinya (berbasis CPU)
Masalah Kualitas Audio
- Suara seperti robot: Coba suara lain
- Audio terpotong: Teks mungkin terlalu panjang; server memotongnya secara otomatis
- Pelafalan salah: Model dioptimalkan untuk bahasa Inggris dan Prancis
Masalah MPS (Apple Silicon)
RuntimeError: MPS backend error
Model 1.6B menggunakan float16 pada MPS. Jika masalah berlanjut, paksa penggunaan CPU:
python server.py --device cpu
Perbandingan dengan Qwen3-TTS
| Fitur | Kyutai Pocket | Kyutai 1.6B | Qwen3-TTS |
|---|---|---|---|
| Parameter | 100M | 1.6B | 0.6B-1.7B |
| Memerlukan GPU | Tidak | Opsional | Ya |
| Bahasa | Inggris | EN/FR | 10 bahasa |
| Kloning Suara | Ya | Ya | Ya |
| Desain Suara | Tidak | Tidak | Ya |
| Port | 8200 | 8201 | 8100 |
Pilih Kyutai untuk kasus penggunaan berfokus bahasa Inggris dengan penyiapan lebih sederhana. Pilih Qwen3-TTS untuk dukungan multibahasa dan fitur desain suara.
Sumber Daya
- Kyutai TTS - Halaman proyek resmi
- Pocket TTS GitHub - Model CPU
- Delayed Streams Modeling - Model 1.6B
- Koleksi Suara - Suara yang tersedia
- Kartu Model - Detail teknis