Chuyển tới nội dung chính

Tích hợp Kyutai TTS

Chạy cục bộ các mô hình TTS của Kyutai để chuyển văn bản thành giọng nói chất lượng cao. Hướng dẫn này bao gồm cả Pocket TTS (CPU) và TTS 1.6B (GPU) với các máy chủ tương thích OpenAI đi kèm Libre WebUI.

Tổng quan

Kyutai cung cấp hai mô hình TTS:

Mô hìnhTham sốThiết bịPhù hợp nhất
Pocket TTS100MChỉ CPULaptop, môi trường ít tài nguyên
TTS 1.6B1.6BGPU/MPS/CPUMáy chủ, tổng hợp chất lượng cao

Cả hai dùng khung CALM (Continuous Audio Language Models) và hỗ trợ nhân bản giọng nói từ mẫu âm thanh.

Pocket TTS (CPU)

TTS nhẹ chạy theo thời gian thực trên CPU. Không cần GPU.

Yêu cầu

Thành phầnTối thiểu
Python3.10 - 3.14
PyTorch2.5+
RAM4GB
Disk500MB

Bắt đầu nhanh

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

Máy chủ chạy tại http://localhost:8200.

Kiểm thử

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

Giọng nói

GiọngMô tả
AlbaNữ, rõ và tự nhiên
MariusNam, âm sắc ấm
JavertNam, uy nghiêm
JeanNam, nhẹ nhàng
FantineNữ, mềm mại
CosetteNữ, trẻ trung
EponineNữ, giàu biểu cảm
AzelmaNữ, tươi sáng

Hiệu năng

  • Nhanh khoảng 6 lần thời gian thực trên MacBook Air M4
  • Độ trễ khoảng 200ms cho đoạn âm thanh đầu tiên
  • Chỉ dùng 2 lõi CPU

TTS 1.6B (GPU)

TTS chất lượng cao có tăng tốc GPU. Tự động chọn thiết bị: CUDA > MPS > CPU.

Yêu cầu

Thành phầnTối thiểuKhuyến nghị
Python3.10+3.12
GPU VRAM6GB8GB+
RAM8GB16GB+
Disk4GB8GB

Hỗ trợ nền tảng

Nền tảngBackendGhi chú
NVIDIA GPUCUDAHiệu năng tốt nhất, hỗ trợ bfloat16
Apple SiliconMPSDùng float16
CPUPyTorchChậm hơn, float32

Bắt đầu nhanh

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

Máy chủ chạy tại http://localhost:8201.

Chọn thiết bị

# 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

Kiểm thử

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

Giọng nói

Alba MacKenna (CC BY 4.0):

GiọngPhong cách
alba / alba-casualHội thoại tự nhiên
alba-merchantNhân vật thương nhân
alba-announcerPhong cách phát thanh viên

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

GiọngCảm xúc
expresso-happyVui
expresso-sadBuồn
expresso-angryGiận dữ

VCTK (CC BY 4.0):

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

Nhân bản giọng nói

Cả hai máy chủ đều hỗ trợ nhân bản giọng nói từ tệp âm thanh.

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

Truyền bất kỳ đường dẫn giọng HuggingFace nào làm tham số 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

Tham chiếu API

Tạo giọng nói

Endpoint: POST /v1/audio/speech

{
"model": "kyutai-tts",
"input": "Text to convert to speech",
"voice": "alba",
"response_format": "wav",
"stream": false
}
Tham sốKiểuMặc địnhMô tả
modelstringthay đổikyutai-tts hoặc kyutai-tts-1.6b
inputstringbắt buộcVăn bản cần tổng hợp (tối đa 10.000 ký tự)
voicestringalbaTên giọng hoặc đường dẫn HuggingFace
response_formatstringwavĐịnh dạng âm thanh (chỉ hỗ trợ wav)
streambooleanfalseBật streaming (chỉ Pocket TTS)
cfg_coeffloat2.0Hướng dẫn không classifier (chỉ 1.6B)

Phản hồi: Tệp âm thanh (audio/wav)

Bí danh giọng OpenAI

Để tương thích với máy khách OpenAI TTS:

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

Liệt kê giọng

Endpoint: GET /v1/voices

Kiểm tra sức khỏe

Endpoint: GET /health


Cấu hình plugin

Pocket TTS

Bật trong Cài đặt > Plugin > Kyutai TTS

Tệp 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

Bật trong Cài đặt > Plugin > Kyutai TTS 1.6B

Tệp 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
}
}
}
}

Truy cập mạng

Để truy cập từ máy khác:

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

Cập nhật endpoint plugin tương ứng:

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

Khắc phục sự cố

Không tải được mô hình

Mô hình được tải từ HuggingFace ở lần chạy đầu:

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

CUDA hết bộ nhớ

Với TTS 1.6B trên VRAM hạn chế:

  1. Đóng các ứng dụng GPU khác
  2. Thử cfg_coef=1.5 để giảm mức dùng bộ nhớ
  3. Dùng Pocket TTS thay thế (dựa trên CPU)

Vấn đề chất lượng âm thanh

  • Giọng máy móc: Thử giọng khác
  • Âm thanh bị cắt: Văn bản có thể quá dài; máy chủ tự động chia đoạn
  • Phát âm sai: Mô hình được tối ưu cho tiếng Anh và tiếng Pháp

Vấn đề MPS (Apple Silicon)

RuntimeError: MPS backend error

Mô hình 1.6B dùng float16 trên MPS. Nếu vấn đề vẫn còn, hãy buộc dùng CPU:

python server.py --device cpu

So sánh với Qwen3-TTS

Tính năngKyutai PocketKyutai 1.6BQwen3-TTS
Tham số100M1.6B0.6B-1.7B
Cần GPUKhôngTùy chọn
Ngôn ngữTiếng AnhEN/FR10 ngôn ngữ
Nhân bản giọng
Thiết kế giọngKhôngKhông
Cổng820082018100

Chọn Kyutai cho trường hợp tập trung vào tiếng Anh với thiết lập đơn giản hơn. Chọn Qwen3-TTS nếu cần hỗ trợ đa ngôn ngữ và tính năng thiết kế giọng.


Tài nguyên