انتقل إلى المحتوى الرئيسي

إلغاء الصدى الصوتي

Streaming Sound Wave، بالإضافة إلى أنواعه المشتقة مثل Capturable Sound Wave، يدعم إلغاء الصدى الصوتي (AEC). يقوم AEC بإزالة الصدى من صوت الميكروفون الملتقط الناتج عن تشغيل إشارة مرجعية (على سبيل المثال، صوت يتم تشغيله عبر السماعات). النتيجة هي التقاط صوتي أنظف في سيناريوهات الاتصال الفوري.

يوفر الإضافة AEC من خلال تطبيق WebRTC AEC3، المتاحة كإضافة خفيفة تمديدية تقوم بتضمين الكود الخاص بـ AEC3 فقط. WebRTC AEC3 هو ملغي صدى صوتي عالي الجودة يستخدم على نطاق واسع في تطبيقات الاتصال الفوري. يقوم بنمذجة المسار الصوتي بين السماعات والميكروفون لطرح الصدى من الإشارة الملتقطة.

التثبيت

لاستخدام إلغاء الصدى الصوتي، تحتاج إلى تثبيت إضافة WebRTC AEC3 الإضافية:

  1. تأكد من أن إضافة Runtime Audio Importer مثبتة بالفعل في مشروعك
  2. قم بتنزيل إضافة WebRTC AEC3 الإضافية من هنا
  3. استخرج المجلد من الأرشيف الذي تم تنزيله إلى مجلد Plugins في مشروعك (قم بإنشاء هذا المجلد إذا لم يكن موجودًا)
  4. أعد بناء مشروعك (تتطلب هذه الإضافة مشروع C++)
important
  • WebRTC AEC3 يدعم جميع إصدارات المحرك التي يدعمها 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, و 5.8)
  • يتم توفير هذه الإضافة ككود مصدري وتتطلب مشروع C++ للاستخدام
  • WebRTC AEC3 متاح لـ Windows, Linux, Mac, Android (بما في ذلك Meta Quest), و iOS
  • لمزيد من المعلومات حول كيفية بناء الإضافات يدويًا، راجع دليل بناء الإضافات

الاستخدام الأساسي

يتضمن سير عمل AEC النموذجي ثلاث خطوات:

  1. تمكين AEC على موجة الصوت المتدفقة/القابلة للالتقاط
  2. تكوين حجم قطعة العرض على موجة الصوت المرجعية لتسليم إطارات بحجم 10 مللي ثانية
  3. ربط موجة الصوت المرجعية التي سيتم استخدام صوتها لإلغاء الصدى من إشارة الالتقاط

تمكين AEC

لتمكين AEC بعد إنشاء موجة صوت متدفقة، استخدم دالة ToggleAEC. يجب عليك تحديد معدل العينة وعدد القنوات لمعالج AEC. إذا كانت إشارة الالتقاط أو المرجع الواردة لا تتطابق مع هذه القيم، فسيتم إعادة تشكيلها تلقائيًا، ومع ذلك، فإن معدل العينة المكون لا يزال يؤثر على الجودة (على سبيل المثال، 48000 Hz سيعطي إلغاء صدى أفضل من 16000 Hz) والأداء، لذلك من المفيد اختيار هذه القيم بعناية بدلاً من الاعتماد على إعادة التشكيل.

عقدة Toggle AEC

يمكنك التحقق مما إذا كان AEC قيد التمكين حاليًا:

Is AEC Enabled node

تكوين حجم قطعة العرض

يتطلب WebRTC AEC3 معالجة الصوت في قطع بحجم 10 مللي ثانية. لضمان توصيل موجة الصوت للعرض بيانات الصوت بحجم الإطار الصحيح، استخدم دالة SetNumSamplesPerChunk على العرض Imported Sound Wave (موجة الصوت التي يتم تشغيلها عبر السماعات).

المعادلة لحساب العدد الصحيح للعينات لكل قطعة هي:

Samples per chunk=SampleRate100\text{Samples per chunk} = \frac{\text{SampleRate}}{100}

على سبيل المثال، لصوت بتردد 48000 هرتز: 48000 / 100 = 480 عينة في كل شريحة.

Set Num Samples Per Chunk node

ربط موجة الصوت المُشغَّلة

بعد تمكين AEC وضبط حجم القطعة، قم بربط موجة الصوت المُشغَّلة التي سيُستخدم صوتها لتحديد وإزالة الصدى من إشارة الالتقاط. وعادةً ما تكون هذه هي موجة الصوت التي يتم تشغيلها عبر مكبرات الصوت والتي قد يلتقطها الميكروفون:

Bind AEC To Sound Wave Playback node

لإلغاء ربط موجة الصوت المعروضة:

Unbind AEC From Sound Wave Playback node

التكوين الإضافي

تأخير البث

يمكنك تعيين تأخير البث المقدر (بالمللي ثانية) بين مساري عرض الصوت والتقاطه. وهذا يراعي زمن انتقال الأجهزة والنظام، على الرغم من أن WebRTC AEC3 يمكنه تقدير ذلك تلقائياً في كثير من الحالات:

عقدة Set AEC Stream Delay

إعادة تعيين AEC

يمكنك إعادة تعيين حالة معالج AEC الداخلي في أي وقت، مما يؤدي إلى مسح أي نموذج صدى متراكم:

عقدة إعادة تعيين AEC

تلميح

يدعم WebRTC AEC3 معدلات أخذ العينات 8000 و16000 و32000 و48000 هرتز. يتم إعادة تشكيل الصوت غير المتطابق تلقائياً، لكن ذلك يأتي مع عبء أداء. للحصول على أفضل جودة وأداء، استخدم 48000 هرتز وطابق تكوين الصوت الفعلي لكل من تدفقات الالتقاط والإخراج.