AEC, l’echo cancellation avec pulseaudio

logo pulseaudio
logo pulseaudio

Bonjour ami lecteur. Cela faisait quelques temps que je n’avais pas écrit quelques lignes, mais je reviens avec un sujet qui je suis sûr te plaira : l’écho cancellation (AEC) avec pulseaudio.

Définition AEC

Déjà, on va commencer par expliquer ce qu’est l’AEC (accoustic echo cancellation) ou en bon français, l’annulation de l’écho acoustique.

Prenons une enceinte, un micro et Spotify. Lançons une musique pour qu’elle se joue sur l’enceinte. Si on souhaite ensuite enregistrer un message voix par le micro, le son capturé sera la somme de la musique sortie de l’enceinte et notre voix.
Dans le cadre de snips, ça risque de poser soucis car la commande vocale avec une musique par-dessus peut l’empêcher de comprendre ce que tu dis.

On va alors utiliser l’AEC. La musique et la voix sont tout simplement des ondes. Et les ondes, c’est comme les chiffres, ça s’additionne et ça se soustrait.

Exemple théorique

Imaginons ceci :
=> Voix = 3
=> Musique = 5
Lorsque j’enregistre au micro ma commande vocale avec la musique en fond sonore, cela donne comme son enregistré la valeur de : 3 + 5 = 8

Mais, et c’est là où cela devient intéressant, l’enceinte connait la musique puisque c’est elle qui la joue en ce moment même. On peut donc imaginer que pour retrouver uniquement la voix, on peut demander à pulseaudio (notre serveur de son) de prendre le son enregistré par le micro (8) et de lui retirer la musique jouée par l’enceinte (5). Ce qui ferait à la sortie 8 – 5 = 3 . Nous retrouvons donc bien uniquement la voix.

Bon, évidemment, j’ai ultra schématisé et c’est un peu plus complexe que ça. Et oui, la musique qui est enregistrée par le micro n’est pas exactement identique à la musique qui est jouée par l’enceinte car plein de paramètres vont jouer; la qualité du micro, un petit souffle de fond etc…

Donc Si on voulait être plus précis, la musique enregistrée par le micro ne vaut pas 5, mais peut-être un truc du genre 4,8. Donc la musique et la voix enregistrée par le micro ne font plus 5 + 3, mais 4,8 + 3 soit 7,8.

Si on reprend notre soustraction de tout à l’heure, le son du micro (7,8) auquel on soustrait la musique (5), cela donne en valeur pour notre voix : 2,8.
Donc, cela ne donnera pas tout à fait 3, c’est-à-dire que ce ne sera pas identique à ce que le micro aurait enregistré sans la musique. Et oui, il y a toujours un petit peu de perte. Mais bien réglée, cela reste très efficace.