वॉइस एक्टिविटी डिटेक्शन
स्ट्रीमिंग साउंड वेव, साथ ही इसके व्युत्पन्न प्रकार जैसे कैप्चर करने योग्य साउंड वेव, वॉइस एक्टिविटी डिटेक्शन (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) रिपोर्ट करने की संभावना कम होती है लेकिन वे कुछ वाक् (speech) को छोड़ सकते हैं।
VAD प्रदाता (VAD Providers)
ToggleVAD फ़ंक्शन के साथ VAD सक्षम करने के बाद, आप अपनी आवश्यकताओं के अनुरूप विभिन्न वॉइस एक्टिविटी डिटेक्शन (Voice Activity Detection) प्रदाताओं के बीच चयन कर सकते हैं। डिफ़ॉल्ट प्रदाता अंतर्निहित (built-in) है, जबकि अतिरिक्त प्रदाता जैसे कि 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 एक्सटेंशन प्लगइन को Google Drive से डाउनलोड करें
-
डाउनलोड किए गए आर्काइव से फ़ोल्डर को अपनी परियोजना के
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.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 प्रदाताओं की तुलना
- Default VAD
- Silero VAD
डिफ़ॉल्ट VAD (libfvad)
लाभ:
- हल्का और कुशल
- सभी प्लेटफ़ॉर्म पर काम करता है
- न्यूनतम संसाधन उपयोग
- मोबाइल और कम शक्ति वाले उपकरणों के लिए उपयुक्त
सर्वोत्तम उपयोग:
- शांत वातावरण में सरल आवाज पहचान
- मोबाइल एप्लिकेशन
- ऐसे प्रोजेक्ट जहां प्रदर्शन प्राथमिकता है
- जब सार्वभौमिक प्लेटफ़ॉर्म समर्थन आवश्यक है
Silero VAD
लाभ:
- आवाज का पता लगाने में उच्च सटीकता
- चुनौतीपूर्ण वातावरण में शोर सहनशीलता में श्रेष्ठ
- विभिन्न वक्ताओं में अधिक सुसंगत परिणाम
- सटीक नियंत्रण के लिए उन्नत कॉन्फ़िगरेशन विकल्प
सर्वोत्तम उपयोग:
- सटीक आवाज पहचान की आवश्यकता वाले एप्लिकेशन
- पृष्ठभूमि शोर वाले वातावरण
- आवाज पहचान प्रणाली
- पेशेवर ऑडियो एप्लिकेशन
Silero VAD को डिफ़ॉल्ट VAD की तुलना में अधिक कम्प्यूटेशनल संसाधनों की आवश्यकता हो सकती है।