2015-08-01 2 views
0

Mon collègue et moi développons un module de traitement du son et de la parole sur un DSP de périphérique analogique. En raison de la proximité de notre seul microphone et haut-parleur, nous avons connu un écho important. Nous voulons implémenter un algorithme NLMS pour réduire cet écho. Je voulais d'abord l'implémenter et tester l'algorithme dans Matlab mais j'ai encore quelques problèmes. Je pense que je pourrais avoir un problème théorique dans mon algorithme. J'ai du mal à comprendre ce que serait le «signal désiré» dans l'algorithme puisque je n'ai pas accès à un signal non corrompu.Algorithme d'annulation d'écho acoustique dans Matlab

Voici un aperçu de ma façon naïve de l'implémenter dans Matlab. Simulink diagram here

Link to Simulink code (.slx)

En ce moment, le code ne peut pas compiler en raison d'une « erreur de boucle algeabric » dans Simulink, mais j'ai le sentiment qu'il ya plus à ce problème.

Toute aide serait appréciée.

+0

Avez-vous lu l'article de documentation sur les boucles algébriques? http://de.mathworks.com/help/simulink/ug/algebraic-loops.html – Daniel

+1

Je pourrais être complètement incompréhension de votre problème, mais que voulez-vous dire par «vous n'avez pas accès à un signal non corrompu»? Ne pouvez-vous pas simplement éteindre l'enceinte et enregistrer un échantillon audio? Votre écho n'est-il pas littéralement l'entrée du microphone étant également transmise par l'enceinte avec un peu de retard? –

+0

Pouvez-vous poster une capture d'écran de modèle? Jetez un oeil à l'image d'algorithme à http://www.ti.com/lit/an/spra063/spra063.pdf qui devrait aider à modéliser ceci. – Navan

Répondre

0

Le modèle que vous avez n'est pas entièrement correct. Pour l'annulation d'écho acoustique, vous utilisez le filtre adaptatif pour modéliser la pièce. Vous identifiez les caractéristiques de la pièce à l'aide du filtre adaptatif. Une fois que vous faites cela, vous pouvez ensuite utiliser votre filtre adaptatif pour identifier la partie du signal éloigné du haut-parleur qui retourne dans le microphone et soustraire cela du signal du microphone pour supprimer l'écho.

Pour votre filtre adaptatif, votre entrée devrait être le signal de l'extrémité distante qui serait le signal envoyé au haut-parleur dans la pièce. Votre signal désiré est le signal sortant du microphone dans la pièce. Le signal du microphone contient des signaux provenant des voix de la personne dans la pièce et également une partie du son du haut-parleur qui est l'écho.

Sound from far end   ----|In    | Out (You can ignore this) 
           | Adaptive Filter | 
Sound from local microphone ----|Desired   | Error 

Dans ce modèle, le signal de sortie d'erreur du filtre adaptatif est le signal sans écho souhaité. En effet, l'erreur est calculée en soustrayant la sortie du filtre adaptatif de la valeur désirée, ce qui supprime fondamentalement l'écho.

Pour simuler ce système dans Simulink, vous avez besoin d'un filtre pour représenter la pièce. Vous pouvez utiliser un filtre FIR ordinaire pour cela. Vous devriez être en mesure d'obtenir des réponses impulsionnelles en ligne. Ce sont généralement de longues (~ 1000) réponses impulsionnelles en décomposition lente. Votre source audio peut représenter le signal du haut-parleur. Vous alimentez le même signal audio dans ce filtre de réponse de pièce et vous obtiendrez le signal désiré. L'alimentation des deux dans un filtre adaptatif rendra le filtre adaptatif adapté au filtre de réponse de la pièce.

+0

Merci beaucoup Navan. Cela m'aidera probablement à comprendre mon problème. –

+0

J'ai réalisé que votre implémentation ne fonctionnait pas car l'algorithme NLMS a tendance à ajuster les poids des filtres FIR afin de réduire le signal d'erreur. Dans notre cas, nous ne voulons pas que le signal d'erreur soit réduit, donc nous obtenons un résultat bizarre lorsque le filtre essaie de s'adapter. Puisque l'erreur est la sortie - désirée et la sortie dans notre cas est l'écho de prévision, pour que cela fonctionne, ne devrions-nous pas mettre dans l'écho désiré? Mais je n'ai pas accès à un tel signal. Avez-vous une autre solution? –

+0

Il est étrange d'abord de regarder ce modèle puisque le signal d'erreur est le signal que vous voulez. L'hypothèse avec ce modèle est qu'il n'y a pas de corrélation avec le signal à l'extrémité distante et le signal à l'extrémité proche. Même si le filtre adaptatif tente de minimiser l'erreur, il ne peut pas être inférieur à la suppression de l'écho en raison de l'hypothèse de corrélation. Quel était le résultat bizarre? – Navan