اكتشاف نشاط الصوت
يدعم Streaming Sound Wave، بالإضافة إلى أنواعه المشتقة مثل Capturable Sound Wave، اكتشاف نشاط الصوت (VAD). تقوم VAD بتصفية بيانات الصوت الواردة لملء المخزن المؤقت الداخلي فقط عند اكتشاف الصوت.
يقدم المكون الإضافي تطبيقين لـ VAD:
- Default 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 للصوت. القيم الأعلى تكون أكثر تقييدًا، مما يعني أنها أقل عرضة للإبلاغ عن الإيجابيات الخاطئة ولكنها قد تفوّت بعض الكلام.
مزوِّدو VAD
بعد تمكين 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 Extension
يوفر Silero VAD كشفًا أكثر دقة للكلام باستخدام الشبكات العصبية. لاستخدامه:
-
تأكد من تثبيت إضافة Runtime Audio Importer بالفعل في مشروعك
-
لـ UE 5.5 وما قبله: قبل تنزيل ملحق Silero VAD، تأكد من تعطيل NNERuntimeORT في مشروعك. قد يؤدي تمكين NNERuntimeORT إلى حدوث أعطال عند استخدام Silero VAD على إصدارات المحرك هذه بسبب تعارضات
-
قم بتنزيل ملحق Silero VAD من هنا
-
استخرج المجلد من الأرشيف الذي تم تنزيله إلى مجلد
Pluginsالخاص بمشروعك (أنشئ هذا المجلد إن لم يكن موجودًا) -
لـ UE 5.6 وما بعده: عدّل ملف
RuntimeAudioImporterSileroVAD.upluginلإضافة تبعية NNERuntimeORT. في حقل "Plugins"، بعد تضمين RuntimeAudioImporter، أضف:
,
{
"Name": "NNERuntimeORT",
"Enabled": true
}
- أعد بناء مشروعك (هذه الإضافة تتطلب مشروع C++)
-
يعمل كاشف النشاط الصوتي الافتراضي مع جميع إصدارات المحرك المدعومة من قبل 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, and 5.8)
-
يدعم 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, and 5.8)
-
UE 5.5 والإصدارات الأقدم: يجب تعطيل NNERuntimeORT قبل استخدام Silero VAD لمنع الأعطال بسبب تعارضات الإضافات. في 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++ لاستخدامها
-
لمزيد من المعلومات حول كيفية بناء الإضافات يدويًا، راجع دليل بناء الإضافات
بمجرد التثبيت، يمكنك تحديده كمزود كاشف النشاط الصوتي (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
Default VAD (libfvad)
المزايا:
- خفيف الوزن وفعال
- يعمل على جميع المنصات
- استخدام ضئيل للموارد
- مناسب للأجهزة المحمولة والأجهزة منخفضة الطاقة
الأنسب لـ:
- كشف الصوت البسيط في البيئات الهادئة
- تطبيقات الهاتف المحمول
- المشاريع حيث الأداء أولوية
- عند الحاجة لدعم جميع المنصات بشكل شامل
Silero VAD
المزايا:
- دقة أعلى في اكتشاف الصوت
- تحمل ممتاز للضوضاء في البيئات الصعبة
- نتائج أكثر اتساقًا عبر متحدثين مختلفين
- خيارات تكوين متقدمة للتحكم الدقيق
الأنسب لـ:
- التطبيقات التي تتطلب اكتشافًا دقيقًا للصوت
- البيئات التي تحتوي على ضوضاء خلفية
- أنظمة التعرف على الصوت
- تطبيقات الصوت الاحترافية
قد تتطلب Silero VAD موارد حسابية أكثر من default VAD.