พูดคุยกับอวตาร 3 มิติที่มีรายละเอียดซึ่งขับเคลื่อนโดย AI ใช้โมเดลภาษาขนาดใหญ่ (LLM), การอ่านออกเสียงข้อความ (TTS), โปรแกรมเกม Unity และลิปซิงค์เพื่อทำให้ตัวละครมีชีวิตชีวา
ในวิดีโอ เราจะถามตัวละครว่า "Michael Jordan คือใคร" อวตาร 'ตอบ' คำถามหลังจากล่าช้าไปครู่หนึ่ง การใช้ข้อความก่อนหน้านี้เป็นบริบท เราสามารถมีการสนทนาทั้งหมดได้ สังเกตฟิสิกส์ของเส้นผมและกระพริบตา!
การแสดงเหตุการณ์ระยะไกลที่ทริกเกอร์จากเว็บเบราว์เซอร์ หลังจากเลือก VFX แต่ละรายการ ระบบอนุภาคที่เกี่ยวข้องจะถูกเล่น การใช้งานยอดนิยมคือเอฟเฟกต์อนุภาคพลุเมื่อมีคนบริจาคเงิน 5 ดอลลาร์ให้กับ Twitch เป็นต้น ในช่วงฝนตก VFX คุณอาจสังเกตเห็นกระเด็นและกระเด้งเมื่อหยดโต้ตอบกับตัวละคร (ด้านบนของเส้นผม)
ฟังก์ชันการทำงานหลักคือโมเดล 3 มิติแบบกำหนดเองที่ 'พูด' มันส่งเสียงและใช้ไลบรารีลิปซิงค์ของ Oculus เพื่อสร้างความประทับใจ (หวังว่าจะน่าเชื่อ) นี่คือชุดคุณลักษณะ:
โฟลว์ไม่ได้ขึ้นอยู่กับการใช้งานใดๆ เป็นพิเศษ คุณสามารถผสมและจับคู่ LLM, TTS หรือโมเดล 3 มิติใดๆ ที่เหมาะสมได้ตามต้องการ (ต้องใช้คีย์รูปร่างเฉพาะ) ดังที่คุณอาจสังเกตเห็นว่าสถาปัตยกรรมนี้ทำให้เรามีความยืดหยุ่นสูงสุด อย่างที่คุณอาจจินตนาการได้ ประโยคก่อนหน้านั้นเป็นการพูดที่น้อยเกินไป
ไม่มีการรู้จำเสียง ข้อความแจ้งจะเป็นข้อความเท่านั้น การเพิ่มคุณสมบัตินี้โดยใช้ Whisper Fast เป็นเรื่องเล็กน้อย ดูคำแนะนำด้านล่าง TL; DR ส่ง GET หรือ POST ไปยัง
/prompt
endpoint
เมื่อใช้ TTS กับการสตรีมและ DeepSpeed ฉันมักจะได้รับการตอบสนอง <4 วินาที (จากการส่งข้อความแจ้งไปยังเสียงแรก) มีขนาดเล็กพอ การสนทนานั้นให้ความรู้สึกแบบเรียลไทม์ ณ จุดนี้ คอขวดคือ LLM บน GPU ตัวเดียวคุณไม่สามารถเรียกใช้ LLM และ TTS ในเวลาเดียวกันได้ (ฉันได้ลองแล้ว ตรวจสอบคำถามที่พบบ่อยเกี่ยวกับตัวเลือกการกำหนดค่า tts.chunk_size
) เราต้องสร้างโทเค็นข้อความทั้งหมดก่อนแล้วจึงสร้างเสียงเท่านั้น ฉันได้ลองถ่ายโอน TTS ไปยัง CPU แล้ว แต่ก็ประสบปัญหาเช่นกัน
การสตรีม หมายความว่าเราแบ่งข้อความที่สร้างขึ้นออกเป็นส่วนเล็กๆ มีครอสเฟดเล็กๆ เพื่อปกปิดการเปลี่ยนชิ่งก์ ส่วนแรกเล็กๆ หมายถึงการเริ่มเสียงครั้งแรกที่รวดเร็ว DeepSpeed เป็นไลบรารีของ Microsoft เพื่อเพิ่มความเร็วในการอนุมาน GPT ทั้งการสตรีมและ DeepSpeed เป็นทางเลือก แต่ขอแนะนำ
คำถามแรกหลังจากที่เซิร์ฟเวอร์เริ่มทำงานจะใช้เวลานานที่สุดเสมอ (~10 วินาที) เนื่องจากเซิร์ฟเวอร์จะต้องโหลดโมเดล AI เมื่อใช้ในตัวแก้ไข Unity คุณจะแทบไม่มีการหยุดการรวบรวมขยะชั่วคราว (เห็นได้ชัดเจนด้วยเสียง) แต่ฉันจะแปลกใจถ้าคุณประสบปัญหา GC ในรุ่นที่ใช้งานจริง
ฉันต้องบอกว่าฉันสนุก ฉันคาดว่าจะเกิดปัญหาบางอย่างเมื่อใช้ GPU เดียวกันสำหรับทั้งการเรนเดอร์ Unity และ AI ฉันรู้ว่าแอป Android/iOS เป็นทางเลือกที่ง่ายดายในการถ่ายต้นทุน Unity ไปยังอุปกรณ์อื่น แต่ไม่จำเป็นสำหรับฮาร์ดแวร์ของฉัน เป็นเรื่องที่ไม่คาดคิดว่ามันทำงานได้อย่างราบรื่น จะไม่บ่น ฉันยังจำกัด Unity ไว้ที่ 30FPS ด้วย (ในกรณีนี้)
หากคุณไปที่แผงควบคุม คุณจะเห็นการกำหนดเวลาสำหรับแต่ละขั้นตอนการตอบสนอง สำหรับ Unity ให้ใช้ตัวสร้างโปรไฟล์ในตัว
ดู INSTALL_AND_USAGE.md นอกจากนี้ยังมีคำแนะนำเกี่ยวกับวิธีใช้/ขยายคุณสมบัติปัจจุบันอีกด้วย
คำถามด้านล่างนี้เกี่ยวกับปรัชญาทั่วไปของแอปนี้ สำหรับคำถามที่พบบ่อยเกี่ยวกับการใช้งานเพิ่มเติม โปรดดูที่ INSTALL_AND_USAGE.md
แอปนี้แสดงให้เห็นว่าเรามีเทคโนโลยีในการเรนเดอร์อวตาร 3 มิติที่มีรายละเอียดอยู่แล้ว และรันเน็ตที่เป็นกลางบางส่วนบน GPU ระดับผู้บริโภคเพียงตัวเดียวในแบบเรียลไทม์ สามารถปรับแต่งได้และไม่จำเป็นต้องเชื่อมต่ออินเทอร์เน็ต นอกจากนี้ยังสามารถทำงานในสถาปัตยกรรมไคลเอนต์-เซิร์ฟเวอร์ เพื่ออำนวยความสะดวก เช่น การเรนเดอร์บนอุปกรณ์มือถือ
ฉันสามารถใช้โมเดลซินเทลมาตรฐานได้ ฉันสร้างตัวละครของตัวเองขึ้นมาเพราะฉันทำได้ ตั้งแต่การลากจุดยอด การวาดภาพพื้นผิว การสร้างภาพเคลื่อนไหวของปาก และการปรับฟิสิกส์ของเส้นผมให้เป็นอวาตาร์ 3 มิติที่ 'กำลังพูด' เป็นงานอดิเรกที่สนุกสนานทีเดียวถ้าฉันพูดอย่างนั้นด้วยตัวเอง
ฉันยังต้องการทดสอบการฉายภาพพื้นผิวจากรูปภาพที่สร้างการแพร่กระจายที่เสถียร เช่น คุณสามารถเพิ่ม 'bald' ลงในพรอมต์เชิงบวก และ 'hair' เติมลงในเชิงลบ มันเร่งกระบวนการทำงานได้มาก อนิจจา การฉายภาพซ้ำจะมีไฮไลท์แบบพิเศษ ฯลฯ ให้ลบออกด้วยตนเอง
ฉันใช้ Sintel เป็นตาข่ายฐานเนื่องจากมีปุ่มรูปทรงพื้นฐานอยู่แล้ว โดยเฉพาะการควบคุมแต่ละส่วนของปาก - เพียงเพิ่มไดรเวอร์ที่รองรับ Blender 4.0 สิ่งนี้ทำให้การสร้างคีย์รูปทรง viseme เป็นเรื่องเล็กน้อย ฉันเคยใช้แบบจำลองของ Sintel มาแล้วหลายครั้ง ดังนั้นจึงไม่ใช่เรื่องง่ายสำหรับโปรเจ็กต์นี้
ป.ล. ฉันเกลียดการผูกเสื้อผ้า
คุณคงเคยเห็นตัวละครเสมือนจริงที่สร้างการแพร่กระจายที่เสถียรแบบเรียลไทม์ เป็นภาพนิ่งที่มีบริเวณปากสร้างขึ้นใหม่ทุกเฟรมตามเสียง คุณจะสังเกตได้ว่ามันไม่เสถียร หากคุณกระจายฟันทุกเฟรม ฟันก็จะเคลื่อนไปมาอย่างต่อเนื่อง ฉันใช้การแพร่กระจายที่เสถียรมาก ฉันได้เห็นส่วนแบ่งของร่างกายที่เสียหาย (มือ!) มัน... สังเกตได้จากฟัน การใช้งานที่ได้รับความนิยมคือ SadTalker มันยังมีส่วนขยาย UI ของเว็บ Stable Diffusion อีกด้วย
แต่แอปของฉันใช้เทคโนโลยีเก่าที่น่าเบื่อซึ่งมีอยู่ในวิดีโอเกมมานานหลายปีแทน หากคุณมีบทสนทนาหลายร้อยชั่วโมง (Baldur's Gate 3, Cyberpunk 2077 ฯลฯ) คุณจะไม่สามารถสร้างภาพเคลื่อนไหวด้วยมือได้ ระบบเช่น JALI ถูกนำมาใช้ในทุกหัวข้อหลัก
หากคุณต้องการตัวละครแอนิเมชั่นแบบเรียลไทม์ ทำไมต้องใช้ AI เพียงอย่างเดียว? ทำไมไม่ลองมองหาโซลูชันที่ใช้โดยภาคส่วนความบันเทิงที่ใหญ่ที่สุดในโลก อย่างน้อยที่สุดคุณก็สามารถใช้เป็นฐานสำหรับ img2img ได้ ในช่วงไม่กี่ปีที่ผ่านมา เรายังมี VTubers ซึ่งขยายขอบเขตออกไปในแต่ละวัน สิ่งต่างๆ มากมายนี้ใช้เทคโนโลยีที่พัฒนาโดยแฟนๆ ของ Hatsune Miku
Neuro-sama เป็นสตรีมเมอร์เสมือนยอดนิยม เป็นตัวละครที่ขับเคลื่อนด้วย AI ซึ่งเล่นวิดีโอเกมและพูดคุยกับผู้สร้าง Vedal นี่คือวิธีที่แอปของฉันเทียบกับมัน:
แอปนี้มีซอร์สโค้ด/เนื้อหาที่สร้างโดยบุคคลอื่น แต่ละอินสแตนซ์ดังกล่าวมี README.md เฉพาะในโฟลเดอร์ย่อยที่อธิบายสิทธิ์การใช้งาน เช่นฉันได้ให้คำมั่นสัญญากับซอร์สโค้ด repo นี้สำหรับไลบรารี "Oculus Lipsync" ซึ่งมีใบอนุญาตของตัวเอง (ยอมรับก่อนใช้งาน!) XTTS v2.0 มีไว้เพื่อการใช้งานที่ไม่ใช่เชิงพาณิชย์เท่านั้น ย่อหน้าด้านล่างมีผลกับสิ่งที่ฉันสร้างขึ้นเท่านั้น
มันคือ GPLv3 มันเป็นหนึ่งในลิขสิทธิ์ลิขสิทธิ์ ใบอนุญาต GPL/copyleft ควรเป็นที่คุ้นเคยสำหรับโปรแกรมเมอร์ส่วนใหญ่จากเคอร์เนล Blender หรือ Linux มันค่อนข้างสุดขั้ว แต่ก็ถูกกำหนดโดยธรรมชาติของแอป และโดยเฉพาะอย่างยิ่ง หนึ่งในการใช้งานที่เป็นไปได้
ล่าสุดฉันได้ดู "Apple's $3500 Nightmare" โดย Eddy Burback เป็นการรีวิว Apple Vision Pro ราคา 3,500 ดอลลาร์ (!) หนึ่งในแอปที่นำเสนอช่วยให้ผู้ใช้สามารถออกเดทกับ "แฟน" ของ AI ได้ อินเทอร์เฟซมีรูปภาพที่สร้างการแพร่กระจายที่เสถียรทางด้านซ้าย (ฉันได้กลิ่น PastelDiffusedMix กับ Seraphine LoRA?) ข้อความแชททางด้านขวา นั่นเป็นความทันสมัยของซอฟต์แวร์ประเภทนี้หรือไม่? มันขี้เกียจ
อฟช. แอพหาคู่บนมือถือเต็มไปด้วยข้อถกเถียงตั้งแต่เริ่มต้น Tinder and Co. ไม่ต้องการสูญเสียลูกค้าประจำ การหลอกลวงมีอยู่มากมายก่อนที่เราจะพูดถึงการเรียนรู้ของเครื่องด้วยซ้ำ มีโปรไฟล์ AI นับล้านโปรไฟล์บน Tinder และด้วยการหาคู่แบบ AI ตรงๆ มันเป็นอีกปัญหาหนึ่ง
คุณสามารถใช้รุ่นใดก็ได้ที่คุณชอบ ลิปซิงค์ใช้ปุ่มรูปทรงที่สอดคล้องกับลักษณะของ ovrlipsync ด้วยการสาธิตเทคโนโลยี "ศัตรู" Unity ได้พิสูจน์แล้วว่าสามารถสร้างมนุษย์ที่สมจริงได้
โดยส่วนตัวแล้ว ฉันจะใช้เมตาฮิวแมนของ Unreal Engine คุณจะต้องเขียนโค้ด Unity ของฉันใหม่ สำหรับความพยายามนี้ คุณจะได้รับอุปกรณ์ล้ำสมัยและสินทรัพย์ที่มีความเที่ยงตรงสูงฟรี คุณสามารถลองนำเข้า metahuman เข้าสู่ Unity ได้
ด้วยเหตุผลบางประการ Unity จึงไม่มีไปป์ไลน์ในตัวสำหรับตัวละครมนุษย์ แม้แต่ตอนสร้างภาพยนตร์ "ศัตรู" ที่ลิงก์ไว้ข้างต้น พวกเขาก็ไม่สนใจที่จะทำให้ชุมชนอยู่รอดได้ เป็นชุดเครื่องมือแบบกำหนดเองที่ปรับให้เหมาะกับ Autodesk Maya และฉันไม่เคยได้ยินเกี่ยวกับรูปแบบไฟล์คลิป 4D มาก่อน ขอแสดงความยินดีกับหัวหน้าโครงการ! เป็นการตัดสินใจที่น่าสับสน เช่น พวกเขามี HairFX สำหรับการเรนเดอร์และการจำลองผม มันขึ้นอยู่กับ TressFX ฉันได้ย้าย TressFX ไปยัง OpenGL, WebGL และ Vulkan แล้ว ฉันเข้าใจมันค่อนข้างดี แต่แอพนี้ใช้การ์ดผม! Original Sintel มีเส้นผมที่เป็นเส้นโค้ง ซึ่งควรเป็นการดำเนินการส่งออกที่เรียบง่าย ระบบเหล่านี้จำเป็นต้องมีเอกสารประกอบที่เหมาะสม
สุดท้ายแล้ว เครื่องมือก็เป็นแค่เครื่องมือ ฉันหวังว่า Unity จะมีลำดับความสำคัญตามลำดับ ฉันว่าการแสดงผู้คนค่อนข้างสำคัญในตลาดปัจจุบัน
ใช่ แต่ต้องแน่ใจว่าคุณเข้าใจว่าทำไมคุณถึงต้องการใช้เอนจิ้น 3 มิติสำหรับเทคนิคการเรนเดอร์ 2 มิติ สำหรับ Guilty Gear Xrd ผู้เขียนต้องปรับแต่งค่าปกติแบบต่อเฟรม แม้กระทั่งทุกวันนี้ 3D ก็ยังเป็นที่ถูกใจของแฟนอนิเมะ ข้อยกเว้นเพียงอย่างเดียว (เท่าที่ฉันรู้) คือดินแดนแห่งความแวววาว และสิ่งนี้ได้รับความช่วยเหลือจากองค์ประกอบช็อตที่น่าทึ่ง
เมื่อดูแอนิเมชั่นแบบเรียลไทม์ของตะวันตกที่เรามี เช่น Borderlands โดยจำลองสไตล์หนังสือการ์ตูนโดยใช้แสงเรียบๆ สีที่ไม่ชัดเจน และเส้นหมึกหนา มีบทช่วยสอนมากมายบน YouTube สำหรับการแรเงาแบบเรียบๆ แต่คุณจะไม่ได้ผลลัพธ์ที่ใกล้เคียงกันหากไม่เก่งในการวาดภาพพื้นผิว
แม้ว่าสิ่งนี้อาจฟังดูท้อใจ แต่ฉันอยากให้คุณคำนึงถึงเป้าหมายของคุณด้วย มีเหตุผลว่าทำไมทุกคนถึงใช้ VTubeStudio และ Live2D การสร้างแบบจำลองสำหรับ 2D และ 3D ไม่มีความซับซ้อนที่เปรียบเทียบได้ แม้จะไม่ใช่รูปแบบศิลปะที่เหมือนกันก็ตาม
ไม่ต้องสนใจทุกสิ่งที่ฉันกล่าวไว้ข้างต้นหากคุณทำงานให้กับ Riot Games, Fortiche, Disney/Pixar DreamWorks หรือ Sony Pictures Animation
ขนาดการติดตั้ง Unity มีขนาดเล็กลง มันมุ่งเป้าไปที่มือสมัครเล่น คุณสามารถเขียนสคริปต์ C# และวางลงบนวัตถุเพื่อเพิ่มลักษณะการทำงานใหม่ แม้ว่า UX จะอยู่ทั่วทุกแห่ง แต่ก็ไม่มีความสะดุดในแง่มุมหลักๆ
Unity เหนือกว่า UE5 ในเรื่องความสะดวกในการใช้งานและเวลาในการทำซ้ำ เหตุผลหลักในการเปลี่ยนมาใช้ UE5 ก็คือเมตาฮิวแมน (!) การผลิตแบบเสมือนจริง หรือ mocap ที่เป็นมาตรฐานอุตสาหกรรม
ขึ้นอยู่กับรุ่น LLM gemma:2b-instruct
เริ่มต้นมีขนาดเล็ก (3 พันล้านพารามิเตอร์) มันสามารถสร้างประโยคที่สอดคล้องกันได้ แต่ส่วนใหญ่แล้วมันจะไปได้ไกลแค่ไหน หากคุณสามารถใช้โมเดล 7B ที่ล้ำสมัยได้ (ถึงแม้จะมีการวัดปริมาณก็ตาม) หรืออะไรที่ใหญ่กว่านั้น ก็ลองดูเลย คุณสามารถสลับเป็น ChatGPT ได้ตลอดเวลาเช่นกัน หรือใช้การตั้งค่าหลาย GPU หรือเรียกใช้ Unity บนโทรศัพท์มือถือ, TTS บน Raspberry PI และมี VRAM เต็มรูปแบบสำหรับ LLM
ฉันไม่ได้เพิ่มสิ่งนี้ จะต้องมีการเพิ่มกรณีพิเศษลงในโมเดล 3 มิติ เช่น อาจเป็นเรื่องยากที่จะทำให้ปากเคลื่อนไหวในระหว่างการลิปซิงค์ การปัดแก้มด้วยอวตาร 3 มิติมักจะทำได้โดยการผสมพื้นผิวพิเศษในกราฟเชเดอร์
แต่เทคโนโลยีพื้นฐานก็มีอยู่แล้ว หากคุณต้องการตรวจจับอารมณ์ในข้อความ คุณสามารถใช้ LLM เพื่อวิเคราะห์ความรู้สึกได้ ฉันยังได้เพิ่มเทคโนโลยีเพื่อกระตุ้นเหตุการณ์โดยใช้ WebSocket ตู้เอทีเอ็ม มันเริ่มมีเอฟเฟกต์อนุภาค ครึ่งหนึ่งของโค้ด C# เกี่ยวข้องกับการเรียกใช้คีย์รูปร่าง การกะพริบเป็นฟังก์ชันที่เรียกว่าทุกๆ สองสามวินาที เมื่อคุณสร้างการโต้ตอบกับโมเดล 3 มิติแล้ว คุณสามารถเริ่มต้นได้ตลอดเวลา ใช้เวลาในการสร้างเพียงเท่านั้น
ใช่ ฉันพยายามแล้ว (ไม่ได้เพิ่มใน repo นี้) แผนเดิมคือการถ่ายโอนสไตล์ของเฟรมที่เรนเดอร์ไปยังรูปภาพที่สร้างโดยการแพร่กระจายที่เสถียร จากการทดลองสั้นๆ ของฉัน นอกเหนือจากปัญหาด้านประสิทธิภาพแล้ว วิธีแก้ปัญหาที่ง่ายที่สุดไม่ได้มีคุณภาพหรือความเสถียรทางโลกที่จำเป็น
เราไม่มีงบประมาณด้านประสิทธิภาพในการรัน VGG16/19 ซึ่งไม่รวมเทคนิค 'ดั้งเดิม' เช่น "อัลกอริธึมประสาทของสไตล์ศิลปะ" [Gatys2015] หรือ "การสูญเสียการรับรู้สำหรับการถ่ายโอนสไตล์แบบเรียลไทม์และความละเอียดขั้นสูง" [Johnson2016] ไม่มีใครมองการกะพริบด้วย ออกแบบมาสำหรับภาพนิ่งเท่านั้น ไม่ใช่วิดีโอ มีงานเพิ่มเติมที่พิจารณาปัญหาดังกล่าว: [Jamriska2019], [Texler2020]
ฉันรู้ว่า Unity ได้ลองใช้การถ่ายโอนสไตล์แบบเรียลไทม์ในปี 2020: "การถ่ายโอนสไตล์แบบเรียลไทม์ใน Unity โดยใช้เครือข่ายประสาทเชิงลึก"
หลังจากนั้นเราก็อยู่ในอาณาเขตของทรานส์ฟอร์มเมอร์ส (เซอร์ไพรส์!) ปีที่แล้ว "Data Augmentation with diffUsion Models (DATUM)" [CVPR-W 2023] ใช้การแพร่กระจาย (แปลกใจอีกแล้ว!) มีหมวดหมู่เอกสารที่มีโค้ดที่เรียกว่า Synthetic-to-Real Translation หากคุณต้องการติดตามความทันสมัย
ณ จุดนี้ ฉันตัดสินใจว่ามันเป็นฟีเจอร์ที่คืบคลานที่จะลองใส่สิ่งนี้ลงในแอป
มีตอนของ Two Minute Papers ที่ดูเทคนิคที่คล้ายกัน: "วิดีโอเกมของ Intel ดูเหมือนความเป็นจริง!" อิงตาม "Enhancing Photorealism Enhancement" ของ Intel [Richter2021]
ใช่ ตรวจสอบ .fbx ภายใน unity-project/Assets/Sintel
โครงการทั้งหมดของฉันมีชื่อที่เป็นประโยชน์ ครั้งนี้ฉันต้องการบางสิ่งที่แตกต่างออกไปมากกว่านี้ ไอริสเป็นดอกไม้สีม่วงน้ำเงิน ไอริสเป็นส่วนหนึ่งของดวงตา ดูเหมือนเหมาะสมไหม? โดยเฉพาะอย่างยิ่งเนื่องจากดวงตาและเส้นผมเป็น ปัญหา ในตัวละคร CG