Pular para o conteúdo principal

Cancelamento de Eco Acústico

Streaming Sound Wave, junto com seus tipos derivados como Capturable Sound Wave, suporta Cancelamento de Eco Acústico (AEC). O AEC remove o eco do áudio capturado pelo microfone causado pela reprodução de um sinal de renderização (por exemplo, áudio sendo reproduzido pelos alto-falantes). O resultado é uma captura de voz mais limpa em cenários de comunicação em tempo real.

O plugin fornece AEC através da implementação WebRTC AEC3, disponível como um plugin de extensão leve que contém apenas o código relevante do AEC3. O WebRTC AEC3 é um cancelador de eco acústico de alta qualidade amplamente utilizado em aplicações de comunicação em tempo real. Ele modela o caminho acústico entre os alto-falantes e o microfone para subtrair o eco do sinal capturado.

Instalação

Para usar o Cancelamento de Eco Acústico, você precisa instalar o plugin de extensão WebRTC AEC3:

  1. Certifique-se de que o plugin Runtime Audio Importer já está instalado no seu projeto
  2. Baixe o plugin de extensão WebRTC AEC3 aqui
  3. Extraia a pasta do arquivo baixado para a pasta Plugins do seu projeto (crie essa pasta se ela não existir)
  4. Reconstrua seu projeto (esta extensão requer um projeto C++)
important
  • O WebRTC AEC3 suporta todas as versões do motor suportadas pelo 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, e 5.8)
  • Esta extensão é fornecida como código-fonte e requer um projeto C++ para uso
  • O WebRTC AEC3 está disponível para Windows, Linux, Mac, Android (incluindo Meta Quest), e iOS
  • Para mais informações sobre como compilar plugins manualmente, veja o tutorial Building Plugins

Uso Básico

O fluxo de trabalho típico do AEC envolve três etapas:

  1. Ativar AEC na sua Sound Wave de streaming/capturável
  2. Configurar o tamanho do bloco de renderização na Sound Wave de renderização para entrega de quadros de 10 ms
  3. Vincular a Sound Wave de renderização cujo áudio será usado para cancelar o eco do sinal de captura

Ativando o AEC

Para ativar o AEC após criar uma Sound Wave de streaming, use a função ToggleAEC. Você deve especificar a taxa de amostragem e o número de canais para o processador AEC. Se o áudio de captura ou renderização de entrada não corresponder a esses valores, ele será reamostrado automaticamente, porém, a taxa de amostragem configurada ainda afeta a qualidade (por exemplo, 48000 Hz proporcionará um melhor cancelamento de eco do que 16000 Hz) e o desempenho, então vale a pena escolher esses valores deliberadamente em vez de deixar para a reamostragem.

Toggle AEC node

Você pode verificar se o AEC está ativado no momento:

Is AEC Enabled node

Configurando o Tamanho do Chunk de Renderização

WebRTC AEC3 exige que o áudio seja processado em chunks de 10 ms. Para garantir que a onda sonora de renderização entregue os dados de áudio no tamanho de quadro correto, use a função SetNumSamplesPerChunk na renderização da Imported Sound Wave (a sound wave que está sendo reproduzida pelos alto-falantes).

A fórmula para calcular o número correto de amostras por chunk é:

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

Por exemplo, para áudio de 48000 Hz: 48000 / 100 = 480 amostras por bloco.

Set Num Samples Per Chunk node

Vinculando a Onda Sonora de Renderização

Após habilitar a AEC e configurar o tamanho do chunk, vincule a onda sonora de renderização cujo áudio será usado para identificar e remover o eco do sinal de captura. Normalmente, essa é a onda sonora sendo reproduzida pelos alto-falantes que o microfone pode captar:

Vincular A AEC ao Nó de Reprodução de Onda Sonora

Para desvincular a renderização da onda sonora:

Unbind AEC From Sound Wave Playback node

Configuração Adicional

Atraso de streaming

Você pode definir o atraso estimado do fluxo (em milissegundos) entre os caminhos de renderização e captura de áudio. Isso leva em conta a latência de hardware e sistema, embora o WebRTC AEC3 possa estimar isso automaticamente em muitos casos:

Set AEC Stream Delay node

Reinicializando o AEC

Você pode redefinir o estado interno do processador AEC a qualquer momento, limpando qualquer modelo de eco acumulado:

Reset AEC node

dica

WebRTC AEC3 suporta taxas de amostragem de 8000, 16000, 32000 e 48000 Hz. Áudios com taxas diferentes são reamostrados automaticamente, mas isso gera um custo de desempenho. Para melhor qualidade e desempenho, use 48000 Hz e corresponda à configuração de áudio real dos fluxos de captura e renderização.