ربما تكون قد سمعت عن Neurosama الشهير ، أو Mu Jimeng من الصين. هل تريد أيضًا أن يكون لديك صورة افتراضية منظمة العفو الدولية لمرافقتك للعيش في البث والدردشة ولعب الألعاب؟ يعمل روبوت Zerolan Live مفتوح المصدر على إدراك أحلامك! وهذا يتطلب فقط بطاقة رسومات المستهلك!
Zerolan Live Robot هو روبوت البث المباشر متعدد الوظائف (AI Vtuber) ، والذي يمكنه قراءة وابل تلقائيًا في غرفة البث المباشر Bilibili ، ومراقبة النوافذ المعينة لشاشة الكمبيوتر ، وفهم محتوى الشاشة ، ومعالجة شخصيات اللعبة في Minecraft ، وجعل استجابات الدردشة الصوتية العاطفية.
مشاريعها المرتبطة Konekominecraftbot ، Zerolan-Core ، Zerolan-Data ، Zerolan-Ui.
ملحوظة
هذا المشروع تحت التطوير المستمر ، الإصدار الحالي هو 2.0 . يمكنك متابعة حساب Bilibili للمطور Akagawa tsurumi_channel. إنها تدريب AI Cat Girl استنادًا إلى هذا المشروع ، وستبث أحدث التقدم من وقت لآخر.
ما يلي يسرد بإيجاز ما يدعمه هذا المشروع:
| عناصر الدعم | المحتوى المدعوم |
|---|---|
| منصة البث المباشر | Bilibili | نشل |
| نموذج لغة كبيرة | thudm/glm-4 | thudm/chatglm3 | Qwen/Qwen-7b-Chat | 01ai/yi-6b-chat | Augmxnt/shisa-7b-v1 |
| نموذج التعرف على الكلام التلقائي | IIC/Speech_paraformer_asr |
| نموذج توليف الكلام | RVC-BOSS/GPT-SOVITS |
| نموذج الترجمة الصورة | Salesforce/blip-dest-captioning-large |
| نموذج التعرف على الأحرف البصرية | PADDLEPADDLE/PADDLEOCR |
| نموذج الترجمة الفرعية | IIC/multi-modal_hitea_video-captioning_base_en |
| أدوات قابلة للاتصال خارجية | متصفح Firefox ، موسوعة Baidu ، موسوعة منغنيانغ |
| مكون الإضافات | ماين كرافت |
حذر
إصدار Zerolan Live Robot 2.0 غير متوافق مع الإصدارات القديمة 1.0 ، لذلك قد تحتاج إلى إعادة تكوين البيئة وتثبيت التبعيات.
يتكون إطار Zerolan من Zerolan Live Robot و Zerolan Core و Zerolan Data و Zerolan UI. يصف الجدول التالي باختصار استخدامات كل مشروع:
| اسم المشروع | يستخدم |
|---|---|
| Zerolan Live Robot | يقوم إطار التحكم في روبوت البث المباشر بإجراء استجابات من خلال جمع البيانات البيئية والتحليل الشامل. |
| Zerolan Core | الوحدات الأساسية التي توفر خدمات الاستدلال من الذكاء الاصطناعى لروبوتات البث المباشر ، مثل واجهة برمجة تطبيقات الويب القائمة على الخدمة لنماذج اللغة الكبيرة. |
| بيانات Zerolan | يحدد تنسيق البيانات للتبادل بين الخدمات باستخدام طلبات الشبكة. |
| Zerolan UI | تتضمن واجهة واجهة المستخدم الرسومية المستندة إلى PYQT6 نوافذ منبثقة أعلى وأصوات موجهة ، إلخ. |
مهم
هذه الخطوة أمر لا بد منه !
يرجى الانتقال هنا لإكمال نشر Zerolan Core ، والذي يعتمد بشكل كبير على هذه الخدمة الأساسية.
قم بتشغيل الأمر ، الذي ينشئ بيئة افتراضية وينشطه ، ثم يقوم تلقائيًا بتثبيت حزم التبعية المطلوبة في هذا المشروع:
conda create --name ZerolanLiveRobot python=3.10
conda activate ZerolanLiveRobot
pip install -r requirements.txt إذا كنت في فرع dev Development ، فقد تحتاج إلى تثبيته يدويًا:
pip install git+https://github.com/AkagawaTsurunaki/zerolan-ui.git@dev
pip install git+https://github.com/AkagawaTsurunaki/zerolan-data.git@dev ابحث عن ملف تكوين resources/config.template.yaml ، وقم بتغييره إلى config.yaml ، ثم قم بتعديله إلى التكوين الذي تحتاجه وفقًا للتعليقات في ملف التكوين.
في عنصر تكوين pipeline ، تحتاج إلى ملاحظة أن server_url يجب أن يحتوي على بروتوكول و IP ورقم المنفذ ، مثل http://127.0.0.1:11001 ، https://myserver.com:11451 ، إلخ. قد يكون لكل نوع من النماذج منفذ مختلف.
نصيحة
هل يمكن أن يكون للخادم منفذ واحد فقط؟ ثم حاول إعادة توجيه طلبك باستخدام NGINX.
في عنصر تكوين service ، تحتاج إلى ملاحظة أن host يجب أن يتضمن فقط عنوان IP ، ويجب أن يتضمن port فقط رقم المنفذ.
يدعم game.platform Field minecraft ، ويدعم حقل live_stream bilibili و twitch و youtube .
نصيحة
الحصول على الوثائق التي يمكن استخدامها بواسطة مفتاح API منصة البث المباشر:
Bilibili: احصل على المعلومات المطلوبة لفئة بيانات الاعتماد
Twitch: Twitch Developers - المصادقة
يوتيوب: الحصول على بيانات اعتماد التفويض
يمكن أن تكون قيمة character.chat.filter.strategy default .
character.chat.filter.bad_words .
character.chat.injected_history
تحدد character.chat.max_history عدد الرسائل التي يتم الاحتفاظ بها على الأكثر ، أي حجم نافذة الرسالة.
[语言][情感标签]文本内容.wav character.speech.prompts_dir . على سبيل المثال [zh][开心]哇!今天真是一个好天气.wav ، حيث "اللغة" تدعم فقط zh و en و ja ؛ "العلامات العاطفية" تعسفية ، طالما يمكن تمييز نموذج اللغة الكبيرة ؛ "محتوى النص" هو محتوى النص الذي يمثله الغناء في هذا الصوت.
حذر
قد يكون هناك تسرب للذاكرة في متصفح Microsoft Edge ، لذلك لا يتم دعم هذا المشروع.
القيمة الاختيارية لـ external_tool.browser.driver هي firefox .
external_tool.browser.profile_dir هو التأكد من أنه تحت سيطرة السيلينيوم ، لن يتم فقد تسجيل الدخول إلى حسابك وغيرها من المعلومات. سيؤدي ترك برنامج فارغ إلى اكتشاف الموقع تلقائيًا (ولكن هذا لا يعني أنه سيتم العثور عليه بالتأكيد).
نصيحة
يوصى باستخدام أدوات اختبار API مثل Postman قبل البدء في اختبار ما إذا كان الاتصال بين الكمبيوتر الذي يعمل هذا المشروع و Zerolan Core أمر طبيعي. يوفر Zerolan Live Robot بعض النصائح عند أخطاء اتصال خطوط الأنابيب ، والتي لا تزال تتطلب منك استكشاف الأخطاء وإصلاحها يدويًا.
استخدم الأمر التالي لتشغيل البرنامج الرئيسي لـ Zerolan Live Robot:
python main.pyملحوظة
هذه الخطوة اختيارية .
يقوم هذا المشروع و KonekominEcraftBot بتنفيذ مجموعة من الواجهات التي يمكنها التحكم في الروبوتات في ألعاب Minecraft من هذا المشروع. إذا كنت في حاجة إليها ، يرجى الانتقال هنا لعرض التفاصيل.
استخدم الإصدار الأقدم من Zerolan Live Robot 1.0 استقصاءًا بسيطًا من الثانية لقراءة معلومات البيئة من قوائم ذاكرة التخزين المؤقت في كل وحدة خدمة. في الإصدار الأقدم من Zerolan Live Robot 2.0 ، تم تحويله إلى نمط تصميم يحركه الحدث .
في هذا المشروع ، يعمل الروبوت أثناء إرسال سلسلة من الأحداث ومعالجتها. بمعنى آخر ، بدون حدث ، لن يستجيب الروبوت.
يحتوي كل Event حدث على اسم الحدث ، وهو في الأساس سلسلة. يتم تعريف جميع أسماء الأحداث المستخدمة في هذا المشروع بشكل common.enumerator.EventEnum . دعنا نأخذ حدث معالجة صوت إدخال المستخدم كمثال ، يسمى الحدث الخاص به EventEnum.SERVICE_VAD_SPEECH_CHUNK .
emitter هو كائن عالمي يستخدم للتعامل مع إرسال الحدث وتنفيذ المستمع. emitter دائما الخيط الرئيسي. ومع ذلك ، سيتم تشغيل مؤشرات الترابط المتعددة في نفس الوقت أثناء تشغيل النظام بأكمله ، لأن كل مؤشر ترابط قد يكون له مثيله الخاص لـ EventEmitter.
استخدم Decorator @emitter.on(EventEnum.某个事件) لتسجيل مستمع بسرعة. يمكن أن يكون المستمع إما وظيفة متزامنة أو وظيفة غير متزامنة. عندما نحتاج إلى إرسال حدث ، يمكننا استخدام طريقة غير متزامنة emitter.emit(EventEnum.某个事件, *args, **kwargs) .
على سبيل المثال ، عندما يكتشف النظام صوتًا بشريًا ، سيتم إرسال حدث SERVICE_VAD_SPEECH_CHUNK ، وسيتم استدعاء جميع المستمعين الذين يسجلون هذا الحدث لأداء بعض المعالجة:
@ emitter . on ( EventEnum . SERVICE_VAD_SPEECH_CHUNK )
async def on_service_vad_speech_chunk ( speech : bytes , channels : int , sample_rate : int ):
response = ... # 假设这里获得了语音识别的结果
await emitter . emit ( EventEnum . PIPELINE_ASR , response ) # 发送自动语音识别事件المستمع هنا هو on_service_vad_speech_chunk ، والتي هي في الأساس وظيفة سيتم استدعاؤها عندما تحدث SERVICE_VAD_SPEECH_CHUNK ويقبل عدة معلمات. يتم تحديد المعلمات هنا بالكامل بواسطة مرسل الحدث.
خط الأنابيب هو تطبيق مهم للتواصل مع Zerolan Core. استخدام خطوط الأنابيب أمر بسيط للغاية. تحتاج فقط إلى تمرير كائن تكوين للحصول على كائن خط أنابيب متاح. ثم اتصل بالطريقة predict أو stream_predict في كائن خط الأنابيب لاستخدام نموذج الذكاء الاصطناعي في Zerolan Core.
أخذ نموذج اللغة الكبير كمثال ، حدد عنوان الخادم الهدف (عنوان منفذ Zerolan Core Open الخاص بك) ، تمريره في كائن LLMPipelineConfig إلى LLMPipeline لإنشاء خط الأنابيب.
config = LLMPipelineConfig ( server_url = "..." )
llm = LLMPipeline ( config )
query = LLMQuery ( text = "你好,你叫什么名字?" , history = [])
prediction = llm . predict ( query )
print ( prediction . response )هذا يجب أن يحصل على رد من النموذج.
إذا كنت ترغب في معرفة المزيد من تفاصيل التنفيذ ، فيمكنك التحقق من تعريف البيانات في بيانات Zerolan ، والتي قد تحتاج أيضًا إلى فهمها مع تنفيذ خط الأنابيب والمحتويات في ملف app.py في Zerolan Core. ببساطة ، فهي جميعها تستند إلى HTTP.
| الوحدة النمطية | تأثير | المحتوى المدعوم |
|---|---|---|
| متصفح | التحكم في المتصفح القائم على السيلينيوم | متصفح Firefox مفتوح وبحث وإغلاق المتصفح |
| جهاز | الميكروفون ، لقطة الشاشة ، التحكم في السماعة | تم اختباره على Windows فقط |
| فلتر | مانع الحوار | مرشح مطابقة بسيط |
| لعبة | البرنامج المساعد التحكم في اللعبة | انظر KonekominEcraftbot للحصول على التفاصيل |
| Live_stream | قراءة وابل من منصة البث المباشر | Bilibili ، Twitch ، YouTube |
| فاد | اكتشاف الصوت البشري | آلية اكتشاف الصوت على أساس عتبة الطاقة |
بعد بدء التشغيل ، يظهر السجل "في سياقه ، العنوان المطلوب غير صالح."
الحل: تحقق مما إذا كان تكوين host صحيحًا في ملف التكوين. إذا كنت تريد الوصول الأصلي فقط ، فحدد '127.0.0.1' .
يستخدم هذا المشروع ترخيص MIT ، يرجى عدم استخدام هذا البرنامج لأغراض غير قانونية.
لا تتردد في الاستمتاع بالفتح!
رخصة معهد ماساتشوستس للتكنولوجيا
حقوق الطبع والنشر (C) 2024 Akagawatsurunaki
البريد الإلكتروني : [email protected]
جيثب : أكاغاواتسوروناكي
Bilibili : Akagawa tsurumi_channel