Перейти к основному содержимому

acoustic-echo-cancellation

Акустическое эхоподавление

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 Гц даст лучшее эхоподавление, чем 16000 Гц) и производительность, поэтому стоит выбирать эти значения осознанно, а не полагаться на пересэмплирование.

Узел Toggle AEC

Вы можете проверить, включена ли в данный момент AEC:

Узел Is AEC Enabled

Настройка размера чанка рендера

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 узел

Привязка Render Sound Wave

После включения AEC и настройки размера чанка привяжите Render Sound Wave, аудиоданные которого будут использоваться для выявления и удаления эха из захватываемого сигнала. Обычно это звуковая волна, воспроизводимая через динамики, которую может улавливать микрофон:

Bind AEC To Sound Wave Playback node

Чтобы отвязать воспроизводимую Sound Wave:

Отвязать AEC от узла воспроизведения Sound Wave

Дополнительная настройка

Задержка потока

Вы можете задать предполагаемую задержку потока (в миллисекундах) между путями рендеринга и захвата аудио. Это учитывает задержку оборудования и системы, хотя WebRTC AEC3 может оценить это автоматически во многих случаях:

Set AEC Stream Delay node

Сброс AEC

Вы можете сбросить внутреннее состояние процессора AEC в любое время, очистив накопленную модель эха:

Узел сброса AEC

подсказка

WebRTC AEC3 поддерживает частоты дискретизации 8000, 16000, 32000 и 48000 Гц. Несовпадающее аудио автоматически передискретизируется, но это создаёт издержки производительности. Для наилучшего качества и производительности используйте 48000 Гц и согласуйте фактическую аудиоконфигурацию как захватывающего, так и воспроизводимого потоков.