كشف النشاط الصوتي
موجة الصوت المتدفقة، جنبًا إلى جنب مع أنواعها المشتقة مثل موجة الصوت القابلة للتسجيل، تدعم كشف النشاط الصوتي (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);
تتحكم معلمة الوضع في مدى عدوانية كاشف النشاط الصوتي في تصفية الصوت. القيم الأعلى أكثر تقييدًا، مما يعني أنها أقل احتمالية للإبلاغ عن إيجابيات كاذبة ولكن قد تفقد بعض الكلام.
مزودو كاشف النشاط الصوتي
بعد تمكين كاشف النشاط الصوتي باستخدام دالة ToggleVAD، يمكنك الاختيار بين مختلف مزودي كشف النشاط الصوتي لتناسب احتياجاتك. المزود الافتراضي مدمج، بينما تتوفر مزودين إضافيين مثل 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 والإصدارات اللاحقة: عدّل ملف
RuntimeAudioImporterSileroVAD.upluginلإضافة اعتماد NNERuntimeORT. في حقل "Plugins"، بعد تضمين RuntimeAudioImporter، أضف:
,
{
"Name": "NNERuntimeORT",
"Enabled": true
}
- أعد بناء مشروعك (هذا الامتداد يتطلب مشروع C++)
-
VAD الافتراضي يعمل مع جميع إصدارات المحرك المدعومة من Runtime Audio Importer (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 والإصدارات السابقة: يجب تعطيل NNERuntimeORT قبل استخدام Silero VAD لمنع تعطل النظام بسبب تضارب الامتدادات
-
مطلب UE 5.6+: بدءًا من Unreal Engine 5.6، يتطلب امتداد Silero VAD إضافة تبعية امتداد NNERuntimeORT يدويًا إلى ملف
.uplugin -
Silero VAD متاح لأنظمة Windows و Linux و Mac و Android (بما في ذلك Meta Quest) و iOS
-
يتم توفير هذا الامتداد كشفرة مصدرية ويتطلب مشروع C++ لاستخدامه
-
لمزيد من المعلومات حول كيفية بناء الامتدادات يدويًا، راجع درس بناء الامتدادات
بمجرد التثبيت، يمكنك تحديده كمزود VAD الخاص بك باستخدام الدالة SetVADProvider مع مزود فئة Silero.
كشف بدء وانتهاء الكلام
كشف نشاط الصوت لا يكتشف فقط وجود الكلام، بل يسمح أيضًا باكتشاف بدء ونهاية نشاط الكلام. هذا مفيد لتحريك الأحداث عندما يبدأ الكلام أو ينتهي أثناء التشغيل أو التسجيل.
يمكنك تخصيص حساسية كشف بدء وانتهاء الكلام عن طريق ضبط معاملات مثل مدة الكلام الدنيا ومدة الصمت. تساعد هذه المعاملات في ضبط الكشف بدقة لتجنب الإيجابيات الكاذبة، مثل التقاط الضوضاء القصيرة أو فترات التوقف القصيرة جدًا بين الكلام.
مدة الكلام الدنيا
معامل مدة الكلام الدنيا يحدد الحد الأدنى من نشاط الصوت المستمر المطلوب لتحريك حدث بدء الكلام. يساعد هذا في تصفية الضوضاء القصيرة التي لا ينبغي اعتبارها كلامًا، للتأكد من أن نشاط الصوت المستمر فقط هو الذي يتم التعرف عليه. القيمة الافتراضية لـ مدة الكلام الدنيا هي 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 الافتراضي.