دوز مباشرة للمحتوى الرئيسي
دروس فالذكاء الاصطناعي

بني ستوديو بث مباشر بالذكاء الاصطناعي من الصفر: أفاتار رقمي، تدبير التعاليق وبث OBS عملي

غادي يرافقك هاد المقال فتنصيب ستوديو بث مباشر بالذكاء الاصطناعي، وتهيئة Vidu والشخصيات والخزانة والصوت، وربط فلترة التعاليق وتدبيرها، ومن بعد إخراج صورة البث عبر OBS ولا بالطريقة المدمجة.

بني ستوديو بث مباشر بالذكاء الاصطناعي من الصفر: أفاتار رقمي، تدبير التعاليق وبث OBS

مقدمة على المشروع

ستوديو البث المباشر بالذكاء الاصطناعي هو مشروع مفتوح المصدر كيخلّي شخصية رقمية بالذكاء الاصطناعي تدير البث بوحدها. ملي كيبعثو المتفرجين تعاليق، النظام كيدوزها الأول من التصفية، ومن بعد كيرتّبها حسب الحالة الحالية ديال الصوت والحركة، باش ما تدخلش تعليمة جديدة قبل ما تسالي الجملة اللي قبل منها.

المشروع كيستعمل Vidu S2 للشخصيات الرقمية المباشرة باش يولّد الصورة والصوت والردود. أما هاد المشروع فمسؤول على تصفية وترتيب التعاليق، معلومات الشخصية، خزانة الملابس، طبقات ستوديو البث، واجهة العمل المحلية، والإخراج لـ OBS أو البث المباشر مباشرة.

الكود مرخّص برخصة MIT. المستودع ما فيهش صور الشخصية ديال المؤلف، ولا الطابع ديالها، ولا الصوت، ولا مكتبة الموارد ديالها. من بعد التثبيت خاصك تجهّز الموارد ديال الشخصية ديالك، وتتحمّل بوحدك مسؤولية حقوق المحتوى والامتثال للقوانين.

الوظائف والقيود

القدرات المدعومة حاليا

  • الرد فالدردشة حسب شخصية مخصّصة، مع إمكانية إعداد جملة افتتاحية.
  • التبديل بين أزياء كاملة من خزانة محضّرة من قبل؛ تبديل اللباس كياخذ تقريبا 6 ثواني فكل مرة.
  • تشغيل حركات بسيطة بحال رسم القلب باليد، التلويح، والغمز باستعمال كلمات مفتاحية.
  • إلى ما كان حتى تعليق من المتفرجين، كيدير تسخين تلقائي من لائحة مواضيع الشخصية، وكيمنع التكرار قبل ما تسالي جولة الموضوع.
  • تصفية التعاليق البذيئة والتعاليق اللي كتهدف لجلب الزيارات تلقائيا، والهدايا ما كتتجاوزش الطابور.
  • إمكانية تفعيل إعادة البث تلقائيا من بعد انقطاع Vidu فالنص.

قيود خاصك تنتبه ليها

  • تبديل الخلفية، الأكل والشرب، واستعمال الأدوات ما مفعّلينش افتراضيا، حيث إعادة الرسم فالحين تقدر تشوّه لباس الشخصية.
  • المشروع حاليا ما مناسبش للغناء، تشغيل الأغاني، الوقوف، الحركات بالجسم كامل، الرقص الكبير، أو الترويج للمنتجات.
  • ما كيتفكّرش فالمتفرجين القدامى بين جلسات البث المختلفة.
  • ما كايناش وظيفة مدمجة لجلب تعاليق Douyin؛ خاص استعمال الواجهات الرسمية المفتوحة ديال المنصة، وما خاصش جلب صفحة غرفة البث.

وظائف تبديل الخلفية والأدوات مسدودة افتراضيا. إلا كنت غير كتجرّب بشكل خاص، تقدر تدير {"safety":{"live_visual_edits":true}} فـ config.json. ما كننصحوش تفتحها فالبث العمومي.

تحضير بيئة التشغيل

قبل ما تبدا، حضّر هاد البيئة والحسابات:

  • macOS أو Linux.
  • Python 3.11 أو أحدث؛ المؤلف كيستعمل Python 3.13.
  • ffmpeg فيه libx264 و aac.
  • مفتاح API ديال منصة Vidu المفتوحة، خاصو يبدا بـ vda_، وتأكد بلي الحساب فيه نقاط متاحة.
  • مفتاح API اختياري ديال Evolink، لتوليد صور الشخصية والملابس والأدوات والخلفيات، ويمكن حتى استعمالو لتحميل الصوت وقت استنساخ الصوت.
  • نسخة اختيارية من OBS 30 أو أحدث، للكاميرا والطبقات والبث.
  • رمز بث اختياري ديال YouTube؛ غير اللي غادي يستعمل البث المدمج هو اللي محتاجو.

