Pular para o conteúdo principal

Cancelamento de Eco Acústico

Streaming Sound Wave, juntamente 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 tocando através de 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 inclui 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 em 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 esta pasta se ela não existir)
  4. Recompile 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 e 5.7)
  • Esta extensão é fornecida como código-fonte e requer um projeto C++ para uso
  • Para mais informações sobre como construir plugins manualmente, consulte o tutorial Building Plugins

Uso Básico

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

  1. Habilitar AEC na sua streaming/capturable sound wave
  2. Configurar o tamanho do chunk de renderização na render sound wave para entrega de quadros de 10 ms
  3. Vincular a render sound wave cujo áudio será usado para cancelar o eco do sinal de captura

Habilitando AEC

Para habilitar o AEC após criar uma streaming sound wave, 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; no entanto, a taxa de amostragem configurada ainda afeta a qualidade (por exemplo, 48000 Hz produzirá um cancelamento de eco melhor do que 16000 Hz) e o desempenho, portanto, vale a pena escolher esses valores deliberadamente em vez de deixar para a reamostragem.

Toggle AEC node

Você pode verificar se o AEC está atualmente habilitado:

Nó Is AEC Enabled

Configurando o Tamanho do Chunk de Renderização

O WebRTC AEC3 requer que o áudio seja processado em chunks de 10 ms. Para garantir que a onda sonora de renderização forneça dados de áudio no tamanho de quadro correto, use a função SetNumSamplesPerChunk na render Imported Sound Wave (a onda sonora 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.

Nó Set Num Samples Per Chunk

Vinculando a Render Sound Wave

Após habilitar o AEC e configurar o tamanho do chunk, vincule a render sound wave cujo áudio será usado para identificar e remover o eco do sinal de captura. Normalmente, esta é a sound wave que está sendo reproduzida pelos alto-falantes e que o microfone pode captar:

Nó Bind AEC To Sound Wave Playback

Para desvincular a onda sonora de renderização:

Unbind AEC From Sound Wave Playback node

Configuração Adicional

Atraso do Stream

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

Nó Set AEC Stream Delay

Redefinindo o AEC

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

Nó Reset AEC

dica

O WebRTC AEC3 suporta taxas de amostragem de 8000, 16000, 32000 e 48000 Hz. Áudio com taxa incompatível é reamostrado automaticamente, mas isso gera uma sobrecarga de desempenho. Para obter a melhor qualidade e desempenho, use 48000 Hz e corresponda à configuração de áudio real dos fluxos de captura e renderização.