كيفية استخدام المكون الإضافي
يأخذك هذا الدليل خلال عملية إعداد Runtime MetaHuman Lip Sync لشخصيات MetaHuman الخاصة بك.
ملاحظة: يعمل Runtime MetaHuman Lip Sync مع كل من شخصيات MetaHuman والشخصيات المخصصة. يدعم المكون الإضافي أنواعًا مختلفة من الشخصيات بما في ذلك:
- الشخصيات التجارية الشهيرة (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe, إلخ)
- الشخصيات ذات blendshapes القائمة على FACS
- النماذج التي تستخدم معايير ARKit لـ blendshape
- الشخصيات مع مجموعات Preston Blair للفونيمات
- أنظمة الفونيمات في 3ds Max
- أي شخصية تحتوي على أهداف تشكيل مخصصة للتعبيرات الوجهية
للحصول على تعليمات مفصلة حول إعداد الشخصيات المخصصة، بما في ذلك مراجع تعيين الفيزيمات لجميع المعايير المذكورة أعلاه، راجع دليل إعداد الشخصيات المخصصة.
المتطلبات الأساسية
قبل البدء، تأكد من:
- تم تمكين مكون MetaHuman الإضافي في مشروعك (ملاحظة: بدءًا من UE 5.6، لم تعد هذه الخطوة مطلوبة حيث تم دمج وظائف MetaHuman مباشرة في المحرك)
- لديك على الأقل شخصية MetaHuman واحدة تم تنزيلها ومتاحة في مشروعك
- تم تثبيت مكون Runtime MetaHuman Lip Sync الإضافي
مكون الإضافة لـ Standard Model
إذا كنت تخطط لاستخدام Standard Model (الأسرع)، فستحتاج إلى تثبيت مكون الإضافة:
- قم بتنزيل Standard Lip Sync Extension plugin من Google Drive
- استخرج المجلد من الأرشيف الذي تم تنزيله إلى مجلد
Plugins
في مشروعك (قم بإنشاء هذا المجلد إذا لم يكن موجودًا) - تأكد من أن مشروعك تم إعداده كمشروع C++ (حتى إذا لم يكن لديك أي كود C++)
- أعد بناء مشروعك
- هذا المكون الإضافي مطلوب فقط إذا كنت تريد استخدام Standard Model. إذا كنت تحتاج فقط إلى Realistic Model، يمكنك تخطي هذه الخطوة.
- لمزيد من المعلومات حول كيفية بناء المكونات الإضافية يدويًا، راجع برنامج تعليمي لبناء المكونات الإضافية
مكونات إضافية أخرى
- إذا كنت تخطط لاستخدام التقاط الصوت (مثل إدخال الميكروفون)، قم بتثبيت ملحق Runtime Audio Importer.
- إذا كنت تخطط لاستخدام وظيفة تحويل النص إلى كلام مع ملحقاتي (قد يكون لديك TTS مخصص خاص بك أو إدخال صوتي آخر)، فبالإضافة إلى ملحق Runtime Audio Importer، قم أيضًا بتثبيت:
- لـ TTS محلي، ملحق Runtime Text To Speech.
- لـ موفري TTS الخارجيين (ElevenLabs، OpenAI)، ملحق Runtime AI Chatbot Integrator.
التكوين الخاص بالمنصة
تكوين Android / Meta Quest
إذا كنت تستهدف منصات Android أو Meta Quest وواجهت أخطاء في البناء مع هذا الملحق، فستحتاج إلى تعطيل بنية Android x86_64 (x64) في إعدادات مشروعك:
- انتقل إلى Edit > Project Settings
- انتقل إلى Platforms > Android
- تحت Platforms - Android، قسم Build، ابحث عن Support x86_64 [aka x64] وتأكد من تعطيله، كما هو موضح أدناه
هذا لأن الملحق يدعم حاليًا فقط بنيات arm64-v8a وarmeabi-v7a لمنصات Android / Meta Quest.
عملية الإعداد
الخطوة 1: تحديد وتعديل Blueprint تحريك الوجه
- UE 5.5 والإصدارات الأقدم (أو MetaHumans القديمة في UE 5.6+)
- شخصيات MetaHuman Creator في UE 5.6+
تحتاج إلى تعديل Animation Blueprint الذي سيتم استخدامه لتحريك وجه شخصية MetaHuman الخاصة بك. يوجد Animation Blueprint الافتراضي لوجه MetaHuman في:
Content/MetaHumans/Common/Face/Face_AnimBP
لديك عدة خيارات لتنفيذ وظيفة مزامنة الشفاه (Lip Sync):
- تحرير الأصل مباشرة (أبسط خيار)
- إنشاء نسخة مكررة
- استخدام Animation Blueprint مخصص
افتح Face_AnimBP
الافتراضي مباشرة وقم بإجراء التعديلات الخاصة بك. أي تغييرات ستؤثر على جميع شخصيات MetaHuman التي تستخدم هذا الـ Animation Blueprint.
ملاحظة: هذا الأسلوب سهل ولكنه سيؤثر على جميع الشخصيات التي تستخدم الـ Animation Blueprint الافتراضي.
- انسخ
Face_AnimBP
وأعطه اسمًا وصفيًا - حدد موقع Blueprint class لشخصيتك (مثلاً، للشخصية "Bryan"، سيكون في
Content/MetaHumans/Bryan/BP_Bryan
) - افتح Blueprint الشخصية وابحث عن مكون الوجه (Face component)
- غير خاصية Anim Class إلى الـ Animation Blueprint الجديد الذي قمت بإنشائه
ملاحظة: هذا الأسلوب يسمح لك بتخصيص مزامنة الشفاه لشخصيات معينة مع ترك الآخرين دون تغيير.
يمكنك تنفيذ مزج مزامنة الشفاه في أي Animation Blueprint لديه إمكانية الوصول إلى عظام الوجه المطلوبة:
- أنشئ أو استخدم Animation Blueprint مخصصًا موجودًا
- تأكد من أن Animation Blueprint الخاص بك يعمل مع هيكل عظمي يحتوي على نفس عظام الوجه الموجودة في
Face_Archetype_Skeleton
الافتراضي لـ MetaHuman (وهو الهيكل العظمي القياسي المستخدم لأي شخصية MetaHuman)
ملاحظة: هذا الأسلوب يمنحك أقصى مرونة للتكامل مع أنظمة الرسوم المتحركة المخصصة.
بدءًا من UE 5.6، تم تقديم نظام MetaHuman Creator الجديد، الذي ينشئ شخصيات بدون أصل Face_AnimBP
التقليدي. بالنسبة لهذه الشخصيات، يوفر البرنامج المساعد Animation Blueprint للوجه موجودًا في:
Content/LipSyncData/LipSync_Face_AnimBP
:::تحذير مهم يوجد هذا Animation Blueprint في مجلد محتوى الملحق وسيتم استبداله مع كل تحديث للملحق. لمنع فقدان التخصيصات الخاصة بك، يوصى بشدة بـ:
- نسخ هذا الأصل إلى مجلد المحتوى الخاص بمشروعك (على سبيل المثال، إلى
YourProject/Content/MetaHumans/LipSync_Face_AnimBP
) - استخدام النسخة التي قمت بنسخها في إعداد شخصيتك
- إجراء جميع التعديلات على النسخة التي قمت بنسخها
هذا يضمن استمرار إعدادات مزامنة الشفاه الخاصة بك عبر تحديثات الملحق. :::
استخدام Face Animation Blueprint الخاص بالملحق:
- حدد فئة Blueprint الخاصة بشخصية MetaHuman Creator الخاصة بك
- افتح Blueprint الشخصية وابحث عن مكون Face
- قم بتغيير خاصية Anim Class إلى
LipSync_Face_AnimBP
الخاص بالملحق - تابع مع الخطوات 2-4 لتكوين وظيفة Runtime MetaHuman Lip Sync
خيارات بديلة:
- استخدام التعليمات القديمة: يمكنك اتباع تعليمات UE 5.5 أعلاه إذا كنت تعمل مع MetaHumans قديمة أو تفضل سير العمل التقليدي
- إنشاء Animation Blueprint مخصص: أنشئ Animation Blueprint الخاص بك الذي يعمل مع هيكل الهيكل العظمي لـ MetaHuman Creator
ملاحظة: إذا كنت تستخدم UE 5.6+ ولكنك تعمل مع MetaHumans قديمة (غير منشأة عبر MetaHuman Creator)، فاستخدم تعليمات علامة التبويب "UE 5.5 والإصدارات السابقة" بدلاً من ذلك.
مهم: يمكن تنفيذ مزج Runtime MetaHuman Lip Sync في أي أصل Animation Blueprint لديه إمكانية الوصول إلى وضع يحتوي على عظام الو جه الموجودة في Face_Archetype_Skeleton
الافتراضي لـ MetaHuman. أنت لست مقيدًا بالخيارات أعلاه - هذه مجرد طرق تنفيذ شائعة.
الخطوة 2: إعداد Event Graph
افتح Face Animation Blueprint الخاص بك وانتقل إلى Event Graph
. ستحتاج إلى إنشاء مولد لمعالجة بيانات الصوت وإنشاء رسوم متحركة لمزامنة الشفاه.
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- أضف عقدة
Event Blueprint Begin Play
إذا لم تكن موجودة بالفعل - أضف عقدة
Create Runtime Viseme Generator
وقم بتوصيلها بحدث Begin Play - احفظ المخرجات كمتغير (مثل "VisemeGenerator") للاستخدام في أجزاء أخرى من الرسم البياني
- أضف عقدة
Event Blueprint Begin Play
إذا لم تكن موجودة بالفعل - أضف عقدة
Create Realistic MetaHuman Lip Sync Generator
وقم بتوصيلها بحدث Begin Play - احفظ المخرجات كمتغير (مثل "RealisticLipSyncGenerator") للاستخدام في أجزاء أخرى من الرسم البياني
- (اختياري) قم بتكوين إعدادات المولد باستخدام معلمة Configuration
- (اختياري) حدد Processing Chunk Size على كائن Realistic MetaHuman Lip Sync Generator

