إنتقل إلى المحتوى الرئيسي

تكامل Kyutai TTS

شغّل نماذج TTS من Kyutai محليًا لتحويل النص إلى كلام بجودة عالية. يغطي هذا الدليل Pocket TTS ‏(CPU) وTTS 1.6B ‏(GPU) مع خوادم متوافقة مع OpenAI مضمنة في Libre WebUI.

نظرة عامة

تقدم Kyutai نموذجي TTS:

النموذجالمعاملاتالجهازالأنسب له
Pocket TTS100MCPU فقطالحواسيب المحمولة والبيئات محدودة الموارد
TTS 1.6B1.6BGPU/MPS/CPUالخوادم والتوليف عالي الجودة

يستخدم كلاهما إطار CALM (Continuous Audio Language Models) ويدعمان استنساخ الصوت من عينات صوتية.

Pocket TTS ‏(CPU)

حل TTS خفيف يعمل في الوقت الحقيقي على CPU ولا يتطلب GPU.

المتطلبات

المكوّنالحد الأدنى
Python3.10 - 3.14
PyTorch2.5+
RAM4GB
القرص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.

المتطلبات

المكوّنالحد الأدنىالموصى به
Python3.10+3.12
GPU VRAM6GB8GB+
RAM8GB16GB+
القرص4GB8GB

دعم المنصات

المنصةالخلفيةملاحظات
NVIDIA GPUCUDAأفضل أداء ودعم bfloat16
Apple SiliconMPSيستخدم float16
CPUPyTorchأبطأ، ويستخدم 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
}
المعاملالنوعالافتراضيالوصف
modelstringيختلفkyutai-tts أو kyutai-tts-1.6b
inputstringمطلوبالنص المطلوب (10,000 حرف كحد أقصى)
voicestringalbaاسم الصوت أو مسار HuggingFace
response_formatstringwavتنسيق الصوت (يدعم wav فقط)
streambooleanfalseتفعيل التدفق (Pocket TTS فقط)
cfg_coeffloat2.0توجيه بلا مصنف (1.6B فقط)

الاستجابة: ملف صوت (audio/wav)

الأسماء المستعارة لأصوات OpenAI

للتوافق مع عملاء OpenAI TTS:

صوت OpenAIPocket TTSTTS 1.6B
alloyalbaalba
echomariusvctk-p225
fablecosetteexpresso-happy
onyxjavertvctk-p226
novafantinealba-announcer
shimmereponinealba-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 محدودة:

  1. أغلق تطبيقات GPU الأخرى.
  2. جرّب cfg_coef=1.5 لتقليل الذاكرة.
  3. استخدم Pocket TTS بدلًا منه (يعتمد على CPU).

مشكلات جودة الصوت

  • صوت آلي: جرّب صوتًا آخر.
  • صوت مقطوع: قد يكون النص طويلًا؛ يقسمه الخادم تلقائيًا.
  • نطق خاطئ: النموذج محسن للإنجليزية والفرنسية.

مشكلات MPS ‏(Apple Silicon)

RuntimeError: MPS backend error

يستخدم نموذج 1.6B ‏float16 على MPS. إذا استمرت المشكلات، افرض CPU:

python server.py --device cpu

مقارنة مع Qwen3-TTS

الميزةKyutai PocketKyutai 1.6BQwen3-TTS
المعاملات100M1.6B0.6B-1.7B
يتطلب GPUلااختيارينعم
اللغاتالإنجليزيةEN/FR10 languages
استنساخ الصوتنعمنعمنعم
تصميم الصوتلالانعم
المنفذ820082018100

اختر Kyutai للاستخدام المتمحور حول الإنجليزية بإعداد أبسط. واختر Qwen3-TTS للدعم متعدد اللغات وميزات تصميم الصوت.


الموارد