Aller au contenu principal

Annulation d'écho acoustique

Streaming Sound Wave, ainsi que ses types dérivés comme Capturable Sound Wave, prend en charge l'annulation d'écho acoustique (AEC). L'AEC supprime l'écho de l'audio capturé par le microphone causé par la lecture d'un signal de rendu (par exemple, l'audio joué par les haut-parleurs). Le résultat est une capture vocale plus propre dans les scénarios de communication en temps réel.

Le plugin fournit l'AEC via l'implémentation WebRTC AEC3, disponible en tant qu'extension légère qui n'inclut que le code AEC3 pertinent. WebRTC AEC3 est un annuleur d'écho acoustique de haute qualité largement utilisé dans les applications de communication en temps réel. Il modélise le chemin acoustique entre les haut-parleurs et le microphone pour soustraire l'écho du signal capturé.

Installation

Pour utiliser l'annulation d'écho acoustique, vous devez installer l'extension plugin WebRTC AEC3 :

  1. Assurez-vous que le plugin Runtime Audio Importer est déjà installé dans votre projet
  2. Téléchargez l'extension plugin WebRTC AEC3 depuis ici
  3. Extrayez le dossier de l'archive téléchargée dans le dossier Plugins de votre projet (créez ce dossier s'il n'existe pas)
  4. Recompilez votre projet (cette extension nécessite un projet C++)
important
  • WebRTC AEC3 prend en charge toutes les versions du moteur supportées par 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 et 5.7)
  • Cette extension est fournie sous forme de code source et nécessite un projet C++ pour être utilisée
  • Pour plus d'informations sur la construction manuelle des plugins, consultez le tutoriel Building Plugins

Utilisation de base

Le flux de travail typique de l'AEC implique trois étapes :

  1. Activer l'AEC sur votre streaming/capturable sound wave
  2. Configurer la taille des blocs de rendu sur le sound wave de rendu pour une livraison par trames de 10 ms
  3. Lier le sound wave de rendu dont l'audio sera utilisé pour annuler l'écho du signal de capture

Activation de l'AEC

Pour activer l'AEC après avoir créé un streaming sound wave, utilisez la fonction ToggleAEC. Vous devez spécifier la fréquence d'échantillonnage et le nombre de canaux pour le processeur AEC. Si l'audio de capture ou de rendu entrant ne correspond pas à ces valeurs, il sera rééchantillonné automatiquement. Cependant, la fréquence d'échantillonnage configurée affecte toujours la qualité (par exemple, 48000 Hz donnera une meilleure annulation d'écho que 16000 Hz) et les performances, il est donc préférable de choisir ces valeurs délibérément plutôt que de laisser faire le rééchantillonnage.

Toggle AEC node

Vous pouvez vérifier si l'AEC est actuellement activé :

Nœud Is AEC Enabled

Configuration de la Taille des Blocs de Rendu

WebRTC AEC3 nécessite que l'audio soit traité par blocs de 10 ms. Pour garantir que l'onde sonore de rendu fournisse les données audio avec la taille de trame correcte, utilisez la fonction SetNumSamplesPerChunk sur l'onde sonore de rendu Imported Sound Wave (l'onde sonore diffusée par les haut-parleurs).

La formule pour calculer le nombre correct d'échantillons par bloc est :

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

Par exemple, pour un audio à 48000 Hz : 48000 / 100 = 480 échantillons par segment.

Nœud Set Num Samples Per Chunk

Liaison du Render Sound Wave

Après avoir activé l'AEC et configuré la taille des blocs, liez le render sound wave dont l'audio sera utilisé pour identifier et supprimer l'écho du signal de capture. Il s'agit généralement de la forme d'onde sonore diffusée par les haut-parleurs que le microphone pourrait capter :

Nœud Bind AEC To Sound Wave Playback

Pour dissocier la forme d'onde sonore de rendu :

Unbind AEC From Sound Wave Playback node

Configuration supplémentaire

Délai de streaming

Vous pouvez définir le délai de streaming estimé (en millisecondes) entre les chemins de rendu et de capture audio. Cela permet de compenser la latence matérielle et système, bien que WebRTC AEC3 puisse l'estimer automatiquement dans de nombreux cas :

Set AEC Stream Delay node

Réinitialisation de l'AEC

Vous pouvez réinitialiser l'état interne du processeur AEC à tout moment, effaçant ainsi tout modèle d'écho accumulé :

Nœud Reset AEC

astuce

WebRTC AEC3 prend en charge les taux d'échantillonnage de 8000, 16000, 32000 et 48000 Hz. Les audios dont le taux ne correspond pas sont rééchantillonnés automatiquement, mais cela entraîne une surcharge de performance. Pour une qualité et des performances optimales, utilisez 48000 Hz et faites correspondre la configuration audio réelle des flux de capture et de rendu.