ما الذي يفعله
هناك مساران لعمل المقدّم المشارك: رفيق صوتي متواصل في cohost.html، وإجراءات يدوية في لوحة الإرساء ترسل العبارات المعتمدة إلى cohost-overlay.html.
عناصر تحكم لوحة الإرساء
عند اتصال تراكب المنصة، انقر بزر الفأرة الأيمن على رسالة دردشة في لوحة الإرساء واختر المقدّم المشارك (Co-host). يمكن للوحة الإرساء قراءة الرسالة، أو طلب إجابة من الذكاء الاصطناعي، أو إنشاء مسودة مزاح خفيف.
تراكب منصة الذكاء الاصطناعي
يعرض التراكب الصورة الرمزية وفقاعة الكلام وصوت تحويل النص إلى كلام الاختياري في المتصفح. هذا هو مصدر المتصفح الذي تضيفه إلى OBS.
روبوت الدردشة الخاصة (Private Chat Bot)
يستخدم Answer وLight Roast مزوّد LLM المضبوط عبر جسر Private Chat Bot. ولا تتطلب القراءة (Read) ذكاءً اصطناعياً.
المقدّم المشارك متعدد الوسائط
cohost.html يتصل بخلاصة الدردشة المباشرة في SSN عند فتحه باستخدام نفس session. يتيح وضعه الافتراضي، السياق فقط، للذكاء الاصطناعي تذكر أحدث رسائل المشاهدين ومناقشتها عندما يسأل مقدم البث.
إعداد المقدّم المشارك عبر النقر بزر الفأرة الأيمن في لوحة الإرساء
- افتح لوحة إرساء دردشة البث باستخدام جلستك:
dock.html?session=YOUR_SESSION_ID. - أضف تراكب منصة الذكاء الاصطناعي إلى OBS:
cohost-overlay.html?session=YOUR_SESSION_ID. أضف&ttsفقط لمسار عمل الاستجابة النصية. - للحصول على إجابات بالذكاء الاصطناعي، اضبط مزوّد LLM في النافذة المنبثقة. للاختبار السريع، اختر SSN Hosted Trial LLM، الذي يستخدم
llm.socialstream.ninja. - تفعيل روبوتات الدردشة وخدمات الذكاء الاصطناعي (Chat Bots and AI services) > روبوت الدردشة — الواجهة الخاصة (Chat Bot - Private Interface) > تفعيل خيار روبوت الدردشة الخاصة (Enable private chat bot option).
- انقر بزر الفأرة الأيمن على رسالة في لوحة الإرساء واختر المقدّم المشارك (Co-host). تظل القائمة مخفية حتى يُكتشف تراكب المنصة. لا تتيح صفوف الرسائل في لوحة الإرساء قائمة السياق هذه للوحة المفاتيح بعد؛ ويمكن لمستخدمي لوحة المفاتيح استخدام حقل الرسالة المكتوبة أو عناصر التحكم الصوتي في
cohost.html.
cohost.html هي صفحة التحكم: اختر الكاميرا والميكروفون، وحدد مزوّد الذكاء الاصطناعي، واضبط تعليمات النظام، وراقب لوحة حالة Live Chat.نصيحة: استخدم نفس قيمة session للوحة الإرساء وتراكب المقدّم المشارك. &tts ينطبق على مسارات عمل التراكب النصي. عندما يكون صوت وحدة التحكم الأصلي نشطاً، يمنع SSN تكرار تحويل النص إلى كلام في التراكب؛ أما &forcetts فيتجاوز هذه الحماية عمداً.
خيار بسيط للذكاء الاصطناعي
llm.socialstream.ninja متاح عبر SSN Hosted Trial LLM كخيار بسيط مجاني للاختبار ما دامت التجربة متاحة.
- افتح روبوتات الدردشة وخدمات الذكاء الاصطناعي (Chat Bots and AI services) > تهيئة مزوّد خدمة LLM (Configure LLM Service Provider).
- اختر SSN Hosted Trial LLM (تجريبي).
- اترك نقطة النهاية والرمز والنموذج فارغة لاستخدام الإعداد التجريبي الافتراضي.
- للاستخدام طويل الأمد، استخدم رمزك الخاص أو مزوّداً محلياً إذا عُطّلت الخدمة التجريبية أو فُرض عليها حد للمعدل.
دعم المحادثة الصوتية
- OpenAI Realtime: يبث صوت الميكروفون المحدد في
cohost.htmlمباشرةً إلى OpenAI لإجراء محادثة صوتية أصلية واحدة من الكلام إلى الكلام. تبقى المحادثة الصوتية وسياق الدردشة المباشرة في جلسة المقدّم المشارك نفسها. - SSN Desktop: يستخدم Whisper محلياً مع الميكروفون المحدد في
cohost.html. ينزّل الاستخدام الأول نحو 42 MB؛ ثم تعمل عمليات التفريغ النصي اللاحقة دون اتصال. - رابط Chrome / إضافة Chrome: تفتح الإضافة صفحة المقدّم المشارك المستضافة في علامة تبويب Chrome. يستخدم OpenAI Realtime بروتوكول WebRTC مع سر عميل قصير الأجل؛ ويستخدم مزوّدو الردود النصية Chrome Speech Recognition وقد يتطلبون الإنترنت.
- المتصفحات الأخرى: التعرّف على الكلام غير مضمون. قد تظل دردشة المقدّم المشارك المكتوبة وإدخال الدردشة المباشرة وإدخال الكاميرا أو الشاشة وردود LLM المضبوط تعمل دون التعرّف على الكلام.
مع OpenAI Realtime، ينبغي أن تعرض التشخيصات جارٍ الاستماع (OpenAI WebRTC). مع Desktop Whisper، ينبغي أن تعرض جارٍ الاستماع (Desktop Whisper) ثم النص الذي تم التعرّف عليه تحت ما تم سماعه (Heard).
الخصوصية: يُرسل صوت الميكروفون المحدد، وأي إطارات كاميرا أو شاشة مختارة صراحةً، ورسائل المشاهدين التي يشاركها وضع Live Chat المحدد إلى مزوّد الذكاء الاصطناعي ذلك. تُعامل رسائل المشاهدين كسياق غير موثوق، ولا يمكنها تفويض أدوات المقدّم المشارك. افتح رابط وحدة تحكم المقدّم المشارك الذي تولده النافذة المنبثقة واحتفظ بخصوصيته؛ تنتهي صلاحيته الخاصة بعد 12 ساعة، وتقتصر على جلسة SSN الحالية، وتُزال من شريط العنوان بعد تحميل الصفحة.
إعداد OpenAI Realtime
- في نافذة SSN المنبثقة، اختر ChatGPT API، وأضف مفتاح API لمشروعك في OpenAI، واستخدم اختبار روبوت الدردشة المحدد (Test selected chat bot).
- افتح رابط
cohost.html?session=YOUR_SESSION_IDالذي تولده النافذة المنبثقة. وتفوّض صلاحية المقدّم المشارك الخاصة والمحدودة المدة استخدام Realtime دون تفعيل خيار Private Chat Bot المنفصل. - اختر OpenAI Realtime. يبقى المفتاح القياسي في خلفية إضافة SSN أو تطبيق سطح المكتب؛ ولا تتلقى صفحة المقدّم المشارك إلا سر عميل Realtime قصير الأجل.
- اختر صراحةً الميكروفون الذي تتحدث فيه، وأبقِ الاستجابة الصوتية (Audio Response) محدداً، واضغط بدء المقدّم المشارك (Start Co-host).
- اختياري: اترك مصدر الفيديو مضبوطاً على دون فيديو (No Video) (الافتراضي)، أو اختر صراحةً مشاركة الشاشة (Screen Share) أو كاميرا. يتلقى OpenAI صورة حالية واحدة مع كل طلب مباشر صوتي أو مكتوب، بدلاً من فيديو مستمر؛ وقد يزيد ذلك تكلفة API وزمن الاستجابة.
- اترك Live Chat مضبوطاً على السياق فقط — الإجابة عند السؤال (Context only - answer when asked). اسأل «ماذا يقول المشاركون في الدردشة؟» ليُناقش الذكاء الاصطناعي الصوتي نفسه أحدث رسائل المشاهدين.
- التقط صوت متصفح أو تطبيق المقدّم المشارك في OBS. لا يُشغّل صوت OpenAI الأصلي إلا من
cohost.html;cohost-overlay.htmlيتلقى الصورة الرمزية والنص، وليس التدفق الصوتي نفسه. عند توفر الدعم، اختر كابلاً صوتياً افتراضياً ضمن مخرجات المقدّم المشارك لتوجيه الصوت إلى OBS بشكل مستقل. - أبقِ فقاعة الكلام في تراكب المنصة ظاهرة، أو وفّر تسميات توضيحية، كي لا تكون استجابة الذكاء الاصطناعي متاحة بالصوت وحده.
يستخدم هذا فوترة OpenAI API وينشئ محادثة SSN Realtime واحدة عبر WebRTC، منفصلة عن chatgpt.com. تقتصر الردود على 512 رمز إخراج؛ وتعرض التشخيصات الاستخدام التراكمي للرموز وزمن الاستجابة المقاس حتى أول مخرج. يقتطع OpenAI تلقائياً الصوت الذي لم يُشغّل عندما يقاطع مقدم البث. يحتفظ SSN بحد أقصى 20 رسالة دردشة حديثة لمدة تصل إلى 90 ثانية، بما في ذلك سياق الدعم المدفوع والعضوية والمشرفين والأحداث وقنوات المصادر، ثم يزيل ذلك السياق المؤقت. يفحص SSN الجلسات الهادئة، ويعيد توصيل قنوات النقل الفاشلة، ويجدد الجلسات قبل حد الـ60 دقيقة. تعيد الجلسة المستردة تطبيق تعليمات النظام وإعدادات الأداء، لكنها تبدأ دون المحادثة الصوتية السابقة.
سرعة OpenAI وجودته وتكلفته
- النموذج (Model): يكون Mini عادةً أسرع وأقل تكلفة. أما Full quality فأكثر قدرةً وأعلى تكلفة.
- جهد الاستدلال (Reasoning effort): يقلل Minimal أو Low عادةً تأخير الاستجابة واستخدام المخرجات المفوتر. قد يحسّن High أو Extra high الإجابات المعقدة، لكنه قد يستجيب ببطء أكبر ويكلف أكثر. تُطبّق التغييرات أثناء الاتصال.
- سرعة تناوب الأدوار (Turn-taking speed): ينتظر Fast نحو ثانيتين كحد أقصى لانتهاء الفكرة؛ وBalanced نحو 4 ثوانٍ؛ وPatient نحو 8 ثوانٍ. يبدو Fast أسرع استجابةً، لكنه قد يقاطع وقفة طبيعية.
- التشخيصات (Diagnostics): يعرض Latency الزمن من نهاية الدور حتى أول نص أو صوت، ويفصل تأخير النموذج متى أمكن. قد تختلف ظروف الشبكة وحمل المزوّد حتى بين الطلبات المتشابهة.
عناصر تحكم اختيارية في البث
يدعم OpenAI Realtime أدوات Spotify ومشاهد OBS والدردشة المميزة أدناه. يدعم SSN Configured LLM حالياً Spotify فقط؛ ولا تتيح مزوّدات المقدّم المشارك الأخرى هذه الأدوات بعد.
- في نافذة SSN المنبثقة، فعّل فقط أدوات المقدّم المشارك التي تريدها: Spotify أو مشاهد OBS أو الدردشة المميزة.
- بالنسبة إلى OBS، أدخل أسماء المشاهد المسموح بها بدقة في قائمة مفصولة بفواصل، وأبقِ
actions.htmlمتصلاً بـ OBS، أو استخدم مصدر متصفح OBS بصلاحيات كاملة (Full Permissions). - مفعّل (On)
cohost.html، وافتح عناصر تحكم المقدّم المشارك في البث وجهّز الأدوات نفسها لوحدة التحكم تلك. - اطلب مباشرةً، مثل «انتقل إلى BRB» أو «أبرز تلك الرسالة الأخيرة» أو «امسح الدردشة المميزة». لا يمكن لرسائل المشاهدين تفويض الأدوات، ولا تُشغّل إلا أداة واحدة تغيّر البث لكل طلب مباشر من مقدم البث.
يُسمح بالوصول إلى الأدوات وفق قائمة محددة، وليس وصولاً عاماً إلى API. لا يستطيع OBS اختيار إلا المشاهد المسماة في إعدادات SSN. تستخدم طلبات الإبراز رسالة دردشة حديثة ملتقطة وتتطلب لوحة إرساء دردشة البث؛ وتفيد ردود الأدوات بتسليم الطلب، ولا تثبت أن OBS أو التراكب أكمل الإجراء.
كيفية تواصل الصفحات
تستخدم لوحة الإرساء والتراكب جسر جلسة Social Stream الحالي. تُرسل الرسائل كبيانات overlayNinja وتُوجّه باستخدام التسمية.
القراءة عبر المقدّم المشارك (Read on Co-host): ترسل لوحة الإرساء رسالة الدردشة المحددة مباشرةً إلى cohost-overlay.html.
إجابة / مزاح خفيف (Answer / Light Roast): ترسل لوحة الإرساء طلب روبوت دردشة خاص إلى خدمة SSN الخلفية، وتعرض مسودة الذكاء الاصطناعي في لوحة الإرساء، ثم ترسلها إلى التراكب فقط بعد أن ينقر مقدم البث على Speak.
{
"action": "cohostOverlay",
"target": "cohost-overlay",
"meta": {
"command": "say",
"text": "The line the avatar should say",
"speak": true,
"emotion": "happy"
}
}
الإجراءات المتاحة
| الإجراء | يتطلب | النتيجة |
|---|---|---|
| القراءة عبر المقدّم المشارك (Read on Co-host) | متصل (Connected) cohost-overlay.html |
يقرأ رسالة الدردشة المحددة على التراكب. |
| إجابة (Answer) | Private Chat Bot مع LLM المضبوط أو Hosted Trial LLM | ينشئ مسودة إجابة قصيرة ليوافق عليها مقدم البث. |
| مزاح خفيف (Light Roast) | Private Chat Bot مع LLM المضبوط أو Hosted Trial LLM | ينشئ مسودة قصيرة ومازحة وملائمة للعائلة ليوافق عليها مقدم البث. |
| نطق (Speak) | مسودة لوحة الموافقة | يرسل النص المعتمد إلى تراكب منصة الذكاء الاصطناعي. |
| نسخ | مسودة لوحة الموافقة | ينسخ المسودة دون إرسالها إلى التراكب. |
الحالة واستكشاف المشكلات وإصلاحها
- إذا كانت قائمة Co-host غائبة، فلم يُكتشف تراكب المقدّم المشارك في الجلسة نفسها.
- إذا كان Answer أو Light Roast معطّلاً، فإن جسر SSN أو Private Chat Bot غير متاح.
- مفتاح تراكب روبوت الدردشة الأساسي اختياري، ولا يفعّل إجراءات المقدّم المشارك عبر النقر بزر الفأرة الأيمن في لوحة الإرساء.
- إذا كان
cohost.htmlلا يرى الدردشة، فتأكد من أن الرابط يحمل نفس قيمةsessionالمستخدمة في النافذة المنبثقة، وأن Live Chat مضبوط على Context أو Questions أو All. - السياق فقط (Context only) يشارك الدردشة حالياً مع الذكاء الاصطناعي فقط عند استخدام OpenAI Realtime. ويراقب المزوّدون الآخرون الخلاصة دون إدخالها في النموذج.
- كتم الميكروفون (Mute microphone) يوقف الصوت المرسل إلى المقدّم المشارك. كتم صوت المقدّم المشارك (Mute co-host voice)، ومنزلق مستوى الصوت، ومنتقي جهاز الإخراج، و إيقاف الكلام (Stop speaking) تتحكم في تشغيل الصوت. كتم صوت النظام المشترك (Mute shared system audio) عنصر منفصل يظهر للمزوّدين الذين يدعمون الشاشة.
- إذا لم تتوفر أداة للتحكم في البث، ففعّلها في كل من نافذة SSN المنبثقة و عناصر تحكم المقدّم المشارك في البث. يحتاج OBS أيضاً إلى اسم مشهد واحد مطابق تماماً على الأقل في قائمة السماح.
- استخدم اختبار التراكب (Test overlay) لإرسال سطر اختبار مرئي غير مؤذٍ، ثم تأكد من ظهوره في تراكب منصة الذكاء الاصطناعي في OBS.
- إذا كان المقدّم المشارك يعرف محتوى الدردشة لكنه يظل صامتاً، فهذا متوقع في وضع السياق فقط (Context only): اسأله عما يقوله المشاركون في الدردشة. ينطق وضعا Questions وAll الردود التلقائية من صفحة المقدّم المشارك؛ ولا ينشران تلك الردود في دردشة YouTube أو Twitch أو Kick.
- إذا عرض تطبيق سطح المكتب جارٍ الاستماع (Desktop Whisper) لكنه لا يملأ مطلقاً ما تم سماعه (Heard)، فتأكد من أن الميكروفون المحدد غير مكتوم، وانتظر اكتمال تنزيل النموذج الأول.
- إذا لم يملأ Chrome مطلقاً ما تم سماعه (Heard)، واسمح بإذن الميكروفون، وتحقق من الميكروفون الافتراضي لنظام التشغيل، وأكد توفر الإنترنت، وتحقق من توفر Chrome Speech Recognition.
- إذا ظهر نص OpenAI Realtime دون تشغيل الصوت، فتحقق من الاستجابة الصوتية (Audio Response)، وأذونات الصوت في المتصفح، والتقاط صوت المتصفح أو التطبيق في OBS. استخدم
&ttsفقط لمسار عمل التراكب النصي المنفصل. - إذا كانت ردود OpenAI Realtime بطيئة، فجرّب Mini واستدلال Low وتناوب الأدوار Fast، ثم قارن سطر Latency في التشخيصات. تستبدل مستويات الاستدلال الأعلى ووضع Patient السرعة عمداً بمزيد من العمق أو بفواصل أطول.
- إذا انقطع اتصال OpenAI Realtime، فأبقِ المقدّم المشارك قيد التشغيل أثناء إعادة المحاولة. تحدد التشخيصات فشل البيانات أو النظير أو المزوّد أو فحص الحالة. تحتفظ الجلسة المستردة بتعليمات النظام وإعدادات الأداء المحددة، لكنها لا تستطيع استعادة المحادثة الصوتية السابقة.
- إذا انتهت مهلة طلب Answer أو Light Roast أو SSN Configured LLM، فتحقق من تشغيل Social Stream وتطابق الجلسة وتفعيل Private Chat Bot وإمكانية الوصول إلى مزوّد LLM المحدد. لا يتطلب OpenAI Realtime تفعيل Private Chat Bot.
- إذا تعذر على Local Gemma تنزيل ملفات نموذجه من مضيف الأصول الافتراضي، فاضبط مضيف الأصول على مجلد Gemma المنسوخ على استضافتك الخاصة.
- إذا توقف الذكاء الاصطناعي التجريبي المستضاف عن الرد، فقد يكون معطّلاً أو خاضعاً لحد معدل؛ فانتقل إلى رمزك الخاص أو Ollama أو Custom API.
- إذا كانت عدة تراكبات مفتوحة، فتأكد من تطابق تسمية التراكب مع هدف لوحة الإرساء. التسمية الافتراضية هي
cohost-overlay.
معاملات URL مفيدة
session=YOUR_SESSION_ID— مطلوب لمشاركة لوحة الإرساء والتراكب الغرفة نفسها.ttsأوspeak=1— يسمح للتراكب بالتحدث باستخدام تحويل النص إلى كلام في المتصفح.forcetts— يسمح بتحويل النص إلى كلام في التراكب حتى عندما تكون وحدة تحكم المقدّم المشارك تشغّل الصوت بالفعل؛ وينشئ ذلك عمداً صوتاً ثانياً.label=cohost-overlay— يحدد تسمية الهدف للتراكب.name=NinjaBot— يحدد اسم العرض في التراكب.avatar=https://...— يستخدم صورة رمزية مخصصة.position=bottom-right— يتحكم في موضع المنصة.scale=1.2— يضبط مقياس التراكب.status— يعرض نص الاتصال والحالة في التراكب.
ملاحظات التصميم
- في سير عمل النص اليدوي أو لوحة الإرساء، يكون التراكب مصدر العرض المرئي والنطق الاختياري لتحويل النص إلى كلام. لصوت OpenAI الأصلي، التقط
cohost.htmlبشكل منفصل؛ إذ لا يعيد تراكب المنصة تشغيل صوت WebRTC نفسه. - لوحة الإرساء هي واجهة التحكم، ولذلك تبقى موافقة مقدم البث خارج البث.
- لا تُنطق الردود المولدة تلقائياً؛ يجب أن يوافق عليها مقدم البث أولاً.
- توجد تفاصيل الأوامر غير القياسية داخل
meta، مما يجعل بنية البيانات متوقعة للتراكبات وعمليات الأتمتة.