الشخصيات الرقمية المباشرة ديال Vidu كتتحاسب حسب المدة. الثمن الرسمي المذكور فـ README هو 1.5 نقطة فالثانية، وكل نقطة كتساوي 0.03125 يوان، يعني ساعة وحدة كتحتاج تقريبا 169 يوان. من الأفضل تبدا بوضع التشغيل التجريبي والخدمة المحلية المحاكية باش تتحقق من المسار.

حفظ المفاتيح بأمان

خاص المفاتيح تبقى غير فملفات الحاسوب المحلي، ويقراها الخادم، وما كيتبعتوش للمتصفح. فالأول أنشئ المجلدات الافتراضية:

mkdir -p ~/.deepsea/vidu ~/.deepsea/evolink && chmod 700 ~/.deepsea/vidu ~/.deepsea/evolink

فـ macOS، تقدر تحفظ مفتاح Vidu اللي فالحافظة فالمسار الافتراضي:

pbpaste > ~/.deepsea/vidu/api.key && chmod 600 ~/.deepsea/vidu/api.key

حط مفتاح Evolink فـ ~/.deepsea/evolink/api.key. إلا استعملتي البث المدمج ديال YouTube، حط رمز البث فـ ~/.deepsea/youtube/stream.key؛ وكلمة سر OBS WebSocket فـ ~/.deepsea/obs/ws.password. تقدر تبدل المسارات الافتراضية حتى فـ config.json.

تثبيت المشروع

نسخ المستودع من GitHub ودخل لمجلد المشروع:

git clone https://github.com/garycaogan/ai-live-avatar.git
cd ai-live-avatar

أنشئ بيئة افتراضية ديال Python وثبّت الاعتماديات:

python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

صفحة المسرح كتحتاج SDK ديال الويب لـ RTC من Alibaba Cloud. المشروع ما كيعيدش توزيع هاد SDK، ولكن كينزلو وكيعاود يتحقق منو بسكريبت من CDN الرسمي:

./tools/fetch_vendor.sh

فالأخير نسخ ملف الإعدادات النموذجي:

cp config.example.json config.json

تشغيل واجهة العمل

شغّل الخدمة:

.venv/bin/python server.py

الخدمة كتسمع افتراضيا غير فالحاسوب المحلي. من بعد التشغيل، حلّ http://127.0.0.1:28900/workbench فالمتصفح باش تدخل لواجهة العمل.

إلا ما بغيتيش تستهلك نقاط Vidu مؤقتا، استعمل بدء البث التجريبي من صفحة غرفة البث. هاد الوضع ما كيتصلش بـ Vidu، وكيعرض غير تصفية التعاليق وترتيبها والطبقات. المشروع كيوفر حتى tests/dev_mock_stack.py، واللي كيتصل بـ Vidu محلي محاكي باش يعاونك تجرّب مسار التحكم كامل.

إنشاء شخصية رقمية ديالك

1. تحضير صورة الشخصية

حمّل صورة شخصية من صفحة الموارد، أو استعمل Evolink باش تولّدها. الصورة الأساسية كتأثر فملامح الشخصية ولباسها والغرفة والتعبير الدائم ديالها. README كينصح بصورة قريبة لشخص واحد، واليدين فوق الطاولة، والتعبير طبيعي.

التكوين الأفقي غادي يتحط فإطار صغير فوق صفحة بث عمودية شبيهة بـ Douyin، وغادي يتقص بنسبة 1.2:1، لذلك من الأفضل تهيّئ تكوين الصورة الأساسية من قبل.

2. إنشاء معلومات الشخصية

أنشئ شخصية جديدة من صفحة الشخصيات، واختار صورة الشخصية كصورة أساسية، ومن بعد عمّر الاسم والطابع والجملة الافتتاحية. ركّز فالوصف على أسلوب الكلام، وما تكتبش جمل نموذجية كاملة، حيث النموذج يقدر يقرا المثال حرفيا.

3. إضافة خزانة الملابس

زيد شي أطقم من صفحة خزانة الملابس. كل لباس خاصو يكون صورة كاملة، وحاول تخلي الغرفة والإضاءة والتكوين مشابهين للصورة الأساسية، وإلا يقدر يبان تبدّل قوي فالصورة وقت تغيير اللباس.

4. إعداد الصوت

من صفحة الصوت اختار صوتا من أصوات النظام، أو حمّل تسجيلا صوتيا نقيا مدته من 10 حتى 20 ثانية للاستنساخ. استنساخ الصوت فـ Vidu مؤدى عنه، وقبل تحميل أي مادة خاصك تتأكد بلي عندك الترخيص المرتبط بهاد الصوت.

