Forum: Mikrocontroller und Digitale Elektronik Schaltung um Echo rauszufiltern


von Torben K. (torben)


Lesenswert?

Hallo!

Folgendes Problem: Ich habe an zwei Endgeräten je ein Mikrofon und 
Lautsprecher. Die Endgeräte kommunizieren z.B. per VoIP miteinander. Ich 
möchte eine Voll Duplex Kommunikation erreichen. Nun habe ich das 
Problem, dass das Mikrofon die Töne aus dem Lautsprecher aufnimmt und 
dadurch ein Echo entsteht. Kennt jemand einen IC oder eine Schaltung, 
mit der ich das Echo rausfiltern kann?

Meine Idee wäre die vom Mikrofon eingefangenen Signale mit denen zu 
vergleichen, die vom Lautsprecher ausgegeben wurden und dann zu 
subtrahieren. Allerdings müßte ich dafür eine Verzögerung vor dem Signal 
des Lautsprechers einfügen, damit aufgenommenes Signal und ausgegebenes 
"zeitgleich" sind. Ich habe noch keine Idee, wie ich eine solche 
Verzögerung ohne eine Signalverzerrung erreichen kann. Sie müßte z.B. 
durch einen Poti variabel sein.

Hat jemand eine Idee?

Danke!

von Timo (Gast)


Lesenswert?

Stichworte:

- digitale Filter
- adaptive Filter
- AEC (Acoustic Echo Cancellation)
- dazugehörig DTD (Double Talk Detection)

Wenn du die Sprechgeräte mit VoIP nutzt, sind da ja schon Prozessoren 
drin. Die kannst du, bei genügend Reserven, zur Signalverarbeitung 
nutzen. Ansonsten seperater DSP.

Es gibt fertige Platinen, die man zwischenklemmen kann, und eine Echo 
Cancellation realisieren, hab aber keine Ahnung, wie teuer die sind.

Einen einzelnen Chip, den man einfach nur anschließen muss und dies 
realisiert, gibt es meines Wissens nach nicht.

von Timo (Gast)


Lesenswert?

Achso, dein Vorschlag zur analogen Lösung ist zum Scheitern verurteilt.

von Torben K. (torben)


Lesenswert?

Wieso ist er zum Scheitern verurteilt?

von Timo (Gast)


Lesenswert?

Weil ein Echopfad zu komplex ist, um den analog nachbilden zu können. 
Außerdem ändert sich von Raum zu Raum (bzw. extremerweise sogar von der 
Position einzelner Gegenstände, Personen in dem Raum) die 
Übertragungsfunktion. Das heißt, du müsstest die analgoe Nachbildung der 
Übertragungsfunktion automatisch einstellen können, und das wird nichts.

Dein Ansatz an sich ist ja prinzipiell richtig, du kommst nur an der 
digitalen Lösung nicht vorbei, entweder mit gekauften fertigen Modulen, 
oder mit einer Selbstentwicklung (wobei die Komplexität wirklich nicht 
zu unterschätzen ist, ohne Vorkenntnisse in der DSV wird das nur schwer 
zu realisieren sein).

von Johannes S. (Gast)


Lesenswert?

Was du suchst nennt sich "Echo Cancelling" und wird i.d.R als selektives 
Filter realisiert. Ein paar Infos findest du auf 
http://www.dafx-hsse.info , nur sind wir leider nicht mit dem 
Implementieren fertig geworden.
In der Matlab Simulation hats allerdings schon geklappt.

Das große Problem ist aber die hohe Anzahl der Koeffizenten des Filters, 
die benötigt werden

von Timo (Gast)


Lesenswert?

> ...und wird i.d.R als selektives Filter realisiert.

Was ist dabei denn bitte selektiv? Es "selektiert" das Echo, oder wie 
ist das gemeint? Es ist schon eher das Stichwort "Adaptives Filter", das 
bei der Suche zum Erfolg führt.

> Das große Problem ist aber die hohe Anzahl der Koeffizenten
> des Filters, die benötigt werden

Naja, bei 44,1 kHz kein Wunder. Für Voip wird da eher 8 kHz reichen, 
schlechtes Beispiel.

Auch das Beispiel für die Impulsantwort eines Echos ist natürlich nur 
zur Übung geeignet. Eine realer Echopfad ist unendlich komplexer.

Ich würde mich insgesamt nur GAAAAANZ grob an die gepostete Homepage 
halten. Eine vorherige definierte Trainigsphase ist natürlich 
unpraktikabel, ebenso die die sich später nicht ändernden Koeffizienten. 
Einmal kurz am Lautstärkeregler gedreht, schon klappt es nicht mehr.

Die Homepage zeigt eine ganz nette Einstiegsübung auf, allerdings 
zumindest beim Punkt AEC ist dies für einen regulären Betrieb nicht 
ausreichend.

von Johannes S. (Gast)


Lesenswert?

>Was ist dabei denn bitte selektiv?
Ähm meinte adaptiv, mein Fehler

>Für Voip wird da eher 8 kHz reichen, schlechtes Beispiel.
Klar, aber auch hierbei gilt es eine große Anzahl an Koeffizienten zu 
handeln.

>Eine realer Echopfad ist unendlich komplexer.
Genau wie der Filterungsaufwand dieses Pfades ;)

von Timo (Gast)


Lesenswert?

>>Was ist dabei denn bitte selektiv?
>Ähm meinte adaptiv, mein Fehler

;-)

>>Für Voip wird da eher 8 kHz reichen, schlechtes Beispiel.
>Klar, aber auch hierbei gilt es eine große Anzahl an Koeffizienten
>zu handeln.

Naja, wir reden hier über einen Faktor größer 5. Beim RLS Algorithmus 
macht das schon eine ganze Menge aus.

>>Eine realer Echopfad ist unendlich komplexer.
>Genau wie der Filterungsaufwand dieses Pfades ;)
Eben, wollte dem Fragensteller die Illusion nehmen, wenn er das einfache 
"Echo" in der Simulation auslöschen kann, dies auch in der Realität 
funktioniert. Dies ist aber letztendlich auch nur eine Frage der Anzahl 
der Koeffizienten und einer eventuell notwendigen Verzögerung.

von Torben K. (torben)


Angehängte Dateien:

Lesenswert?

Hallo!

Meint ihr ein CS6422 wäre für die Aufgabe geeignet? Datenblatt im 
Anhang.

von Jadeclaw D. (jadeclaw)


Lesenswert?

Ich würde sagen, das Ding ist ideal.
Da das Teil über das Controllerinterface in der Lautstärke geregelt 
wird, ist das weiter oben angemerkte 'Lautstärkereglerproblem' ebenfalls 
keines mehr, da der DSP immer weiß, wie laut der Empfangsweg eingestellt 
ist.

Gruss
Jadeclaw.

von Torben K. (torben)


Lesenswert?

Theoretisch ist das richtig, aber der Empfangsweg hat (noch) eine 
automatische Lautstärkeregelung. Er normalisiert das aufgenommene. Aber 
das wäre das nächste Problem.

von Timo (Gast)


Lesenswert?

>Da das Teil über das Controllerinterface in der Lautstärke geregelt
>wird, ist das weiter oben angemerkte 'Lautstärkereglerproblem' ebenfalls
>keines mehr, da der DSP immer weiß, wie laut der Empfangsweg eingestellt
>ist.

Ist bedingt durch den Adaptionsalgorithmus doch sowieso kein Problem, 
oder sehe ich das falsch? Da braucht man doch kein extra Interface mit 
dem die Lautstärke geregelt wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.