Інтеграція Kyutai TTS
Запускайте моделі TTS Kyutai локально для якісного синтезу мовлення. Посібник охоплює Pocket TTS (CPU) і TTS 1.6B (GPU) із сумісними з OpenAI серверами, що входять до Libre WebUI.
Огляд
Kyutai пропонує дві моделі:
| Модель | Параметри | Пристрій | Найкраще застосування |
|---|---|---|---|
| Pocket TTS | 100M | Лише CPU | Ноутбуки й середовища з малими ресурсами |
| TTS 1.6B | 1.6B | GPU/MPS/CPU | Сервери та якісний синтез |
Обидві використовують CALM (Continuous Audio Language Models) і клонують голос за зразками аудіо.
Pocket TTS (CPU)
Легка TTS, що працює в реальному часі на CPU без GPU.
Вимоги
| Компонент | Мінімум |
|---|---|
| Python | 3.10 - 3.14 |
| PyTorch | 2.5+ |
| RAM | 4GB |
| Диск | 500MB |
Швидкий запуск
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
Сервер працює на http://localhost:8200.
Перевірка
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
Голоси
| Голос | Опис |
|---|---|
| Alba | Жіночий, чіткий і природний |
| Marius | Чоловічий, теплий |
| Javert | Чоловічий, владний |
| Jean | Чоловічий, м’який |
| Fantine | Жіночий, ніжний |
| Cosette | Жіночий, молодий |
| Eponine | Жіночий, виразний |
| Azelma | Жіночий, яскравий |
Швидкодія
- Приблизно 6x реального часу на MacBook Air M4
- Близько 200ms затримки до першого фрагмента
- Лише 2 ядра CPU
TTS 1.6B (GPU)
Якісний TTS із прискоренням GPU. Автоматичний вибір: CUDA > MPS > CPU.
Вимоги
| Компонент | Мінімум | Рекомендовано |
|---|---|---|
| Python | 3.10+ | 3.12 |
| GPU VRAM | 6GB | 8GB+ |
| RAM | 8GB | 16GB+ |
| Диск | 4GB | 8GB |
Підтримка платформ
| Платформа | Серверна частина | Примітки |
|---|---|---|
| NVIDIA GPU | CUDA | Найкраща швидкодія, bfloat16 |
| Apple Silicon | MPS | Використовує float16 |
| CPU | PyTorch | Повільніше, float32 |
Швидкий запуск
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
Сервер працює на http://localhost:8201.
Вибір пристрою
# 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
Перевірка
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
Голоси
Alba MacKenna (CC BY 4.0):
| Голос | Стиль |
|---|---|
alba / alba-casual | Невимушена розмова |
alba-merchant | Персонаж торговця |
alba-announcer | Стиль диктора |
Expresso (CC BY-NC 4.0 — некомерційне використання):
| Голос | Емоція |
|---|---|
expresso-happy | Радість |
expresso-sad | Смуток |
expresso-angry | Гнів |
VCTK (CC BY 4.0):
vctk-p225,vctk-p226,vctk-p227,vctk-p228
Клонування голосу
Обидва сервери клонують голос із аудіофайлів.
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
Передайте будь-який шлях голосу HuggingFace як параметр 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
Довідник API
Генерування мовлення
Кінцева точка: POST /v1/audio/speech
{
"model": "kyutai-tts",
"input": "Text to convert to speech",
"voice": "alba",
"response_format": "wav",
"stream": false
}
| Параметр | Тип | Типово | Опис |
|---|---|---|---|
model | string | залежить | kyutai-tts або kyutai-tts-1.6b |
input | string | обов’язковий | Текст до 10,000 символів |
voice | string | alba | Назва голосу або шлях HuggingFace |
response_format | string | wav | Формат аудіо, підтримується лише wav |
stream | boolean | false | Потокове передавання лише Pocket TTS |
cfg_coef | float | 2.0 | Наведення без класифікатора лише 1.6B |
Відповідь: аудіофайл (audio/wav)
Псевдоніми голосів OpenAI
Для сумісності з клієнтами OpenAI TTS:
| Голос 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 |
Перелік голосів
Кінцева точка: GET /v1/voices
Перевірка стану
Кінцева точка: GET /health
Налаштування плагіна
Pocket TTS
Увімкніть у Налаштування > Плагіни > Kyutai TTS
Файл плагіна: 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
Увімкніть у Налаштування > Плагіни > Kyutai TTS 1.6B
Файл плагіна: 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
}
}
}
}
Мережевий доступ
Для доступу з інших машин:
# 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 ...
Оновіть кінцеву точку плагіна:
{
"endpoint": "http://192.168.1.100:8200/v1/audio/speech"
}
Усунення неполадок
Не завантажується модель
Під час першого запуску моделі завантажуються з HuggingFace:
# Set token for gated models
export HF_TOKEN=hf_...
Не вистачає пам’яті CUDA
Для TTS 1.6B з обмеженою VRAM:
- Закрийте інші застосунки GPU
- Спробуйте
cfg_coef=1.5для меншого використання пам’яті - Використайте Pocket TTS на CPU
Проблеми якості аудіо
- Роботизований звук: спробуйте інший голос
- Обрізаний звук: текст може бути задовгим, сервер автоматично ділить його
- Неправильна вимова: модель оптимізовано для англійської та французької
Проблеми MPS (Apple Silicon)
RuntimeError: MPS backend error
Модель 1.6B використовує float16 у MPS. Якщо проблема не зникає, примусово виберіть CPU:
python server.py --device cpu
Порівняння з Qwen3-TTS
| Функція | Kyutai Pocket | Kyutai 1.6B | Qwen3-TTS |
|---|---|---|---|
| Параметри | 100M | 1.6B | 0.6B-1.7B |
| Потрібен GPU | Ні | Необов’язково | Так |
| Мови | Англійська | EN/FR | 10 мов |
| Клонування голосу | Так | Так | Так |
| Дизайн голосу | Ні | Ні | Так |
| Порт | 8200 | 8201 | 8100 |
Виберіть Kyutai для англомовних задач із простішим налаштуванням. Qwen3-TTS краще підходить для багатомовності та дизайну голосу.
Ресурси
- Kyutai TTS — офіційна сторінка
- Pocket TTS GitHub — модель CPU
- Delayed Streams Modeling — модель 1.6B
- Колекція голосів — доступні голоси
- Картка моделі — технічні подробиці