प्लगिन का उपयोग कैसे करें
यह गाइड आपको अपने MetaHuman कैरेक्टर्स के लिए Runtime MetaHuman Lip Sync को सेट करने की प्रक्रिया के माध्यम से ले जाती है।
नोट: Runtime MetaHuman Lip Sync MetaHuman और कस्टम कैरेक्टर्स दोनों के साथ काम करता है। प्लगिन विभिन्न प्रकार के कैरेक्टर्स का समर्थन करता है, जिनमें शामिल हैं:
- लोकप्रिय व्यावसायिक कैरेक्टर्स (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe, आदि)
- FACS-आधारित ब्लेंडशेप्स वाले कैरेक्टर्स
- ARKit ब्लेंडशेप मानकों का उपयोग करने वाले मॉडल
- Preston Blair फोनीम सेट वाले कैरेक्टर्स
- 3ds Max फोनीम सिस्टम
- चेहरे के भावों के लिए कस्टम मॉर्फ टारगेट वाले कोई भी कैरेक्टर
सभी उपरोक्त मानकों के लिए विसीम मैपिंग संदर्भों सहित कस्टम कैरेक्टर्स को सेट करने के विस्तृत निर्देशों के लिए, कस्टम कैरेक्टर सेटअप गाइड देखें।
पूर्वापेक्षाएँ
शुरू करने से पहले, सुनिश्चित करें:
- आपके प्रोजेक्ट में MetaHuman प्लगिन सक्षम है (नोट: UE 5.6 से शुरू होकर, यह चरण अब आवश्यक नहीं है क्योंकि MetaHuman कार्यक्षमता सीधे इंजन में एकीकृत है)
- आपके पास कम से कम एक MetaHuman कैरेक्टर डाउनलोड किया गया है और आपके प्रोजेक्ट में उपलब्ध है
- Runtime MetaHuman Lip Sync प्लगिन इंस्टॉल किया गया है
अतिरिक्त प्लगिन:
- यदि आप ऑडियो कैप्चर (जैसे, माइक्रोफोन इनपुट) का उपयोग करने की योजना बना रहे हैं, तो Runtime Audio Importer प्लगिन इंस्टॉल करें।
- यदि आप टेक्स्ट-टू-स्पीच कार्यक्षमता का उपयोग करने की योजना बना रहे हैं, तो Runtime Text To Speech प्लगिन इंस्टॉल करें।
प्लेटफॉर्म-विशिष्ट कॉन्फिगरेशन
Android / Meta Quest कॉन्फिगरेशन
यदि आप Android या Meta Quest प्लेटफॉर्म को लक्षित कर रहे हैं और इस प्लगिन के साथ बिल्ड त्रुटियों का सामना कर रहे हैं, तो आपको अपने प्रोजेक्ट सेटिंग्स में x86_64 (x64) Android आर्किटेक्चर को अक्षम करने की आवश्यकता होगी:
- Edit > Project Settings पर जाएं
- Platforms > Android पर नेविगेट करें
- Platforms - Android, Build सेक्शन के अंतर्गत, Support x86_64 [aka x64] ढूंढें और सुनिश्चित करें कि यह अक्षम है, जैसा कि नीचे दिखाया गया है
ऐसा इसलिए है क्योंकि प्लगिन वर्तमान में केवल Android / Meta Quest प्लेटफॉर्म के लिए arm64-v8a और armeabi-v7a आर्किटेक्चर का समर्थन करता है।
सेटअप प्रक्रिया
चरण 1: फेस एनिमेशन ब्लूप्रिंट का पता लगाएं और संशोधित करें
- UE 5.5 और पहले (या UE 5.6+ में लेगेसी MetaHumans)
- UE 5.6+ MetaHuman क्रिएटर कैरेक्टर्स
आपको अपने MetaHuman कैरेक्टर के चेहरे के एनिमेशन के लिए उपयोग किए जाने वाले एनिमेशन ब्लूप्रिंट को संशोधित करने की आवश्यकता है। डिफ़ॉल्ट MetaHuman फेस एनिमेशन ब्लूप्रिंट यहां स्थित है:
Content/MetaHumans/Common/Face/Face_AnimBP
लिप सिंक कार्यक्षमता को लागू करने के लिए आपके पास कई विकल्प हैं:
- डिफ़ॉल्ट एसेट संपादित करें (सबसे सरल विकल्प)
- डुप्लिकेट बनाएं
- कस्टम एनिमेशन ब्लूप्रिंट का उपयोग करें
डिफ़ॉल्ट Face_AnimBP
को सीधे खोलें और अपने संशोधन करें। कोई भी परिवर्तन सभी MetaHuman कैरेक्टर्स को प्रभावित करेगा जो इस एनिमेशन ब्लूप्रिंट का उपयोग करते हैं।
नोट: यह दृष्टिकोण सुविधाजनक है लेकिन डिफ़ॉल्ट एनिमेशन ब्लूप्रिंट का उपयोग करने वाले सभी कैरेक्टर्स को प्रभावित करेगा।
Face_AnimBP
को डुप्लिकेट करें और इसे एक वर्णनात्मक नाम दें- अपने कैरेक्टर के ब्लूप्रिंट क्लास का पता लगाएं (उदाहरण के लिए, "Bryan" कैरेक्टर के लिए, यह
Content/MetaHumans/Bryan/BP_Bryan
पर होगा) - कैरेक्टर ब्लूप्रिंट खोलें और फेस कंपोनेंट ढूंढें
- Anim Class प्रॉपर्टी को अपने नए डुप्लिकेट एनिमेशन ब्लूप्रिंट में बदलें
नोट: यह दृष्टिकोण आपको विशिष्ट कैरेक्टर्स के लिए लिप सिंक को कस्टमाइज़ करने की अनुमति देता है जबकि अन्य अपरिवर्तित रहते हैं।
आप किसी भी एनिमेशन ब्लूप्रिंट में लिप सिंक ब्लेंडिंग को लागू कर सकते हैं जिसमें आवश्यक चेहरे की हड्डियों तक पहुंच है:
- एक नया कस्टम एनिमेशन ब्लूप्रिंट बनाएं या मौजूदा का उपयोग करें
- सुनिश्चित करें कि आपका एनिमेशन ब्लूप्रिंट एक स्केलेटन के साथ काम करता है जिसमें डिफ़ॉल्ट MetaHuman के
Face_Archetype_Skeleton
(जो किसी भी MetaHuman कैरेक्टर के लिए उपयोग किया जाने वाला मानक स्केलेटन है) के समान चेहरे की हड्डियां हैं
नोट: यह दृष्टिकोण आपको कस्टम एनिमेशन सिस्टम के साथ एकीकरण के लिए अधिकतम लचीलापन देता है।
UE 5.6 से शुरू होकर, नई MetaHuman क्रिएटर प्रणाली पेश की गई थी, जो पारंपरिक Face_AnimBP
एसेट के बिना कैरेक्टर बनाती है। इन कैरेक्टर्स के लिए, प्लगिन एक फेस एनिमेशन ब्लूप्रिंट प्रदान करता है जो यहां स्थित है:
Content/LipSyncData/LipSync_Face_AnimBP
प्लगिन के फेस एनिमेशन ब्लूप्रिंट का उपयोग करना:
- अपने MetaHuman क्रिएटर कैरेक्टर के ब्लूप्रिंट क्लास का पता लगाएं
- कैरेक्टर ब्लूप्रिंट खोलें और फेस कंपोनेंट ढूंढें
- Anim Class प्रॉपर्टी को प्लगिन के
LipSync_Face_AnimBP
में बदलें - Runtime MetaHuman Lip Sync कार्यक्षमता को कॉन्फ़िगर करने के लिए चरण 2-4 के साथ जारी रखें
वैकल्पिक विकल्प:
- लेगेसी निर्देशों का उपयोग करें: यदि आप लेगेसी MetaHumans के साथ काम कर रहे हैं या पारंपरिक वर्कफ़्लो पसंद करते हैं तो आप अभी भी UE 5.5 निर्देशों का पालन कर सकते हैं
- कस्टम एनिमेशन ब्लूप्रिंट बनाएं: अपना स्वयं का एनिमेशन ब्लूप्रिंट बनाएं जो MetaHuman क्रिएटर स्केलेटन स्ट्रक्चर के साथ काम करता है
नोट: यदि आप UE 5.6+ का उपयोग कर रहे हैं लेकिन लेगेसी MetaHumans (MetaHuman क्रिएटर के माध्यम से नहीं बनाए गए) के साथ काम कर रहे हैं, तो इसके बजाय "UE 5.5 और पहले" टैब निर्देशों का उपयोग करें।
महत्वपूर्ण: Runtime MetaHuman Lip Sync ब्लेंडिंग को किसी भी एनिमेशन ब्लूप्रिंट एसेट में लागू किया जा सकता है जिसमें डिफ़ॉल्ट MetaHuman के Face_Archetype_Skeleton
में मौजूद चेहरे की हड्डियों वाले पोज़ तक पहुंच है। आप ऊपर दिए गए विकल्पों तक सीमित नहीं हैं - ये केवल सामान्य कार्यान्वयन दृष्टिकोण हैं।
चरण 2: इवेंट ग्राफ सेटअप
अपना फेस एनिमेशन ब्लूप्रिंट खोलें और Event Graph
पर स्विच करें। आपको एक जनरेटर बनाने की आवश्यकता होगी जो ऑडियो डेटा को प्रोसेस करेगा और लिप सिंक एनिमेशन उत्पन्न करेगा।
- स्टैंडर्ड (तेज़) मॉडल
- रियलिस्टिक (उच्च गुणवत्ता) मॉडल
- यदि पहले से मौजूद नहीं है तो
Event Blueprint Begin Play
नोड जोड़ें Create Runtime Viseme Generator
नोड जोड़ें और इसे Begin Play इवेंट से कनेक्ट करें- ग्राफ के अन्य भागों में उपयोग के लिए आउटपुट को एक वेरिएबल (जैसे "VisemeGenerator") के रूप में सहेजें
- यदि पहले से मौजूद नहीं है तो
Event Blueprint Begin Play
नोड जोड़ें Create Realistic MetaHuman Lip Sync Generator
नोड जोड़ें और इसे Begin Play इवेंट से कनेक्ट करें- ग्राफ के अन्य भागों में उपयोग के लिए आउटपुट को एक वेरिएबल (जैसे "RealisticLipSyncGenerator") के रूप में सहेजें
नोट: रियलिस्टिक मॉडल विशेष रूप से MetaHuman कैरेक्टर्स के लिए अनुकूलित है और कस्टम कैरेक्टर प्रकारों के साथ संगत नहीं है।
रियलिस्टिक मॉडल के साथ विश्वसनीय और सुसंगत संचालन के लिए, निष्क्रियता की अवधि के बाद हर बार जब आप नए ऑडियो डेटा को फीड करना चाहते हैं, रियलिस्टिक MetaHuman Lip Sync जनरेटर को पुनः बनाना आवश्यक है। यह ONNX रनटाइम व्यवहार के कारण है जो मौन की अवधि के बाद जनरेटर का पुन: उपयोग करने पर लिप सिंक को काम करना बंद कर सकता है।
उदाहरण परिदृश्य: यदि आपने TTS लिप सिंक किया और फिर रोक दिया, और बाद में नए ऑडियो के साथ फिर से लिप सिंक करना चाहते हैं, तो मौजूदा वाले का पुन: उपयोग करने के बजाय एक नया रियलिस्टिक MetaHuman Lip Sync जनरेटर बनाएं।
चरण 3: ऑडियो इनपुट प्रोसेसिंग सेट करें
आपको ऑडियो इनपुट को प्रोसेस करने के लिए एक विधि सेट करने की आवश्यकता है। आपके ऑडियो स्रोत के आधार पर ऐसा करने के कई तरीके हैं।
- माइक्रोफोन (रियल-टाइम)
- माइक्रोफोन (प्लेबैक)
- टेक्स्ट-टू-स्पीच (लोकल)
- टेक्स्ट-टू-स्पीच (बाहरी एपीआई)
- ऑडियो फाइल/बफर से
- कस्टम ऑडियो स्रोत
यह दृष्टिकोण माइक्रोफोन में बोलते समय रियल-टाइम में लिप सिंक करता है:
- स्टैंडर्ड (तेज़) मॉडल
- रियलिस्टिक (उच्च गुणवत्ता) मॉडल
- Runtime Audio Importer का उपयोग करके Capturable Sound Wave बनाएं
- ऑडियो कैप्चर करना शुरू करने से पहले,
OnPopulateAudioData
डेलीगेट से बाइंड करें - बाइंड किए गए फंक्शन में, अपने Runtime Viseme Generator से
ProcessAudioData
कॉल करें - माइक्रोफोन से ऑडियो कैप्चर करना शुरू करें
रियलिस्टिक मॉडल स्टैंडर्ड मॉडल के समान ऑडियो प्रोसेसिंग वर्कफ़्लो का उपयोग करता है, लेकिन VisemeGenerator
के बजाय RealisticLipSyncGenerator
वेरिएबल के साथ।
स्टैंडर्ड मॉडल के लिए दिखाए गए प्रत्येक उदाहरण में, बस बदलें:
VisemeGenerator
को अपनेRealisticLipSyncGenerator
वेरिएबल से- फंक्शन नाम और पैरामीटर्स दोनों मॉडल के बीच समान रहते हैं
यह दृष्टिकोण माइक्रोफोन से ऑडियो कैप्चर करता है, फिर इसे लिप सिंक के साथ प्लेबैक करता है:
- स्टैंडर्ड (तेज़) मॉडल
- रियलिस्टिक (उच्च गुणवत्ता) मॉडल
- Runtime Audio Importer का उपयोग करके Capturable Sound Wave बनाएं
- माइक्रोफोन से ऑडियो कैप्चर शुरू करें
- कैप्चरेबल साउंड वेव को प्लेबैक करने से पहले, उसके
OnGeneratePCMData
डेलीगेट से बाइंड करें - बाइंड किए गए फंक्शन में, अपने Runtime Viseme Generator से
ProcessAudioData
कॉल करें
रियलिस्टिक मॉडल स्टैंडर्ड मॉडल के समान ऑडियो प्रोसेसिंग वर्कफ़्लो का उपयोग करता है, लेकिन VisemeGenerator
के बजाय RealisticLipSyncGenerator
वेरिएबल के साथ।
स्टैंडर्ड मॉडल के लिए दिखाए गए प्रत्येक उदाहरण में, बस बदलें:
VisemeGenerator
को अपनेRealisticLipSyncGenerator
वेरिएबल से- फंक्शन नाम और पैरामीटर्स दोनों मॉडल के बीच समान रहते हैं
नोट: यदि आप अधिक प्रतिक्रियाशील लिप सिंक के लिए छोटे चंक्स में ऑडियो डेटा को प्रोसेस करना चाहते हैं, तो SetNumSamplesPerChunk
फंक्शन में गणना को समायोजित करें। उदाहरण के लिए, सैंपल रेट को 100 (हर 10 ms में स्ट्रीमिंग) के बजाय 150 (हर ~6.67 ms में स्ट्रीमिंग) से विभाजित करने से अधिक फ्रीक्वेंट लिप सिंक अपडेट प्रदान होंगे।
- रेगुलर
- स्ट्रीमिंग
यह दृष्टिकोण टेक्स्ट से स्पीच को सिंथेसाइज़ करता है और लिप सिंक करता है:
- स्टैंडर्ड (तेज़) मॉडल
- रियलिस्टिक (उच्च गुणवत्ता) मॉडल
- टेक्स्ट से स्पीच जनरेट करने के लिए Runtime Text To Speech का उपयोग करें
- सिंथेसाइज़ किए गए ऑडियो को इम्पोर्ट करने के लिए Runtime Audio Importer का उपयोग करें
- इम्पोर्ट किए गए साउंड वेव को प्लेबैक करने से पहले, उसके
OnGeneratePCMData
डेलीगेट से बाइंड करें - बाइंड किए गए फंक्शन में, अपने Runtime Viseme Generator से
ProcessAudioData
कॉल करें
Runtime Text To Speech प्लगिन द्वारा प्रदान किया गया लोकल TTS वर्तमान में ONNX रनटाइम कॉन्फ्लिक्ट्स के कारण रियलिस्टिक मॉडल के साथ समर्थित नहीं है। रियलिस्टिक मॉडल के साथ टेक्स्ट-टू-स्पीच के लिए, बाहरी TTS सेवाओं (जैसे OpenAI या ElevenLabs) का उपयोग करें जो Runtime AI Chatbot Integrator के माध्यम से उपलब्ध हैं या स्टैंडर्ड मॉडल का उपयोग करें।
नोट: यदि आप अधिक प्रतिक्रियाशील लिप सिंक के लिए छोटे चंक्स में ऑडियो डेटा को प्रोसेस करना चाहते हैं, तो SetNumSamplesPerChunk
फंक्शन में गणना को समायोजित करें। उदाहरण के लिए, सैंपल रेट को 100 (हर 10 ms में स्ट्रीमिंग) के बजाय 150 (हर ~6.67 ms में स्ट्रीमिंग) से विभाजित करने से अधिक फ्रीक्वेंट लिप सिंक अपडेट प्रदान होंगे।
यह दृष्टिकोण रियल-टाइम लिप सिंक के साथ स्ट्रीमिंग टेक्स्ट-टू-स्पीच सिंथेसिस का उपयोग करता है:
- स्टैंडर्ड (तेज़) मॉडल
- रियलिस्टिक (उच्च गुणवत्ता) मॉडल
- टेक्स्ट से स्ट्रीमिंग स्पीच जनरेट करने के लिए Runtime Text To Speech का उपयोग करें
- सिंथेसाइज़ किए गए ऑडियो को इम्पोर्ट करने के लिए Runtime Audio Importer का उपयोग करें
- स्ट्रीमिंग साउंड वेव को प्लेबैक करने से पहले, उसके
OnGeneratePCMData
डेलीगेट से बाइंड करें - बाइंड किए गए फंक्शन में, अपने Runtime Viseme Generator से
ProcessAudioData
कॉल करें
Runtime Text To Speech प्लगिन द्वारा प्रदान किया गया लोकल TTS वर्तमान में ONNX रनटाइम कॉन्फ्लिक्ट्स के कारण रियलिस्टिक मॉडल के साथ समर्थित नहीं है। रियलिस्टिक मॉडल के साथ टेक्स्ट-टू-स्पीच के लिए, बाहरी TTS सेवाओं (जैसे OpenAI या ElevenLabs) का उपयोग करें जो Runtime AI Chatbot Integrator के माध्यम से उपलब्ध हैं या स्टैंडर्ड मॉडल का उपयोग करें।
नोट: यदि आप अधिक प्रतिक्रियाशील लिप सिंक के लिए छोटे चंक्स में ऑडियो डेटा को प्रोसेस करना चाहते हैं, तो SetNumSamplesPerChunk
फंक्शन में गणना को समायोजित करें। उदाहरण के लिए, सैंपल रेट को 100 (हर 10 ms में स्ट्रीमिंग) के बजाय 150 (हर ~6.67 ms में स्ट्रीमिंग) से विभाजित करने से अधिक फ्रीक्वेंट लिप सिंक अपडेट प्रदान होंगे।
- रेगुलर
- स्ट्रीमिंग
यह दृष्टिकोण AI सेवाओं (OpenAI या ElevenLabs) से सिंथेसाइज्ड स्पीच जनरेट करने और लिप सिंक करने के लिए Runtime AI Chatbot Integrator प्लगिन का उपयोग करता है:
- स्टैंडर्ड (तेज़) मॉडल
- रियलिस्टिक (उच्च गुणवत्ता) मॉडल
- बाहरी एपीआई (OpenAI, ElevenLabs, आदि) का उपयोग करके टेक्स्ट से स्पीच जनरेट करने के लिए Runtime AI Chatbot Integrator का उपयोग करें
- सिंथेसाइज़ किए गए ऑडियो डेटा को इम्पोर्ट करने के लिए Runtime Audio Importer का उपयोग करें
- इम्पोर्ट किए गए साउंड वेव को प्लेबैक करने से पहले, उसके
OnGeneratePCMData
डेलीगेट से बाइंड करें - बाइंड किए गए फंक्शन में, अपने Runtime Viseme Generator से
ProcessAudioData
कॉल करें
रियलिस्टिक मॉडल स्टैंडर्ड मॉडल के समान ऑडियो प्रोसेसिंग वर्कफ़्लो का उपयोग करता है, लेकिन VisemeGenerator
के बजाय RealisticLipSyncGenerator
वेरिएबल के साथ।
स्टैंडर्ड मॉडल के लिए दिखाए गए प्रत्येक उदाहरण में, बस बदलें:
VisemeGenerator
को अपनेRealisticLipSyncGenerator
वेरिएबल से- फंक्शन नाम और पैरामीटर्स दोनों मॉडल के बीच समान रहते हैं
नोट: यदि आप अधिक प्रतिक्रियाशील लिप सिंक के लिए छोटे चंक्स में ऑडियो डेटा को प्रोसेस करना चाहते हैं, तो SetNumSamplesPerChunk
फंक्शन में गणना को समायोजित करें। उदाहरण के लिए, सैंपल रेट को 100 (हर 10 ms में स्ट्रीमिंग) के बजाय 150 (हर ~6.67 ms में स्ट्रीमिंग) से विभाजित करने से अधिक फ्रीक्वेंट लिप सिंक अपडेट प्रदान होंगे।
यह दृष्टिकोण AI सेवाओं (OpenAI या ElevenLabs) से सिंथेसाइज्ड स्ट्रीमिंग स्पीच जनरेट करने और लिप सिंक करने के लिए Runtime AI Chatbot Integrator प्लगिन का उपयोग करता है:
- स्टैंडर्ड (तेज़) मॉडल
- रियलिस्टिक (उच्च गुणवत्ता) मॉडल
- स्ट्रीमिंग TTS एपीआई (जैसे ElevenLabs स्ट्रीमिंग एपीआई) से कनेक्ट करने के लिए Runtime AI Chatbot Integrator का उपयोग करें
- सिंथेसाइज़ किए गए ऑडियो डेटा को इम्पोर्ट करने के लिए Runtime Audio Importer का उपयोग करें
- स्ट्रीमिंग साउंड वेव को प्लेबैक करने से पहले, उसके
OnGeneratePCMData
डेलीगेट से बाइंड करें - बाइंड किए गए फंक्शन में, अपने Runtime Viseme Generator से
ProcessAudioData
कॉल करें
रियलिस्टिक मॉडल स्टैंडर्ड मॉडल के समान ऑडियो प्रोसेसिंग वर्कफ़्लो का उपयोग करता है, लेकिन VisemeGenerator
के बजाय RealisticLipSyncGenerator
वेरिएबल के साथ।
स्टैंडर्ड मॉडल के लिए दिखाए गए प्रत्येक उदाहरण में, बस बदलें:
VisemeGenerator
को अपनेRealisticLipSyncGenerator
वेरिएबल से- फंक्शन नाम और पैरामीटर्स दोनों मॉडल के बीच समान रहते हैं
नोट: यदि आप अधिक प्रतिक्रियाशील लिप सिंक के लिए छोटे चंक्स में ऑडियो डेटा को प्रोसेस करना चाहते हैं, तो SetNumSamplesPerChunk
फंक्शन में गणना को समायोजित करें। उदाहरण के लिए, सैंपल रेट को 100 (हर 10 ms में स्ट्रीमिंग) के बजाय 150 (हर ~6.67 ms में स्ट्रीमिंग) से विभाजित करने से अधिक फ्रीक्वेंट लिप सिंक अपडेट प्रदान होंगे।
यह दृष्टिकोण लिप सिंक के लिए पहले से रिकॉर्ड किए गए ऑडियो फाइलों या ऑडियो बफर का उपयोग करता है:
- स्टैंडर्ड (तेज़) मॉडल
- रियलिस्टिक (उच्च गुणवत्ता) मॉडल
- डिस्क या मेमोरी से ऑडियो फाइल इम्पोर्ट करने के लिए Runtime Audio Importer का उपयोग करें
- इम्पोर्ट किए गए साउंड वेव को प्लेबैक करने से पहले, उसके
OnGeneratePCMData
डेलीगेट से बाइंड करें - बाइंड किए गए फंक्शन में, अपने Runtime Viseme Generator से
ProcessAudioData
कॉल करें - इम्पोर्ट किए गए साउंड वेव को प्ले करें और लिप सिंक एनिमेशन का निरीक्षण करें
रियलिस्टिक मॉडल स्टैंडर्ड मॉडल के समान ऑडियो प्रोसेसिंग वर्कफ़्लो का उपयोग करता है, लेकिन VisemeGenerator
के बजाय RealisticLipSyncGenerator
वेरिएबल के साथ।
स्टैंडर्ड मॉडल के लिए दिखाए गए प्रत्येक उदाहरण में, बस बदलें:
VisemeGenerator
को अपनेRealisticLipSyncGenerator
वेरिएबल से- फंक्शन नाम और पैरामीटर्स दोनों मॉडल के बीच समान रहते हैं
नोट: यदि आप अधिक प्रतिक्रियाशील लिप सिंक के लिए छोटे चंक्स में ऑडियो डेटा को प्रोसेस करना चाहते हैं, तो SetNumSamplesPerChunk
फंक्शन में गणना को समायोजित करें। उदाहरण के लिए, सैंपल रेट को 100 (हर 10 ms में स्ट्रीमिंग) के बजाय 150 (हर ~6.67 ms में स्ट्रीमिंग) से विभाजित करने से अधिक फ्रीक्वेंट लिप सिंक अपडेट प्रदान होंगे।
कस्टम ऑडियो स्रोत के लिए, आपको निम्न की आवश्यकता है:
- स्टैंडर्ड (तेज़) मॉडल
- रियलिस्टिक (उच्च गुणवत्ता) मॉडल
- फ्लोट PCM फॉर्मेट में ऑडियो डेटा (फ्लोटिंग-पॉइंट सैंपल्स का एक एरे)
- सैंपल रेट और चैनलों की संख्या
- इन पैरामीटर्स के साथ अपने Runtime Viseme Generator से
ProcessAudioData
कॉल करें
यहां एक कस्टम स्रोत से ऑडियो स्ट्रीमिंग का एक उदाहरण है:
रियलिस्टिक मॉडल स्टैंडर्ड मॉडल के समान ऑडियो प्रोसेसिंग वर्कफ़्लो का उपयोग करता है, लेकिन VisemeGenerator
के बजाय RealisticLipSyncGenerator
वेरिएबल के साथ।
स्टैंडर्ड मॉडल के लिए दिखाए गए प्रत्येक उदाहरण में, बस बदलें:
VisemeGenerator
को अपनेRealisticLipSyncGenerator
वेरिएबल से- फंक्शन नाम और पैरामीटर्स दोनों मॉडल के बीच समान रहते हैं
नोट: यदि आप अधिक प्रतिक्रियाशील लिप सिंक के लिए छोटे चंक्स में ऑडियो डेटा को प्रोसेस करना चाहते हैं, तो SetNumSamplesPerChunk
फंक्शन में ग णना को समायोजित करें। उदाहरण के लिए, सैंपल रेट को 100 (हर 10 ms में स्ट्रीमिंग) के बजाय 150 (हर ~6.67 ms में स्ट्रीमिंग) से विभाजित करने से अधिक फ्रीक्वेंट लिप सिंक अपडेट प्रदान होंगे।
चरण 4: Anim ग्राफ सेटअप
इवेंट ग्राफ को सेट करने के बाद, जनरेटर को कैरेक्टर के एनिमेशन से कनेक्ट करने के लिए Anim Graph
पर स्विच करें:
लिप सिंक
- स्टैंडर्ड (तेज़) मॉडल
- रियलिस्टिक (उच्च गुणवत्ता) मॉडल
- उस पोज़ का पता लगाएं जिसमें MetaHuman फेस है (आमतौर पर
Use cached pose 'Body Pose'
से) Blend Runtime MetaHuman Lip Sync
नोड जोड़ें- पोज़ को
Blend Runtime MetaHuman Lip Sync
नोड केSource Pose
से कनेक्ट करें - अपने
RuntimeVisemeGenerator
वेरिएबल कोViseme Generator
पिन से कनेक्ट करें Blend Runtime MetaHuman Lip Sync
नोड के आउटपुट कोOutput Pose
केResult
पिन से कनेक्ट करें
जब ऑडियो में लिप सिंक का पता चलता है, तो आपका कैरेक्टर गतिशील रूप से एनिमेट होगा:
- उस पोज़ का पता लगाएं जिसमें MetaHuman फेस है (आमतौर पर
Use cached pose 'Body Pose'
से) Blend Realistic MetaHuman Lip Sync
नोड जोड़ें- पोज़ को
Blend Realistic MetaHuman Lip Sync
नोड केSource Pose
से कनेक्ट करें - अपने
RealisticLipSyncGenerator
वेरिएबल कोLip Sync Generator
पिन से कनेक्ट करें Blend Realistic MetaHuman Lip Sync
नोड के आउटपुट कोOutput Pose
केResult
पिन से कनेक्ट करें
रियलिस्टिक मॉडल अधिक प्राकृतिक मुंह की हरकतों के साथ बेहतर विजुअल क्वालिटी प्रदान करता है:
नोट: रियलिस्टिक मॉडल विशेष रूप से MetaHuman कैरेक्टर्स के लिए डिज़ाइन किया गया है और कस्टम कैरेक्टर प्रकारों के साथ संगत नहीं है।
हंसी एनिमेशन
आप हंसी एनिमेशन भी जोड़ सकते हैं जो ऑडियो में पाई गई हंसी के प्रति गतिशील रूप से प्रतिक्रिया करेंगी:
Blend Runtime MetaHuman Laughter
नोड जोड़ें- अपने
RuntimeVisemeGenerator
वेरिएबल कोViseme Generator
पिन से कनेक्ट करें - यदि आप पहले से ही ल िप सिंक का उपयोग कर रहे हैं:
Blend Runtime MetaHuman Lip Sync
नोड के आउटपुट कोBlend Runtime MetaHuman Laughter
नोड केSource Pose
से कनेक्ट करेंBlend Runtime MetaHuman Laughter
नोड के आउटपुट कोOutput Pose
केResult
पिन से कनेक्ट करें
- यदि लिप सिंक के बिना केवल हंसी का उपयोग कर रहे हैं:
- अपने सोर्स पोज़ को सीधे
Blend Runtime MetaHuman Laughter
नोड केSource Pose
से कनेक्ट करें - आउटपुट को
Result
पिन से कनेक्ट करें
- अपने सोर्स पोज़ को सीधे
जब ऑडियो में हंसी का पता चलता है, तो आपका कैरेक्टर गतिशील रूप से एनिमेट होगा:
बॉडी एनिमेशन के साथ जोड़ना
उन्हें ओवरराइड किए बिना मौजूदा बॉडी एनिमेशन के साथ लिप सिंक और हंसी लागू करने के लिए:
- अपने बॉडी एनिमेशन और अंतिम आउटपुट के बीच एक
Layered blend per bone
नोड जोड़ें। सुनिश्चित करें किUse Attached Parent
true है। - लेयर सेटअप कॉन्फ़िगर करें:
Layer Setup
एरे में 1 आइटम जोड़ें- लेयर के लिए
Branch Filters
में 3 आइटम जोड़ें, निम्नलिखितBone Name
के साथ:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- कनेक्शन बनाएं:
- मौजूदा एनिमेशन (जैसे
BodyPose
) →Base Pose
इनपुट - फेशियल एनिमेशन आउटपुट (लिप सिंक और/या हंसी नोड्स से) →
Blend Poses 0
इनपुट - लेयर्ड ब्लेंड नोड → अंतिम
Result
पोज़
- मौजूदा एनिमेशन (जैसे
यह क्यों काम करता है: ब्रांच फिल्टर फेशियल एनिमेशन बोन्स को अलग करते हैं, जिससे लिप सिंक और हंसी विशेष रूप से चेहरे की हरकतों के साथ ब्लेंड हो सकते हैं जबकि मूल बॉडी एनिमेशन को संरक्षित रखते हैं। यह MetaHuman फेशियल रिग स्ट्रक्चर से मेल खाता है, जिससे प्राकृतिक एकीकरण सुनिश्चित होता है।
मैं हिंदी अनुवाद जारी रखूंगा:
नोट: लिप सिंक और हंसी फीचर्स आपके मौजूदा एनिमेशन सेटअप के साथ गैर-विनाशकारी ढंग से काम करने के लिए डिज़ाइन किए गए हैं। वे केवल मुंह की हरकत के लिए आवश्यक विशिष्ट चेहरे की हड्डियों को प्रभावित करते हैं, जिससे अन्य चेहरे के एनिमेशन अक्षुण्ण रहते हैं। इसका मतलब है कि आप उन्हें अपनी एनिमेशन चेन में किसी भी बिंदु पर सुरक्षित रूप से एकीकृत कर सकते हैं - या तो अन्य चेहरे के एनिमेशन से पहले (जिससे उन एनिमेशन को लिप सिंक/हंसी को ओवरराइड करने की अनुमति मिलती है) या उनके बाद (जिससे लिप सिंक/हंसी आपके मौजूदा एनिमेशन के ऊपर ब्लेंड हो सकते हैं)। यह लचीलापन आपको लिप सिंक और हंसी को आंखों की झपकी, भौंहों की हरकतों, भावनात्मक अभिव्यक्तियों, और अन्य चेहरे के एनिमेशन के साथ बिना किसी कॉन्फ्लिक्ट के जोड़ने की अनुमति देता है।
कॉन्फिगरेशन
लिप सिंक कॉन्फिगरेशन
- स्टैंडर्ड (तेज़) मॉडल
- रियलिस्टिक (उच्च गुणवत्ता) मॉडल
Blend Runtime MetaHuman Lip Sync
नोड के प्रॉपर्टीज पैनल में कॉन्फिगरेशन विकल्प हैं:
प्रॉपर्टी | डिफ़ॉल्ट | विवरण |
---|---|---|
Interpolation Speed | 25 | नियंत्रित करता है कि होंठों की हरकतें विसीम के बीच कितनी जल्दी ट्रांज़िशन करती हैं। उच्च मान तेज़ और अधिक अचानक ट्रांज़िशन में परिणाम देते हैं। |
Reset Time | 0.2 | सेकंड में अव धि जिसके बाद लिप सिंक रीसेट हो जाता है। यह लिप सिंक को ऑडियो बंद होने के बाद जारी रहने से रोकने के लिए उपयोगी है। |
Blend Realistic MetaHuman Lip Sync
नोड के प्रॉपर्टीज पैनल में कॉन्फिगरेशन विकल्प हैं:
प्रॉपर्टी | डिफ़ॉल्ट | विवरण |
---|---|---|
Interpolation Speed | 30 | नियंत्रित करता है कि होंठों की हरकतें पोजीशन के बीच कितनी जल्दी ट्रांज़िशन करती हैं। उच्च मान तेज़ और अधिक अचानक ट्रांज़िशन में परिणाम देते हैं। |
Reset Time | 0.2 | सेकंड में अवधि जिसके बाद लिप सिंक रीसेट हो जाता है। यह लिप सिंक को ऑडियो बंद होने के बाद जारी रहने से रोकने के लिए उपयोगी है। |
हंसी कॉन्फिगरेशन
Blend Runtime MetaHuman Laughter
नोड के अपने कॉन्फिगरेशन विकल्प हैं:
प्रॉपर्टी | डिफ़ॉल्ट | विवरण |
---|---|---|
Interpolation Speed | 25 | नियंत्रित करता है कि होंठों की हरकतें हंसी एनिमेशन के बीच कितनी जल्दी ट्रांज़िशन करती हैं। उच्च मान तेज़ और अधिक अचानक ट्रांज़िशन में परिणाम देते हैं। |
Reset Time | 0.2 | सेकंड में अवधि जिसके बाद हंसी रीसेट हो जाती है। यह हंसी को ऑडियो बंद होने के बाद जारी रहने से रोकने के लिए उपयोगी है। |
Max Laughter Weight | 0.7 | हंसी एनिमेशन की अधिकतम तीव्रता को स्केल करता है (0.0 - 1.0)। |
लिप सिंक मॉडल का चयन करना
अपने प्रोजेक्ट के लिए कौन सा लिप सिंक मॉडल उपयोग करना है, इसका निर्णय करते समय इन कारकों पर विचार करें:
विचार | स्टैंडर्ड मॉडल | रियलि स्टिक मॉडल |
---|---|---|
कैरेक्टर संगतता | MetaHumans और सभी कस्टम कैरेक्टर प्रकार | केवल MetaHumans |
विजुअल क्वालिटी | कुशल प्रदर्शन के साथ अच्छा लिप सिंक | अधिक प्राकृतिक मुंह की हरकतों के साथ बेहतर यथार्थता |
प्रदर्शन | मोबाइल/VR सहित सभी प्लेटफॉर्म के लिए अनुकूलित | थोड़ी अधिक संसाधन आवश्यकताएँ |
उपयोग के मामले | सामान्य अनुप्रयोग, गेम्स, VR/AR, मोबाइल | सिनेमैटिक अनुभव, क्लोज-अप कैरेक्टर इंटरैक्शन |
इंजन वर्जन संगतता
यदि आप अनरियल इंजन 5.2 का उपयोग कर रहे हैं, तो UE के रीसैम्पलिंग लाइब्रेरी में एक बग के कारण रियलिस्टिक मॉडल सही ढंग से काम नहीं कर सकता है। UE 5.2 उपयोगकर्ताओं के लिए जिन्हें विश्वसनीय लिप सिंक कार्यक्षमता की आवश्यकता है, कृपया इसके बजाय स्टैंडर्ड मॉडल का उपयोग करें।
यह समस्या विशेष रूप से UE 5.2 के लिए है और अन्य इंजन वर्जन को प्रभावित नहीं करती है।
अधिकांश प्रोजेक्ट्स के लिए, स्टैंडर्ड मॉडल गुणवत्ता और प्रदर्शन का उत्कृष्ट संतुलन प्रदान करता है और साथ ही कैरेक्टर प्रकारों की सबसे व्यापक रेंज का समर्थन करता है। रियलिस्टिक मॉडल आदर्श है जब आपको विशेष रूप से MetaHuman कैरेक्टर्स के लिए उच्चतम विजुअल फिडेलिटी की आवश्यकता होती है, ऐसे संदर्भों में जहां प्रदर्शन ओवरहेड कम महत्वपूर्ण है।