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

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

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 node

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

Is AEC Enabled node

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

WebRTC AEC3 требует обработки аудио фрагментами по 10 мс. Чтобы гарантировать, что рендерная звуковая волна передает аудиоданные в правильном размере кадра, используйте функцию SetNumSamplesPerChunk для рендерной импортированной звуковой волны (звуковой волны, воспроизводимой через динамики).

Формула для расчета правильного количества сэмплов на чанк:

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 node

Сброс AEC

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

Reset AEC node

подсказка

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