คุณอาจเคยได้ยินเกี่ยวกับ Neurosama ที่มีชื่อเสียงหรือ Mu Jimeng จากประเทศจีน คุณต้องการมีภาพเสมือนจริงของ AI ของคุณเองเพื่อติดตามคุณเพื่อถ่ายทอดสดแชทและเล่นเกมหรือไม่? โอเพนซอร์ส Zerolan Live Robot กำลังทำงานเพื่อตระหนักถึงความฝันของคุณ! และสิ่งนี้ต้องใช้การ์ดกราฟิกผู้บริโภคเท่านั้น!
Zerolan Live Robot เป็นหุ่นยนต์ถ่ายทอดสดที่ใช้งานได้อเนกประสงค์ (AI VTuber) ซึ่งสามารถอ่าน Barrage ในห้อง Bilibili Live Broadcast ได้โดยอัตโนมัติสังเกตหน้าต่างที่กำหนดของหน้าจอคอมพิวเตอร์เข้าใจเนื้อหาหน้าจอจัดการตัวละครเกมใน 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/SPEET_PARAFORMER_ASR |
| แบบจำลองการสังเคราะห์คำพูด | RVC-boss/gpt-sovits |
| รูปแบบคำบรรยายภาพ | Salesforce/blip-image-captioning ขนาดใหญ่ |
| รูปแบบการจดจำอักขระออพติคอล | Paddlepaddle/Paddleocr |
| โมเดลคำบรรยายวิดีโอ | IIC/multi-modal_hitea_video-captioning_base_en |
| เครื่องมือเรียกเก็บเงินภายนอก | เบราว์เซอร์ Firefox, สารานุกรม Baidu, สารานุกรม Mengniang |
| ปลั๊กอินเกม | Minecraft |
คำเตือน
Zerolan Live Robot 2.0 เวอร์ชันไม่สอดคล้องกับรุ่นเก่า 1.0 ดังนั้นคุณอาจต้องกำหนดค่าสภาพแวดล้อมใหม่และติดตั้งการพึ่งพา
กรอบ Zerolan ประกอบด้วย Zerolan Live Robot, Zerolan Core, Zerolan Data และ Zerolan UI ตารางต่อไปนี้อธิบายการใช้งานแต่ละโครงการสั้น ๆ :
| ชื่อโครงการ | ใช้ |
|---|---|
| Zerolan Live Robot | กรอบการควบคุมของหุ่นยนต์ถ่ายทอดสดทำให้การตอบสนองการกระทำผ่านการรวบรวมข้อมูลสิ่งแวดล้อมและการวิเคราะห์ที่ครอบคลุม |
| เซโรลันแกนกลาง | โมดูลหลักที่ให้บริการการอนุมาน AI สำหรับหุ่นยนต์ออกอากาศสดเช่น Web API ที่ใช้บริการของรุ่นภาษาขนาดใหญ่ |
| ข้อมูล Zerolan | กำหนดรูปแบบข้อมูลสำหรับการแลกเปลี่ยนระหว่างบริการโดยใช้คำขอเครือข่าย |
| Zerolan UI | อินเทอร์เฟซ GUI ที่ใช้ PYQT6 รวมถึงหน้าต่างป๊อปอัพและเสียงที่พร้อมใช้งาน ฯลฯ |
สำคัญ
ขั้นตอนนี้เป็น สิ่งจำเป็น !
โปรดย้ายมาที่นี่เพื่อให้การปรับใช้ของ Zerolan Core เสร็จสมบูรณ์ซึ่งต้องอาศัยบริการหลักนี้อย่างมาก
เรียกใช้คำสั่งซึ่งสร้างสภาพแวดล้อมเสมือนจริงและเปิดใช้งานจากนั้นติดตั้งแพ็คเกจการพึ่งพาโดยอัตโนมัติที่ต้องการโดยโครงการนี้:
conda create --name ZerolanLiveRobot python=3.10
conda activate ZerolanLiveRobot
pip install -r requirements.txt หากคุณอยู่ในสาขาพัฒนา dev คุณอาจต้องติดตั้งด้วยตนเอง:
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 ฯลฯ นี่คือที่อยู่เครือข่ายที่คุณปรับใช้ Zerolan Core โมเดลแต่ละประเภทอาจมีพอร์ตที่แตกต่างกัน
เคล็ดลับ
เซิร์ฟเวอร์สามารถมีพอร์ตเดียวได้หรือไม่? จากนั้นลองส่งต่อคำขอของคุณโดยใช้ Nginx
ในรายการการกำหนดค่า service คุณต้องทราบว่า host ควรรวมที่อยู่ IP เท่านั้นและ port ควรรวมหมายเลขพอร์ตเท่านั้น
Field game.platform รองรับ minecraft และ Field live_stream รองรับ bilibili , twitch และ youtube
เคล็ดลับ
รับเอกสารที่อาจใช้โดยคีย์ API แพลตฟอร์ม Live Broadcast:
Bilibili: รับข้อมูลที่จำเป็นสำหรับคลาสข้อมูลรับรอง
Twitch: Twitch Developers - การรับรองความถูกต้อง
YouTube: การได้รับข้อมูลรับรองการอนุญาต
ค่าของ character.chat.filter.strategy สามารถ default
character.chat.filter.bad_words สามารถเติมเต็มชุดของคำกรอง
character.chat.injected_history อาร์เรย์จะต้องมีจำนวนคู่นั่นคือมันจะต้องเป็นจุดสิ้นสุดของข้อความที่ AI ตอบกลับ
character.chat.max_history ระบุจำนวนข้อความที่ถูกเก็บไว้มากที่สุดนั่นคือขนาดของหน้าต่างข้อความ
character.speech.prompts_dir ระบุตำแหน่งที่เก็บไฟล์เสียง TTS ของคุณและชื่อไฟล์ของคุณควรอยู่ในรูปแบบของ [语言][情感标签]文本内容.wav wav ตัวอย่างเช่น [zh][开心]哇!今天真是一个好天气.wav 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 วิธีการแบบอะซิงโครนัส 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 เกิดขึ้นและยอมรับพารามิเตอร์หลายตัว พารามิเตอร์ที่นี่มีการระบุอย่างสมบูรณ์โดยผู้ส่งเหตุการณ์
Pipeline เป็นการดำเนินการสื่อสารที่สำคัญกับ Zerolan Core การใช้ท่อเป็นเรื่องง่ายมาก คุณจะต้องผ่านวัตถุการกำหนดค่าเพื่อรับวัตถุไปป์ไลน์ที่มีอยู่ จากนั้นเรียกใช้วิธี predict หรือ stream_predict ในวัตถุไปป์ไลน์เพื่อใช้โมเดล AI ใน Zerolan Core
การใช้โมเดลภาษาขนาดใหญ่เป็นตัวอย่างระบุที่อยู่ของเซิร์ฟเวอร์เป้าหมาย (ที่อยู่ของพอร์ต Open Zerolan Core ของคุณ) ส่งผ่านในวัตถุ 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 | Barrage Reading of Live Broadcast Platform | Bilibili, Twitch, YouTube |
| VAD | การตรวจจับเสียงด้วยเสียงของมนุษย์ | กลไกการตรวจจับเสียงตามเกณฑ์พลังงาน |
หลังจากเริ่มต้นบันทึกจะแสดง "ในบริบทของที่อยู่ที่ร้องขอไม่ถูกต้อง"
วิธีแก้ปัญหา: ตรวจสอบว่าการกำหนดค่าของ host นั้นถูกต้องในไฟล์การกำหนดค่าหรือไม่ หากคุณต้องการการเข้าถึงแบบดั้งเดิมให้ระบุ '127.0.0.1'
โครงการนี้ใช้ใบอนุญาต MIT โปรดอย่าใช้ซอฟต์แวร์นี้เพื่อวัตถุประสงค์ที่ผิดกฎหมาย
อย่าลังเลที่จะเพลิดเพลินไปกับการเปิดกว้าง!
ใบอนุญาต MIT
ลิขสิทธิ์ (c) 2024 Akagawatsurunaki
อีเมล : [email protected]
GitHub : Akagawatsurunaki
Bilibili : Akagawa Tsurumi_Channel