वॉयस एक्टिविटी डिटेक्शन
स्ट्रीमिंग साउंड वेव, और इसके व्युत्पन्न प्रकार जैसे कैप्चर करने योग्य साउंड वेव, वॉयस एक्टिविटी डिटेक्शन (VAD) का समर्थन करते हैं। VAD आने वाले ऑडियो डेटा को फ़िल्टर करता है ताकि आंतरिक बफ़र को केवल तभी भरा जाए जब आवाज़ का पता चले।
प्लगइन दो VAD कार्यान्वयन प्रदान करता है:
- डिफ़ॉल्ट VAD
- Silero VAD
डिफ़ॉल्ट कार्यान्वयन libfvad का उपयोग करता है, जो एक हल्का वॉयस एक्टिविटी डिटेक्शन लाइब्रेरी है जो Runtime Audio Importer द्वारा समर्थित सभी प्लेटफ़ॉर्म और इंजन संस्करणों पर कुशलता से काम करता है।
एक एक्सटेंशन प्लगइन के रूप में उपलब्ध, Silero VAD एक न्यूरल नेटवर्क-आधारित वॉयस एक्टिविटी डिटेक्टर है जो उच्च सटीकता प्रदान करता है, विशेष रूप से शोर वाले वातावरण में। यह भाषण को पृष्ठभूमि के शोर से अधिक विश्वसनीय रूप से अलग करने के लिए मशीन लर्निंग का उपयोग करता है।
बेसिक उपयोग
एक साउंड वेव बनाने के बाद VAD सक्षम करने के लिए, ToggleVAD फ़ंक्शन का उपयोग करें:
- Blueprint
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
VAD को सक्षम करने के बाद, आप इसे किसी भी समय रीसेट कर सकते हैं:
- Blueprint
- C++

// Reset the VAD
StreamingSoundWave->ResetVAD();
डिफ़ॉल्ट VAD सेटिंग्स
डिफ़ॉल्ट VAD प्रदाता का उपयोग करते समय, आप VAD मोड बदलकर इसकी आक्रामकता समायोजित कर सकते हैं:
- Blueprint
- C++

// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
मोड पैरामीटर नियंत्रित करता है कि VAD ऑडियो को कितनी आक्रामकता से फ़िल्टर करता है। उच्च मान अधिक प्रतिबंधात्मक होते हैं, जिसका अर्थ है कि वे गलत सकारात्मक (false positives) रिपोर्ट करने की संभावना कम रखते हैं लेकिन कुछ भाषण को छोड़ भी सकते हैं।
VAD प्रदाता
ToggleVAD फ़ंक्शन के साथ VAD सक्षम करने के बाद, आप अपनी आवश्यकताओं के अनुरूप विभिन्न वॉइस एक्टिविटी डिटेक्शन प्रदाताओं के बीच चयन कर सकते हैं। डिफ़ॉल्ट प्रदाता अंतर्निहित है, जबकि Silero VAD जैसे अतिरिक्त प्रदाता एक्सटेंशन प्लगइन्स के माध्यम से उपलब्ध हैं।
- Blueprint
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Make sure to call ToggleVAD(true) before setting the provider
// Set the VAD provider to Silero VAD
StreamingSoundWave->SetVADProvider(URuntimeSileroVADProvider::StaticClass());
Silero VAD एक्सटेंशन
Silero VAD न्यूरल नेटवर्क का उपयोग करके अधिक सटीक वाक् पहचान प्रदान करता है। इसका उपयोग करने के लिए:
-
सुनिश्चित करें कि Runtime Audio Importer प्लगइन आपके प्रोजेक्ट में पहले से ही इंस्टॉल है
-
UE 5.5 और पहले के लिए: Silero VAD एक्सटेंशन प्लगइन डाउनलोड करने से पहले, सुनिश्चित करें कि NNERuntimeORT आपके प्रोजेक्ट में अक्षम है। NNERuntimeORT सक्षम होने से इन इंजन संस्करणों पर Silero VAD का उपयोग करते समय संघर्षों के कारण क्रैश हो सकता है
-
Silero VAD एक्सटेंशन प्लगइन यहाँ से डाउनलोड करें here
-
डाउनलोड किए गए आर्काइव से फ़ोल्डर को आपके प्रोजेक्ट के
Pluginsफ़ोल्डर में निकालें (यदि यह फ़ोल्डर मौजूद नहीं है तो इसे बनाएं) -
UE 5.6 और बाद के लिए: NNERuntimeORT निर्भरता जोड़ने के लिए
RuntimeAudioImporterSileroVAD.upluginफ़ाइल संपादित करें। "Plugins" फ़ील्ड में, RuntimeAudioImporter समावेशन के बाद, जोड़ें:
,
{
"Name": "NNERuntimeORT",
"Enabled": true
}
- अपने प्रोजेक्ट को रीबिल्ड करें (इस एक्सटेंशन के लिए एक C++ प्रोजेक्ट की आवश्यकता है)
-
डिफ़ॉल्ट VAD, रनटाइम ऑडियो इम्पोर्टर द्वारा समर्थित सभी इंजन संस्करणों (UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6 और 5.7) के साथ काम करता है
-
Silero VAD, Unreal Engine 4.27 और सभी UE5 संस्करणों (4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6 और 5.7) का समर्थन करता है
-
UE 5.5 और पहले: प्लगइन संघर्षों के कारण होने वाली क्रैश को रोकने के लिए Silero VAD का उपयोग करने से पहले NNERuntimeORT को अक्षम करना होगा। विशेष रूप से UE 5.3 में, NNERuntimeORTCpu और NNERuntimeORTGpu को भी अक्षम करना होगा
-
UE 5.6+ आवश्यकता: Unreal Engine 5.6 से शुरू होकर, Silero VAD एक्सटेंशन के लिए NNERuntimeORT प्लगइन निर्भरता को
.upluginफ़ाइल में मैन्युअल रूप से जोड़ने की आवश्यकता होती है -
Silero VAD Windows, Linux, Mac, Android (Meta Quest सहित), और iOS के लिए उपलब्ध है
-
यह एक्सटेंशन स्रोत कोड के रूप में प्रदान किया जाता है और उपयोग के लिए एक C++ प्रोजेक्ट की आवश्यकता होती है
-
प्लगइन्स को मैन्युअल रूप से बनाने के तरीके के बारे में अधिक जानकारी के लिए, Building Plugins tutorial देखें
एक बार इंस्टॉल हो जाने के बाद, आप Silero क्लास प्रोवाइडर के साथ SetVADProvider फ़ंक्शन का उपयोग करके इसे अपने VAD प्रोवाइडर के रूप में चुन सकते हैं।
स्पीच स्टार्ट और एंड डिटेक्शन
वॉयस एक्टिविटी डिटेक्शन न केवल स्पीच की उपस्थिति का पता लगाता है, बल्कि यह स्पीच गतिविधि की शुरुआत और समाप्ति का पता लगाने की भी अनुमति देता है। यह प्लेबैक या कैप्चर के दौरान स्पीच शुरू होने या समाप्त होने पर इवेंट्स को ट्रिगर करने के लिए उपयोगी है।
आप न्यूनतम स्पीच अवधि और साइलेंस अवधि जैसे पैरामीटर्स को समायोजित करके स्पीच स्टार्ट और एंड डिटेक्शन की संवेदनशीलता को अनुकूलित कर सकते हैं। ये पैरामीटर्स संक्षिप्त शोर या स्पीच के बीच बहुत छोटे विराम जैसे गलत पॉजिटिव से बचने के लिए डिटेक्शन को ठीक-ट्यून करने में मदद करते हैं।
न्यूनतम स्पीच अवधि
न्यूनतम स्पीच अवधि पैरामीटर स्पीच स्टार्ट इवेंट को ट्रिगर करने के लिए आवश्यक निरंतर वॉयस एक्टिविटी की न्यूनतम मात्रा निर्धारित करता है। यह उन संक्षिप्त शोरों को फ़िल्टर करने में मदद करता है जिन्हें स्पीच नहीं माना जाना चाहिए, यह सुनिश्चित करने के लिए कि केवल निरंतर वॉयस एक्टिविटी को पहचाना जाए। न्यूनतम स्पीच अवधि का डिफ़ॉल्ट मान 300 मिलीसेकंड है।
- Blueprint
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Set the minimum speech duration
StreamingSoundWave->SetMinimumSpeechDuration(200);
मौन अवधि
मौन अवधि पैरामीटर भाषण समाप्ति घटना को ट्रिगर करने के लिए आवश्यक मौन की अवधि निर्धारित करता है। यह शब्दों या वाक्यों के बीच प्राकृतिक विराम के दौरान भाषण पहचान के समय से पहले समाप्त होने से रोकता है। मौन अवधि का डिफ़ॉल्ट मान 500 मिलीसेकंड है।
- Blueprint
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Set the silence duration
StreamingSoundWave->SetSilenceDuration(700);
भाषण प्रतिनिधियों से बाइंड करना
आप भाषण शुरू होने या समाप्त होने पर विशिष्ट प्रतिनिधियों से बाइंड कर सकते हैं। यह भाषण गतिविधि के आधार पर कस्टम व्यवहार ट्रिगर करने के लिए उपयोगी है, जैसे कि पाठ पहचान शुरू करना या रोकना, या अन्य ऑडियो स्रोतों की वॉल्यूम समायोजित करना।
- Blueprint
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Bind to the OnSpeechStartedNative delegate
StreamingSoundWave->OnSpeechStartedNative.AddWeakLambda(this, [this]()
{
// Handle the result when speech starts
});
// Bind to the OnSpeechEndedNative delegate
StreamingSoundWave->OnSpeechEndedNative.AddWeakLambda(this, [this]()
{
// Handle the result when speech ends
});
VAD प्रदाताओं की तुलना
- डिफ़ॉल्ट VAD
- Silero VAD
डिफ़ॉल्ट VAD (libfvad)
लाभ:
- हल्का और कुशल
- सभी प्लेटफ़ॉर्म पर काम करता है
- न्यूनतम संसाधन उपयोग
- मोबाइल और कम शक्ति वाले उपकरणों के लिए उपयुक्त
सर्वोत्तम उपयोग:
- शांत वातावरण में सरल आवाज पहचान
- मोबाइल अनुप्रयोग
- ऐसे प्रोजेक्ट जहां प्रदर्शन प्राथमिकता है
- जब सार्वभौमिक प्लेटफ़ॉर्म समर्थन आवश्यक है
Silero VAD
लाभ:
- आवाज का पता लगाने में उच्च सटीकता
- चुनौतीपूर्ण वातावरण में शोर सहनशीलता बेहतर
- विभिन्न वक्ताओं में अधिक सुसंगत परिणाम
- सटीक नियंत्रण के लिए उन्नत कॉन्फ़िगरेशन विकल्प
सर्वोत्तम उपयोग:
- सटीक आवाज पहचान की आवश्यकता वाले अनुप्रयोग
- पृष्ठभूमि शोर वाले वातावरण
- आवाज पहचान प्रणालियाँ
- पेशेवर ऑडियो अनुप्रयोग
Silero VAD को डिफ़ॉल्ट VAD की तुलना में अधिक कम्प्यूटेशनल संसाधनों की आवश्यकता हो सकती है।