تكامل Kyutai TTS
شغّل نماذج TTS من Kyutai محليًا لتحويل النص إلى كلام بجودة عالية. يغطي هذا الدليل Pocket TTS (CPU) وTTS 1.6B (GPU) مع خوادم متوافقة مع OpenAI مضمنة في Libre WebUI.
نظرة عامة
تقدم Kyutai نموذجي TTS:
| النموذج | المعاملات | الجهاز | الأنسب له |
|---|---|---|---|
| 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 من التأخير لأول مقطع صوتي
- يستخدم نواتي CPU فقط
TTS 1.6B (GPU)
تحويل عالي الجودة مع تسريع 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 languages |
| استنساخ الصوت | نعم | نعم | نعم |
| تصميم الصوت | لا | لا | نعم |
| المنفذ | 8200 | 8201 | 8100 |
اختر Kyutai للاستخدام المتمحور حول الإنجليزية بإعداد أبسط. واختر Qwen3-TTS للدعم متعدد اللغات وميزات تصميم الصوت.
الموارد
- Kyutai TTS - صفحة المشروع الرسمية
- Pocket TTS على GitHub - نموذج CPU
- Delayed Streams Modeling - نموذج 1.6B
- مجموعة الأصوات - الأصوات المتاحة
- بطاقة النموذج - التفاصيل التقنية