Vous avez raison. Il existe de nombreuses méthodes d'annulation d'écho, mais aucune d'entre elles n'est exactement triviale. La méthode la plus générique et la plus populaire est l'annulation d'écho via un filtre adaptatif. En une phrase, le travail du filtre adaptatif consiste à modifier le signal en cours de lecture en minimisant la quantité d'informations provenant de l'entrée.
Filtres adaptatifs
Un filtre adaptatif (numérique) est un filtre qui change ses coefficients et converge finalement vers une configuration optimale. Le mécanisme de cette adaptation fonctionne en comparant la sortie du filtre à une sortie souhaitée. Voici un schéma d'un filtre adaptatif générique:
Comme vous pouvez le voir sur le diagramme, le signal est filtré par (convoluée avec) → w n pour produire le signal de sortie d [ n ] . Nous avons ensuite soustraction d [ n ] du désiré le signal d [ n ] pour produire l' erreur le signal e [ n ] . Notez que → w n est un vecteur de coefficients, pas un nombre (donc nous n'écrivons pas w [ n ]x[n]w⃗ nd^[n]d^[n]d[n]e[n]w⃗ nw[n]). Parce qu'il change à chaque itération (chaque échantillon), nous indexons la collection actuelle de ces coefficients avec . Une fois e [ n ] obtenu, nous l'utilisons pour mettre à jour → w n par un algorithme de mise à jour de choix (plus de détails plus loin). Si l' entrée et la sortie satisfont à une relation linéaire qui ne change pas au fil du temps et donné un algorithme de mise à jour bien conçu, → w n finira par converger vers le filtre optimal et d [ n ] sera suivi de près d [ n ] .ne[n]w⃗ nw⃗ nd^[n]d[n]
Annulation d'écho
Le problème de l'annulation d'écho peut être présenté en termes de problème de filtre adaptatif où nous essayons de produire une sortie idéale connue à partir d'une entrée en trouvant le filtre optimal satisfaisant la relation entrée-sortie. En particulier, lorsque vous saisissez votre casque et dites «bonjour», il est reçu à l'autre bout du réseau, modifié par la réponse acoustique d'une pièce (s'il est lu à haute voix), et réinjecté dans le réseau pour revenir en arrière. à vous comme un écho. Cependant, parce que le système sait à quoi ressemblait le "bonjour" initial et qu'il sait maintenant à quoi ressemble le "bonjour" réverbéré et retardé, nous pouvons essayer de deviner à quoi ressemble la réponse de cette pièce en utilisant un filtre adaptatif. Ensuite, nous pouvons utiliser cette estimation, convoluez tous les signaux entrants avec cette réponse impulsionnelle (qui nous donnerait l'estimation du signal d'écho) et soustrayez-le de ce qui entre dans le microphone de la personne que vous avez appelée. Le diagramme ci-dessous montre un annuleur d'écho adaptatif.
x[n]d[n]w⃗ nx[n]y[n]d[n]e[n]=d[n]−y[n]
w⃗ n
x⃗ n=(x[n],x[n−1],…,x[n−N+1])T
Nw⃗ nx
w⃗ n=(w[0],w[1],…,x[N−1])T
y[n]=x⃗ n=w⃗ n
y[n]=x⃗ Tnw⃗ n=x⃗ n⋅w⃗ n
w⃗
w⃗ n+1=w⃗ n+μx⃗ ne[n]x⃗ Tnx⃗ n=w⃗ n+μx⃗ nx⃗ Tnw⃗ n−d[n]x⃗ Tnx⃗ n
μ0≤μ≤2
Applications et défis réels
Plusieurs choses peuvent présenter des difficultés avec cette méthode d'annulation d'écho. Tout d'abord, comme mentionné précédemment, il n'est pas toujours vrai que l'autre personne se taise pendant qu'elle reçoit votre signal «bonjour». Il peut être montré (mais dépasse le cadre de cette réponse) que dans certains cas, il peut être utile d'estimer la réponse impulsionnelle alors qu'une quantité importante d'entrée est présente à l'autre extrémité de la ligne car le signal d'entrée et l'écho sont supposé être statistiquement indépendant; par conséquent, minimiser l'erreur sera toujours une procédure valide. En général, un système plus sophistiqué est nécessaire pour détecter de bons intervalles de temps pour l'estimation de l'écho.
D'un autre côté, pensez à ce qui se passe lorsque vous essayez d'estimer l'écho lorsque le signal reçu est approximativement silencieux (bruit, en fait). En l'absence d'un signal d'entrée significatif, l'algorithme adaptatif divergera et commencera rapidement à produire des résultats sans signification, aboutissant éventuellement à un écho aléatoire. Cela signifie que nous devons également prendre en considération la détection de la parole . Les annuleurs d'écho modernes ressemblent plus à la figure ci-dessous, mais la description ci-dessus en est l'essentiel.
Il existe de nombreuses publications sur les filtres adaptatifs et l'annulation d'écho, ainsi que sur certaines bibliothèques open source dans lesquelles vous pouvez puiser.