Przejdź do głównej zawartości

Anulowanie echa akustycznego

Streaming Sound Wave, wraz z jego typami pochodnymi, takimi jak Capturable Sound Wave, obsługuje Anulowanie echa akustycznego (AEC). AEC usuwa echo z przechwytywanego dźwięku mikrofonu spowodowane odtwarzaniem sygnału renderującego (np. dźwięku odtwarzanego przez głośniki). Wynikiem jest czystsze przechwytywanie głosu w scenariuszach komunikacji w czasie rzeczywistym.

Wtyczka udostępnia AEC poprzez implementację WebRTC AEC3, dostępną jako lekką wtyczkę rozszerzającą, która zawiera tylko odpowiedni kod AEC3. WebRTC AEC3 to wysokiej jakości tłumik echa akustycznego, szeroko stosowany w aplikacjach komunikacji w czasie rzeczywistym. Modeluje on ścieżkę akustyczną między głośnikami a mikrofonem, aby odjąć echo od przechwytywanego sygnału.

Instalacja

Aby używać Anulowania echa akustycznego, musisz zainstalować wtyczkę rozszerzającą WebRTC AEC3:

  1. Upewnij się, że wtyczka Runtime Audio Importer jest już zainstalowana w twoim projekcie
  2. Pobierz wtyczkę rozszerzającą WebRTC AEC3 z tego miejsca
  3. Wypakuj folder z pobranego archiwum do folderu Plugins w swoim projekcie (utwórz ten folder, jeśli nie istnieje)
  4. Przekompiluj swój projekt (to rozszerzenie wymaga projektu C++)
important
  • WebRTC AEC3 obsługuje wszystkie wersje silnika wspierane przez 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 i 5.8)
  • To rozszerzenie jest dostarczane jako kod źródłowy i wymaga projektu C++
  • WebRTC AEC3 jest dostępny dla systemów Windows, Linux, Mac, Android (w tym Meta Quest) oraz iOS
  • Więcej informacji na temat ręcznego budowania wtyczek można znaleźć w poradniku Building Plugins

Podstawowe użycie

Typowy przepływ pracy z AEC obejmuje trzy kroki:

  1. Włącz AEC na swoim streamingowym/przechwytywalnym Sound Wave
  2. Skonfiguruj rozmiar fragmentu renderowania na Sound Wave renderującym do dostarczania ramek 10 ms
  3. Powiąż Sound Wave renderujący, którego dźwięk zostanie użyty do anulowania echa z sygnału przechwyconego

Włączanie AEC

Aby włączyć AEC po utworzeniu streamingowego Sound Wave, użyj funkcji ToggleAEC. Musisz określić częstotliwość próbkowania i liczbę kanałów dla procesora AEC. Jeśli przychodzący dźwięk przechwycony lub renderowany nie pasuje do tych wartości, zostanie automatycznie przeskalowany, jednak skonfigurowana częstotliwość próbkowania nadal wpływa na jakość (np. 48000 Hz zapewni lepsze anulowanie echa niż 16000 Hz) i wydajność, więc warto wybrać te wartości świadomie, zamiast polegać na ponownym próbkowaniu.

Węzeł Toggle AEC

Możesz sprawdzić, czy AEC jest aktualnie włączone:

Węzeł Is AEC Enabled

Konfigurowanie rozmiaru fragmentu renderowania

WebRTC AEC3 wymaga, aby dźwięk był przetwarzany w fragmentach 10 ms. Aby upewnić się, że renderująca fala dźwiękowa dostarcza dane audio w odpowiednim rozmiarze klatki, użyj funkcji SetNumSamplesPerChunk na renderującej Imported Sound Wave (fali dźwiękowej odtwarzanej przez głośniki).

Wzór na obliczenie poprawnej liczby próbek na fragment to:

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

Na przykład, dla dźwięku o częstotliwości 48000 Hz: 48000 / 100 = 480 próbek na fragment.

Węzeł Set Num Samples Per Chunk

Wiązanie dźwięku Render Sound Wave

Po włączeniu AEC i skonfigurowaniu rozmiaru fragmentu, powiąż dźwięk Render Sound Wave, którego audio zostanie użyte do identyfikacji i usunięcia echa z sygnału przechwytywania. Zazwyczaj jest to dźwięk odtwarzany przez głośniki, który może być wychwytywany przez mikrofon:

Bind AEC To Sound Wave Playback node

Aby odwiązać renderowaną falę dźwiękową:

Odwiąż AEC z węzła odtwarzania Sound Wave

Dodatkowa konfiguracja

Opóźnienie strumienia

Można ustawić szacowane opóźnienie strumienia (w milisekundach) pomiędzy ścieżkami audio renderowania i przechwytywania. Uwzględnia to opóźnienia sprzętowe i systemowe, chociaż WebRTC AEC3 może je automatycznie oszacować w wielu przypadkach:

Set AEC Stream Delay node

wskazówka

WebRTC AEC3 obsługuje częstotliwości próbkowania 8000, 16000, 32000 i 48000 Hz. Niedopasowane audio jest automatycznie ponownie próbkowane, ale wiąże się to z narzutem wydajnościowym. Aby uzyskać najlepszą jakość i wydajność, używaj częstotliwości 48000 Hz i dopasuj rzeczywistą konfigurację audio zarówno dla strumieni przechwytywania, jak i renderowania.