ملاحظة: تم تحسين Realistic Model خصيصًا لشخصيات MetaHuman وهو غير متوافق مع أنواع الشخصيات المخصصة.
خيارات التكوين
يقبل عقدة Create Realistic MetaHuman Lip Sync Generator
معلمة Configuration اختيارية تتيح لك تخصيص سلوك المولد:
نوع النموذج
يحدد إعداد Model Type إصدار النموذج الواقعي الذي سيتم استخدامه:
نوع النموذج | الأداء | الجودة البصرية | التعامل مع الضوضاء | حالات الاستخدام الموصى بها |
---|---|---|---|---|
Highly Optimized (الافترا ضي) | أعلى أداء، أقل استخدام لوحدة المعالجة المركزية | جودة جيدة | قد تظهر حركات فم ملحوظة مع ضوضاء الخلفية أو الأصوات غير الصوتية | بيئات صوتية نظيفة، سيناريوهات حساسة للأداء |
Optimized | أداء جيد، استخدام معتدل لوحدة المعالجة المركزية | جودة عالية | استقرار أفضل مع الصوت المشوش | أداء وجودة متوازنة، ظروف صوتية مختلطة |
Original Unoptimized | مناسب للاستخدام في الوقت الفعلي على وحدات المعالجة المركزية الحديثة | أعلى جودة | أكثر استقرارًا مع ضوضاء الخلفية والأصوات غير الصوتية | إنتاجات عالية الجودة، بيئات صوتية صاخبة، عندما تكون الدقة القصوى مطلوبة |
إعدادات الأداء
Intra Op Threads: يتحكم في عدد الخيوط المستخدمة لعمليات معالجة النموذج الداخلية.
- 0 (افتراضي/تلقائي): يستخدم الكشف التلقائي (عادة 1/4 من نوى وحدة المعالجة المركزية المتاحة، بحد أقصى 4)
- 1-16: حدد عدد الخيوط يدويًا. قد تحسن القيم الأعلى الأداء على الأنظمة متعددة النوى ولكنها تستخدم المزيد من و حدة المعالجة المركزية
Inter Op Threads: يتحكم في عدد الخيوط المستخدمة للتنفيذ المتوازي لعمليات النموذج المختلفة.
- 0 (افتراضي/تلقائي): يستخدم الكشف التلقائي (عادة 1/8 من نوى وحدة المعالجة المركزية المتاحة، بحد أقصى 2)
- 1-8: حدد عدد الخيوط يدويًا. عادة ما تبقى منخفضة للمعالجة في الوقت الفعلي
استخدام التكوين
لتكوين المولد:
- في عقدة
Create Realistic MetaHuman Lip Sync Generator
، قم بتوسيع معلمة Configuration - اضبط Model Type على الخيار المفضل لديك:
- استخدم Highly Optimized للحصول على أفضل أداء (موصى به لمعظم المستخدمين)
- استخدم Optimized للحصول على أداء وجودة متوازنة
- استخدم Original Unoptimized فقط عندما تكون الجودة القصوى ضرورية
- اضبط Intra Op Threads و Inter Op Threads إذا لزم الأمر (اتركه عند 0 للكشف التلقائي في معظم الحالات) توصيات الأداء:
- بالنسبة لمعظم المشاريع التي تحتوي على صوت نظيف، استخدم Highly Optimized للحصول على أفضل أداء
- إذا كنت تعمل مع صوت يحتوي على ضوضاء في الخلفية، موسيقى، أو أصوات غير صوتية، فكر في استخدام Optimized أو Original Unoptimized للحصول على استقرار أفضل
- قد يُظهر نموذج Highly Optimized حركات فم خفيفة عند معالجة الصوت غير الصوتي بسبب تقنيات التحسين المطبقة أثناء إنشاء النموذج
- نموذج Original Unoptimized، رغم أنه يتطلب موارد وحدة معالجة مركزية أكثر، لا يزال مناسبًا للتطبيقات في الوقت الفعلي على الأجهزة الحديثة ويوفر نتائج أكثر دقة مع ظروف الصوت الصعبة
- اضبط عدد الخيوط فقط إذا كنت تواجه مشاكل في الأداء أو لديك متطلبات تحسين محددة
- الأعداد الأعلى من الخيوط لا تعني دائمًا أداءً أفضل - القيم المثلى تعتمد على أجهزتك المحددة ومتطلبات المشروع
تكوين حجم جزء المعالجة: يحدد Processing Chunk Size عدد العينات التي يتم معالجتها في كل خطوة استدلال. القيمة الافتراضية هي 160 عينة، والتي تتوافق مع 10 مللي ثانية من الصوت بمعدل 16 كيلو هرتز (معدل العينة الداخلي للمعالجة). يمكنك ضبط هذه القيمة لتحقيق التوازن بين تردد التحديث واستخدام وحدة المعالجة المركزية:
- القيم الأصغر توفر تحديثات أكثر تواترًا ولكنها تزيد من استخدام وحدة المعالجة المركزية
- القيم الأكبر تقلل من حمل وحدة المعالجة المركزية ولكنها قد تقلل من استجابة مزامنة الشفاه
لتعيين Processing Chunk Size:
- انتقل إلى كائن
Realistic MetaHuman Lip Sync Generator
الخاص بك - حدد موقع خاصية
Processing Chunk Size
- عيّن القيمة المطلوبة
يوصى باستخدام قيم تكون مضاعفات لـ 160. هذا يتوافق مع هيكل المعالجة الداخلي للنموذج. تشمل القيم الموصى بها:
160
(افتراضي، الحد الأدنى الموصى به)320
480
640
- إلخ.
يتوافق حجم جزء المعالجة الافتراضي البالغ 160
عينة مع 10 مللي ثانية من الصوت بمعدل 16 كيلو هرتز. استخدام مضاعفات 160 يحافظ على المحاذاة مع هذه الوحدة الأساسية، مما يمكن أن يساعد في تحسين كفاءة المعالجة والحفاظ على سلوك متسق عبر أحجام الأجزاء المختلفة.
لضمان تشغيل موثوق ومتسق مع Realistic Model، مطلوب إعادة إنشاء Realistic MetaHuman Lip Sync Generator في كل مرة تريد فيها تغذية بيانات صوتية جديدة بعد فترة من الخمول. هذا بسبب سلوك ONNX runtime الذي قد يتسبب في توقف مزامنة الشفاه عن العمل عند إعادة استخدام المولدات بعد فترات من الصمت.
مثال سيناريو: إذا قمت بتنفيذ مزامنة شفاه TTS ثم توقفت، ولاحقًا تريد تنفيذ مزامنة شفاه مرة أخرى بصوت جديد، قم بإنشاء Realistic MetaHuman Lip Sync Generator جديد بدلاً من إعادة استخدام الموجود.
الخطوة 3: إعداد معالجة إدخال الصوت
تحتاج إلى إعداد طريقة لمعالجة إدخال الصوت. هناك عدة طرق للقيام بذلك اعتمادًا على مصدر الصوت الخاص بك.
- ميكروفون (وقت حقيقي)
- ميكروفون (إعادة تشغيل)
- Text-to-Speech (Local)
- Text-to-Speech (External APIs)
- من ملف/مخزن مؤقت للصوت
- Streaming Audio Buffer
هذا الأسلوب يقوم بمزامنة الشفاه في الوقت الحقيقي أثناء التحدث في الميكروفون:
- النموذج القياسي (أسرع)
- النموذج الواقعي (جودة أعلى)
- قم بإنشاء موجة صوتية قابلة للالتقاط باستخدام Runtime Audio Importer
- قبل بدء التقاط الصوت، قم بربط مندوب
OnPopulateAudioData
- في الدالة المرتبطة، استدعِ
ProcessAudioData
من Runtime Viseme Generator الخاص بك - ابدأ في التقاط الصوت من الميكروفون