5. إعداد الحركات

من صفحة الحركات تقدر تبدل الحركة المرتبطة بكل كلمة مفتاحية فالتعليق. ومن إعدادات الشخصية تقدر حتى تعدّل الحركات الصغيرة فحالة الانتظار، باش تبان الصورة طبيعية أكثر ملي ما يكون حتى تعليق جديد.

معلومات الشخصية كتتحفظ فـ assets/avatars/profiles.json، والطابع كيتحفظ فـ personas/. هاد الملفات مستثناة من خلال .gitignore وما غاديش تترفع للمستودع.

فهم مسار معالجة التعاليق

صفحة غرفة البث فواجهة العمل كتدعم الإرسال اليدوي لتعاليق محاكية. أما التعاليق الحقيقية فتقدر تبعثها من خلال الواجهة التالية:

curl -s -X POST http://127.0.0.1:28900/api/danmaku \
  -H 'Content-Type: application/json' \
  -d '{"user":"المتفرج A","text":"بدّل اللباس","gift":0}'

منين كيدخل التعليق للنظام، كيدوز الأول من فحص كلمات التصفية فـ moderation.json، ومن بعد كيتعرّف عليه live/router.py حسب القواعد: دردشة، تبديل اللباس، أداة، خلفية، حركة، أو استرجاع. هاد التعرف ما كيستعملش نموذجا كبيرا، وبالتالي ما كيزيد لا فالتأخير لا فالتكلفة.

افتراضيا، طلبات الأدوات والخلفيات كتتعالج بحال الدردشة العادية. التعرف على التعاليق كيخدم مزيان أكثر مع العبارات البسيطة والواضحة، بحال السؤال على شي حاجة صغيرة حدّ主播، أو استعمال اسم لباس من الخزانة، أو طلب حركة وحدة فكل مرة.

هاد الأمور غالبا كتأثر على النتيجة: جملة فيها مهام متعددة، السؤال على الأخبار أو الطقس فالحين، وطلب الغناء أو تشغيل الموسيقى. من الأفضل تقسّم الطلبات المعقدة لتعاليق بسيطة متعددة.

الربط مع OBS

من صفحة البث فواجهة العمل بدّل طريقة الإخراج لـ OBS، ومن بعد زِد مصدرا من نوع المتصفح فـ OBS. اختار العنوان المناسب:

  • إظهار الشخصية الرقمية فقط: http://127.0.0.1:28900/stage?obs=1&role=obs&layer=avatar
  • إظهار الطبقة الشفافة فقط: http://127.0.0.1:28900/stage?overlay=1
  • إظهار الشخصية الرقمية والطبقة: http://127.0.0.1:28900/stage?obs=1&role=obs&layer=all

كيُنصح تضبط الصورة كاملة على عرض 1080 وارتفاع 1920. فمصدر المتصفح خاصك تفعّل “التحكم فالصوت عبر OBS”. وبما أن الخدمة كتسمع غير فالحاسوب المحلي، خاص OBS وخدمة المشروع يكونو خدامين فنفس الحاسوب.

إلا بغيتي تنشئ مشهد OBS تلقائيا، استعمل tools/obs_control.py. الطبقة غادي يبقى فيها دائما الوسم “صورة مولدة بالذكاء الاصطناعي فالحين”، وهاد الشي مطلوب من المنصة للبث بالشخصيات الرقمية، لذلك خاصو يبقى ظاهر.

إعداد صورة بث Douyin

غرف البث بالشخصيات الرقمية فـ Douyin كتستعمل غالبا صورة أفقية؛ فالهاتف كتتحط الصورة فالجزء الفوقاني، والتعاليق كيبانو لتحت. تقدر تشغّل الأمر التالي باش تنشئ مشهد “غرفة بث Douyin”:

.venv/bin/python tools/obs_control.py setup douyin --camera FaceTime

هاد الأمر كيضبط لوحة OBS على 1296×1080، يعني بنسبة 1.2:1، وكيجهّز الشخصية الرقمية وبطاقة الشرح والترجمة وكاميرا الشخص الحقيقي. من بعد --camera كتب جزءا من اسم الكاميرا؛ وإذا خليتيه فارغا، غادي يستعمل أول كاميرا حقيقية يلقاها.

فأول تشغيل، macOS يقدر يطلب من OBS صلاحية استعمال الكاميرا. من بعد ما تسمح، عاود شغّل الأمر مرة أخرى باش يتطبّق قص الكاميرا بشكل صحيح. تقدر تبدّل بين المشهد الأفقي والعمودي فـ أي وقت؛ بجوجهم كيستعملو نفس طبقة الشخصية الرقمية، وما كيزيدوش فعدد المشاركين فالجلسة.

