هل أحتاج هذا؟
تعني «محلي» أحد أمرين: صوت مدمج في SSN يعمل في متصفحك، أو خادم أصوات تشغّله بنفسك.
| أريد… | افعل هذا |
|---|---|
| أصوات مجانية بلا تثبيت | استخدم الأصوات المدمجة. يتوقف معظم المستخدمين هنا. |
| استخدام خادم أصوات أشغّله بالفعل | توصيل خادم. |
| صوت مستنسخ | راجع استنساخ الصوت. |
| Fish Audio في OBS | راجع إعداد Fish Audio. |
| أصوات سحابية مدفوعة | راجع مرجع TTS. |
الأصوات المدمجة (بلا تثبيت)
تعمل هذه داخل SSN في متصفحك. لا خادم ولا Docker ولا مفتاح API.
| الصوت | الصوت | حمل الحاسوب | قيمة الرابط |
|---|---|---|---|
| Kokoro | ممتاز | متوسط. أسرع مع GPU. | ttsprovider=kokoro |
| Piper | جيد جداً | منخفض. المعالج فقط. | ttsprovider=piper |
| Kitten | جيد | منخفض جداً. المعالج فقط. | ttsprovider=kitten |
| eSpeak-NG | آلي | ضئيل جداً. المعالج فقط. | ttsprovider=espeak |
الإعداد في 4 خطوات
- أضف
&speech=en-US&ttsprovider=kokoroإلىdock.html. (أوpiper,kitten,espeak.) - أضف ذلك الرابط إلى OBS بوصفه مصدر المتصفح. هذه هي الصفحة التي تُصدر الصوت.
- في خصائصه، فعّل التحكم بالصوت عبر OBS (Control audio via OBS).
- أرسل رسالة اختبار قصيرة، مثل
Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
الأصوات والسرعة واللغات الأخرى: إعدادات المزود. تفضل النقر؟ استخدم دليل الإعداد.
توصيل خادم TTS الخاص بك
يمنحك الخادم أصواتاً أكثر أو استنساخ صوت أو صوتاً تعيد استخدامه بين الأدوات. يتواصل SSN معه كما يتواصل مع متوافق مع OpenAI . لا تحتاج إلى مفتاح API.
- شغّل خادمك. Kokoro-FastAPI هو الأسهل.
- في SSN، افتح قائمة مزودي TTS واختر نقطة نهاية مخصصة أو محلية لتحويل النص إلى كلام.
- في Custom / Local API Endpoint، أدخل عنوان خادمك، مثل
http://127.0.0.1:8880/v1/audio/speech. - اترك مفتاح API فارغاً.
- اختر صوتاً يعرفه خادمك:
af_bellaلـ Kokoro،novaلـ openedai-speech. - انسخ الرابط إلى OBS وأرسل رسالة اختبار.
| الخادم | النموذج | GPU | القرص | المنفذ |
|---|---|---|---|---|
| Kokoro-FastAPI (موصى به) | Kokoro 82M | اختياري | ~2 GB | 8880 |
| openedai-speech (Piper) | Piper | CPU فقط | <1 GB | 8000 |
| kokoro-web | Kokoro 82M | اختياري | ~2 GB | 3000 |
تحتاج هذه إلى Docker Desktop مثبتاً وقيد التشغيل. وهو مجاني للاستخدام الشخصي.
قاعدة localhost
هذا أكثر الأخطاء شيوعاً.
localhost و 127.0.0.1 يعنيان دائماً «هذا الحاسوب نفسه». إذا كان OBS على حاسوب وخادم الصوت على آخر، 127.0.0.1 في OBS يشير إلى حاسوب OBS.
| إعدادك | استخدم هذا العنوان |
|---|---|
| OBS والخادم على الحاسوب نفسه | http://127.0.0.1:8880/v1/audio/speech |
| الخادم على حاسوب آخر في المنزل | http://192.168.x.x:8880/v1/audio/speech، بعنوان IP المحلي لذلك الحاسوب |
| اختبار تطبيق SSN يعمل وOBS صامت | يحتاج OBS إلى عنوان يعمل لديه. اختبار التطبيق لا يثبت قدرة OBS على الوصول إلى الخادم. |
تحقق أيضاً من سماح الجدار الناري بالمنفذ ومن نشر Docker له (-p 8880:8880).
Kokoro-FastAPI
Kokoro-FastAPI يشغّل Kokoro كخادم محلي. يعمل على المعالج ولا يحتاج GPU.
- افتح طرفية (Command Prompt أو PowerShell أو Terminal) وشغّل أحد هذه الأوامر:
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2
بطاقة NVIDIA (أسرع):
docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
ينزّل التشغيل الأول نحو 1.5–2 GB مرة واحدة. - افتح
http://localhost:8880/web/. ينبغي أن تظهر صفحة لاختبار الأصوات، مع أكثر من 67 صوتاً. - استخدم هذا الرابط (غيّر العنوان إن كان الخادم على حاسوب آخر):
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella
af_bella, af_sarah, am_adam أو bf_emma. أسماء OpenAI مثل nova أو alloy قد لا يعمل.تشغيله تلقائياً مع Docker:
docker run -d --restart unless-stopped -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2
openedai-speech (Piper وXTTS-v2)
الخيار A: خادم Piper خفيف (CPU)
أقل من 1 GB. لا استنساخ أصوات.
docker run -d --restart unless-stopped -p 8000:8000 ghcr.io/matatonic/openedai-speech-min
الأصوات: alloy, echo, fable, onyx, nova, shimmer.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=openai&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova
تشغيله من المصدر على Windows (أخطاء HTTP 500)
أضف مجلد البيئة الافتراضية Scripts إلى PATH أولاً، وإلا فلن يجد piper.exe أو ffmpeg.exe.
cd openedai-speech $env:Path = "$PWD\.venv\Scripts;$env:Path" .\.venv\Scripts\python.exe speech.py --xtts_device none -H 127.0.0.1 -P 8000
الخيار B: استنساخ الصوت XTTS-v2 (GPU)
يحتاج الخادم الكامل وليس openedai-speech-min. خطط لنحو 4 GB من ذاكرة GPU. يعمل المعالج لكنه بطيء.
إعداد XTTS-v2 في 4 خطوات
- نزّل الخادم وشغّله:
git clone https://github.com/matatonic/openedai-speech.git cd openedai-speech Copy-Item sample.env speech.env docker compose up -d
على macOS أو Linux، استخدمcp sample.env speech.env. يحتاج Docker إلى الوصول إلى GPU. يُنزّل النموذج في أول استخدام. - أنشئ مقطعاً مرجعياً نظيفاً لصوت تملك إذناً باستخدامه. أحادي القناة، 22050 Hz، من 6 إلى 30 ثانية:
ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
- في
config/voice_to_speaker.yaml، أضفه تحت القسم الموجودtts-1-hd(احتفظ بالأصوات الموجودة):tts-1-hd: me: model: xtts speaker: voices/me.wav language: enغيّرmeإلى الاسم الذي سيرسله SSN. - شغّل
docker compose restart، ثم استخدم:dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8000/v1/audio/speech&openaimodel=tts-1-hd&voiceopenai=me&openaiformat=wav
openaimodel=tts-1-hd مطلوب. بدونه يرسل SSN tts-1، فيستخدم الخادم Piper بدلاً منه. voiceopenai يجب أن يطابق اسم الصوت في ملف YAML.المتصفح يحظره؟ شغّل الجسر وغيّر فقط openaiendpoint إلى http://127.0.0.1:8124/v1/audio/speech.
جسر TTS المحلي
أداة صغيرة من SSN. تستقبل طلب SSN وتمرره إلى خادم الصوت ثم تعيد الصوت بطريقة تقبلها المتصفحات. تتطلب Node.js.
http://127.0.0.1:8124/v1/audio/speech، حتى لو كان خادم الصوت على حاسوب آخر.
- أخبر الجسر بمكان خادمك. PowerShell:
$env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech"
الخادم على حاسوب آخر؟ استخدم عنوان IP المحلي له، مثلhttp://192.168.x.x:8880/v1/audio/speech. - في مجلد SSN، شغّل
node scripts/local-tts-bridge.cjs. أبقِه قيد التشغيل. - وجّه SSN إلى الجسر:
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=af_bella
macOS/Linux، في سطر واحد: SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" node scripts/local-tts-bridge.cjs. داخل local-tts-bridge ، node server.cjs يفعل الشيء نفسه. غيّر المنفذ باستخدام SSN_TTS_BRIDGE_PORT=8125. جميع الخيارات: ملف README للجسر.
وضع GPT-SoVITS
يستخدم GPT-SoVITS واجهته الخاصة /tts . يترجم الجسر الطلبات له.
$env:SSN_TTS_REF_AUDIO_PATH="C:\voices\speaker.wav" $env:SSN_TTS_REF_TEXT="Reference audio transcript here." $env:SSN_TTS_TARGET="http://127.0.0.1:9880/tts" node scripts/local-tts-bridge.cjs --mode gptsovits
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&openaiformat=wav
وضع خادم F5-TTS
تستخدم بعض طبقات F5-TTS /synthesize_speech/?text=...&voice=.... يترجم الجسر الطلبات لها.
$env:SSN_TTS_TARGET="http://127.0.0.1:7860/synthesize_speech/" node scripts/local-tts-bridge.cjs --mode f5
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=default_en&openaiformat=wav
استنساخ الصوت
الاستنساخ ليس إعداداً في SSN بل ميزة في بعض خوادم الصوت. يرسل SSN نص الدردشة ويختار الخادم الصوت المستنسخ.
- سجّل مقطعاً واضحاً لمتحدث واحد، عادةً من 3 إلى 30 ثانية، مع ضجيج خلفية قليل.
- تحتاج بعض الخوادم أيضاً النص المطابق تماماً للكلام في المقطع.
- يحول الخادم المقطع إلى ملف تعريف صوت.
- يرسل SSN نص الدردشة باستخدام
ttsprovider=customtts. - يعيد الخادم صوتاً، عادةً WAV أو MP3، ويشغّله SSN.
إذا كانت ذاكرة GPU لديك 6 GB أو أقل، ابدأ بنماذج صغيرة على خوادم متوافقة مع OpenAI. تعمل النماذج الأكبر أيضاً إذا استُضيفت في مكان آخر.
| الخيار | يستنسخ من | يناسب GPU بذاكرة 6 GB؟ | كيفية الاتصال |
|---|---|---|---|
| XTTS-v2 / openedai-speech | مقطع WAV قصير | نعم، نحو 4 GB | مباشرةً، /v1/audio/speech. المشروع مؤرشف. |
| chatterbox-tts-api / Chatterbox-TTS-Server | مقطع مرجعي | على الأرجح مع Turbo أو مقاطع صغيرة | مباشرةً أو عبر الجسر. GPU أكثر سلاسة من المعالج، ويختلف الإعداد حسب النسخة المتفرعة. |
| Qwen3-TTS (0.6B / 1.7B) | مقطع 3 ثوانٍ | على الأرجح (0.6B Base) | يحتاج طبقة توافق مع OpenAI. |
| GPT-SoVITS | 5 ثوانٍ؛ أفضل مع دقيقة واحدة | على الأرجح مع fp16 / تثبيت خفيف | الجسر --mode gptsovits. |
| F5-TTS | مقطع مع نصه | ربما | طبقة توافق أو جسر --mode f5 مع F5-TTS_server. |
| MisoTTS 8B | صوت مرجعي | لا؛ يُوصى بـ 24 GB | استضافة بعيدة فقط. لا توجد نقطة اتصال REST محلية في المستودع. |
Kokoro المدمج وKokoro-FastAPI لا يستنسخان الأصوات.
ما اختُبر مع SSN
اختُبر بكليهما dock.html و featured.html:
- openedai-speech (Piper): كلام فعلي على المعالج، مباشرةً وعبر الجسر.
- Chatterbox-TTS-Server: كلام فعلي على المعالج باستخدام
Emily.wav، مباشرة وعبر الجسر. - chatterbox-tts-api: اختُبرت صيغة الطلب مباشرةً وعبر الجسر.
- GPT-SoVITS و F5-TTS_server: عبر أوضاع الجسر فقط.
- F5-TTS الرسمي و Qwen3-TTS: تحتاج طبقة توافق أولاً (CLI أو Gradio أو مكتبة فقط).
ما الحاسوب الذي أحتاجه؟
تقديرات أولية لا ضمانات. يغير حجم النموذج وطول النص والتطبيقات الأخرى استهلاك الذاكرة.
| الخيار | الحد الأدنى | مناسب |
|---|---|---|
| تحويل النص إلى كلام في النظام / eSpeak | أي جهاز PC | أي جهاز PC |
| Kitten المدمج | CPU منخفض المواصفات، و4 GB من RAM | معالج حاسوب محمول و8 GB RAM |
| Piper المدمج | معالج حديث و4–8 GB RAM | CPU حديث، و8 GB من RAM |
| Kokoro المدمج | CPU حديث، و8 GB من RAM | GPU يدعم WebGPU أو معالج سريع، و8–16 GB RAM |
| Kokoro-FastAPI | CPU، و8 GB من RAM | NVIDIA GPU اختياري، و8–16 GB RAM |
| openedai-speech Piper | معالج و4–8 GB RAM | CPU، و8 GB من RAM |
| openedai-speech XTTS | NVIDIA GPU بنحو 4 GB، و8–16 GB RAM | GPU من NVIDIA بذاكرة 6 GB+، و16 GB من RAM |
| Chatterbox | المعالج في بعض الإصدارات، بطيء | GPU من NVIDIA بذاكرة 6 GB+، و16 GB من RAM |
| GPT-SoVITS / F5-TTS / Qwen3-TTS | المعالج للاختبار، بطيء | GPU من NVIDIA بذاكرة 6 GB+، و16 GB من RAM |
| MisoTTS 8B | ليس مع 6 GB | GPU بذاكرة 24 GB أو مضيف بعيد |
إدخال الصوت إلى OBS
OBS Browser Source (موصى به)
يعمل مع الأصوات المدمجة وخادمك الخاص.
- أضف مصدر المتصفح باستخدام
dock.htmlلـ TTS. - فعّل التحكم بالصوت عبر OBS (Control audio via OBS).
- انقر على موافق. يظهر TTS الآن في مازج OBS.
تطبيق سطح المكتب SSN
يستخدم تطبيق سطح المكتب إعدادات الرابط نفسها، لكن الصوت يخرج من التطبيق لا OBS. التقطه باستخدام صوت سطح المكتب أو التقاط إدخال الصوت (Audio Input Capture). لفصل TTS عن الأصوات الأخرى، وجّه التطبيق إلى كابل افتراضي: خطوات توجيه الصوت.
تفاصيل إضافية لتطبيق سطح المكتب
نوافذ التطبيق أقل تشدداً بشأن أذونات المتصفح CORS من Chrome. يظل الجسر الخيار الأضمن للخوادم التي ترفض طلبات المتصفح. لـ Kokoro المدمج، يستطيع التطبيق استخدام ninjafy.tts بدلاً من تحميل النموذج داخل المتصفح.
&speech=en-US دون مزود) يعتمد على الأصوات المتوفرة في OBS. غالباً لا توجد أصوات أو توجد أصوات لا تُنتج خرجاً قابلاً للالتقاط. استخدم أحد المزودين أعلاه بدلاً منه.مقارنة متجاورة
| الخيار | الإعداد | الجودة | خاص | يعمل في OBS | التكلفة |
|---|---|---|---|---|---|
| Kokoro المدمج | لا شيء | 5/5 | نعم | نعم | مجاني |
| Piper المدمج | لا شيء | 4/5 | نعم | نعم | مجاني |
| Kitten المدمج | لا شيء | 3/5 | نعم | نعم | مجاني |
| eSpeak المدمج | لا شيء | 2/5 | نعم | نعم | مجاني |
| Kokoro-FastAPI | Docker | 5/5 | نعم | نعم | مجاني |
| openedai-speech | Docker | 4/5 | نعم | نعم | مجاني |
| ElevenLabs | مفتاح API (API key) | 5/5 | لا | نعم | خطط مدفوعة |
| تحويل النص إلى كلام في النظام | لا شيء | 2/5 | نعم | يحتاج توجيه الصوت | مجاني |
حل المشكلات
| المشكلة | جرّب هذا |
|---|---|
| اختبار التطبيق يعمل وOBS صامت | يجب أن يصل OBS إلى الخادم بنفسه. الخادم على حاسوب آخر؟ استبدل 127.0.0.1 بعنوان IP المحلي له. تحقق من التحكم بالصوت عبر OBS (Control audio via OBS). ما زال محظوراً؟ شغّل الجسر على حاسوب OBS. |
| تُقرأ أولى الحروف أو الكلمات فقط | إزالة (Remove) ttsquick من رابط OBS (مثلاً &ttsquick=14) وحدّث. أثناء الاختبار، أزل أيضاً typewriter= لاستبعاد مشكلات التوقيت. |
| الخادم لا يستجيب | تأكد من تشغيل Docker والحاوية. على حاسوب الخادم، افتح http://127.0.0.1:8880/web/ (Kokoro-FastAPI أو منفذ خادمك). من حاسوب OBS، افتح http://SERVER_LAN_IP:8880/web/. إذا فشل، فلن يصل إليه OBS أيضاً. تحقق من جدار الخادم الناري. |
| «Blocked by CORS» أو «private network» أو «failed fetch» | حظره المتصفح قبل وصوله إلى الخادم. شغّل node scripts/local-tts-bridge.cjs على حاسوب OBS واستخدم http://127.0.0.1:8124/v1/audio/speech. صفحة Dock المستضافة على beta أكثر عرضة للحظر؛ الجسر أو نافذة التطبيق المحلي أسهل. |
| صوت غير صحيح أو غير موجود | Kokoro-FastAPI: af_bella, af_sarah, am_adam، أو صوتاً من صفحته. openedai-speech: nova, echo, alloy. تراعي بعض الخوادم حالة الأحرف. |
| الصوت يعمل لكن OBS لا يلتقطه | فعّل التحكم بالصوت عبر OBS (Control audio via OBS). راقب عداد مازج OBS خلال الاختبار. تأكد من ضبط &ttsprovider=؛ قد يحتاج System TTS إلى صوت سطح المكتب أو كابل افتراضي. |
| لم يُعثر على صورة Docker | تتغير وسوم الصور. تحقق من الوسم الحالي على Kokoro-FastAPI أو openedai-speech. |
لمطوري الخوادم
كيف يتواصل SSN مع خادم مخصص. تحتاج هذا فقط إذا كنت تبني خادماً أو تشخّصه.
chat text -> SSN -> your endpoint (or the bridge) -> TTS server -> audio -> SSN plays it
ما يرسله SSN
مع ttsprovider=customtts, localtts أو openai، يرسل SSN طلب JSON POST:
POST /v1/audio/speech
{
"model": "tts-1",
"input": "Chat message text",
"voice": "af_bella",
"response_format": "mp3",
"speed": 1.0
}
عندما لا يُضبط مفتاح API، لا يرسل SSN ترويسة Authorization.
ما يستطيع SSN تشغيله
| الاستجابة | هل يعمل؟ | ملاحظات |
|---|---|---|
| ملف صوتي | نعم | الأفضل. audio/mpeg, audio/wav, audio/ogg, audio/aac، أو أي نوع صوت يستطيع المتصفح تشغيله. |
| JSON يتضمن عنوان صوت | نعم | فحوص url, audio_url, output_url, data.url، وأول data[] . |
| JSON مع صوت بترميز base64 | نعم | فحوص audio, audio_data, audioContent, b64_json، والقيمة المتداخلة data ، وعناوين URL للبيانات. |
| PCM خام | فقط عند استخدام غلاف | أرسله كملف WAV أو WAV بترميز base64. |
الصيغ: mp3 صغير ومدعوم على نطاق واسع. wav يناسب خوادم الاستنساخ واختبار الجسر. استخدم opus فقط إذا دعمه الخادم والمتصفح معاً.
لا بث متتابع بعد. ينتظر SSN الاستجابة كاملة ثم يشغّلها. أبقِ رسائل الدردشة قصيرة.
إعدادات الرابط لخادمك
| الإعداد | مثال | ما الذي يفعله |
|---|---|---|
ttsprovider | customtts | استخدم خادمك الخاص. (openai يعمل أيضاً.) |
openaiendpoint | http://localhost:8880/v1/audio/speech | عنوان خادمك. غيّر المنفذ ليطابقه. |
speech | en-US | يفعّل TTS بالإنجليزية. |
voiceopenai | af_bella | اسم الصوت. يعتمد على الخادم. |
openaimodel | tts-1-hd | اسم النموذج. الافتراضي tts-1. |
openaiformat | mp3 | mp3 أو wav أو opus أو flac. |
openaispeed | 1.0 | سرعة الكلام (0.5–2.0). |
مقبول أيضاً: customttsendpoint, localttsendpoint, customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, localttsformat. خيارات القراءة مثل simpletts, skipmessages و ttsquick تعمل مع أي مزود: جميع إعدادات الروابط.
روابط مثال:
Kokoro-FastAPI: dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8880/v1/audio/speech&voiceopenai=af_bella&openaispeed=1.1 openedai-speech: dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova kokoro-web: dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:3000/api/v1/audio/speech&voiceopenai=af_bella