www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schaltung um Echo rauszufiltern


Autor: Torben K. (torben)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, dein Vorschlag zur analogen Lösung ist zum Scheitern verurteilt.

Autor: Torben K. (torben)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso ist er zum Scheitern verurteilt?

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Johannes S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Torben K. (torben)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

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

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Torben K. (torben)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.