كاينين جوج طرق للربط مع مساعد البث المباشر ديال Douyin: فعّل الكاميرا الافتراضية ديال OBS، ومن بعد اختار OBS Virtual Camera فمساعد البث؛ أو زِد مصدرا من نوع نافذة فمساعد البث والتقط نافذة العرض ديال OBS. الكاميرا الافتراضية كتنقل الصورة فقط وما كتنقلش الصوت، لذلك خاصك تتأكد حتى أن مساعد البث قادر يلتقط “صوت الحاسوب” من مشهد “غرفة بث Douyin”.

إلا كان الحساب عندو صلاحية البث من طرف ثالث، تقدر حتى تدخل عنوان البث اللي كتوفرو المنصة مباشرة فـ OBS. تعاليق Douyin ما غاديش تدخل للمشروع تلقائيا؛ خاصك تطلب الصلاحية من خلال واجهة أسلوب البث فـ Douyin Open Platform، ومن بعد تبعث البيانات لـ /api/danmaku.

تعديل بطاقة شرح غرفة البث

بطاقات الشرح اللي فالزاويتين الفوقانيتين على اليمين واليسار فصفحة المسرح كتبيّن شنو تقدر تدير غرفة البث، وشنو ما كتقدرش تدير مؤقتا، وكيفاش تبعث تعاليق أكثر فعالية. المحتوى جاي من assets/stage_panel.json؛ وإذا ما كانش الملف، كيتستعمل assets/stage_panel.example.json.

من بعد نسخ الملف النموذجي، تقدر تبدلو بالمحتوى ديالك. صفحة المسرح كتعاود التحديث تلقائيا فمدة دقيقة، والطبقة ديال البث المدمج كتستعمل المحتوى الجديد فالحين. تقدر تستعمل outfit_hint باش تضبط تلميح تبديل اللباس لكل شخصية.

تفعيل إعادة البث تلقائيا

Vidu يقدر يقطع البث من حين لآخر. من بعد تفعيل الاسترجاع التلقائي، المشروع كينتظر 3 ثواني وكيعاود يبدا البث، وبحد أقصى 6 محاولات فالساعة. أما الانقطاع بسبب نقص النقاط أو مراجعة المحتوى، فما غاديش يعاود تلقائيا.

التفعيل عبر API:

curl -s -X POST http://127.0.0.1:28900/api/settings \
  -H 'Content-Type: application/json' \
  -d '{"auto_recover":true}'

وتقدر حتى تضبطو فـ config.json:

{"schedule":{"auto_recover":true}}

قبل بث طويل، من الأفضل تتأكد من رصيد الحساب، وموارد الشخصية، وحالة الشبكة، وتجرّب مسار الاسترجاع باستعمال الوضع التجريبي أو خدمة محلية محاكية.

الاختبارات وبنية المشروع

اختبارات المشروع كتستعمل Vidu محلي محاكي، وما كتستهلك حتى تكلفة. تقدر تشغّل:

python -m unittest tests.test_logic tests.test_workbench tests.test_e2e

هنا الاستعمالات ديال أهم المجلدات والملفات:

  • server.py: مدخل الخدمة والإعدادات الافتراضية.
  • live/: جدولة البث المباشر، واجهة Vidu الفورية، التعرّف على تعاليق البث، الخزانة، توليد المواد، البث المضمّن وواجهات مكتب العمل.
  • static/: مكتب العمل، صفحة المسرح والكونسول القديم.
  • WORKBENCH_API.md: جميع الواجهات اللي كيستعملها مكتب العمل.
  • tests/: كود الاختبارات وخدمات المحاكاة المحلية.

الخلاصة

هاد المشروع كيربط بين الإنسان الرقمي الفوري ديال Vidu، وقواعد تعاليق البث، وأصول الشخصيات، وإخراج البث فمسار عمل محلي واحد. من الأحسن تبدا بوضعية التشغيل التجريبي باش تتعرّف على التصفية، والانتظار فالطابور، والخزانة والطبقات، ومن بعد تضبط الصورة والصوت والمشاهد ديال OBS ديالك، وفالأخير تربطو بالمنصة الحقيقية.

فالبث العلني، خاصك تسدّ تعديل الخلفية والدعائم الفوري اللي يقدر يسبب تشوّه فالصورة، وتستعمل واجهات التفاعل الرسمية ديال المنصة، وتخلي علامة المحتوى المولّد بالذكاء الاصطناعي باينة. وزيد على هاد الشي، خاصك تتأكد مسبقاً من التراخيص ديال صوت الإنسان الحقيقي، وصورة الشخصية، والموسيقى، وأي مواد أخرى.