www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Echo compensation


Autor: Skittler Bruce (skittler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,

ich habe hier die Suche und ja, ich habe auch google bemüht.
Aus diesem Grund eröffne ich nun hier diese Frage.

Ich möchte in die Welt der DSP's einsteigen. Bisher bin ich mit 
C-Programmierung auf AVR Prozessoren vertraut. Mein erster DSP wird ein 
dsPic der Firma Microchip.

Ich möchte mit diesem Gerät ein von einem Mikrofon aufgenommenes 
Sprachsignal (ca. 200 bis 3500 Hz) an dem Lautsprecher wieder ausgeben. 
Natürlich soll es dabei nicht zu Rückkopplungen der Lautsprecher 
wiedergabe auf das Mikrofon kommen.

Nun gut. Sprachsignal also schön mit mindestens doppelter Aptastfrequenz 
sampeln (10 bit?!) und dann irgendwie Puffern. Den Puffer dann am 
Lautsprecher wieder DigialAnalog gewandelt ausgeben.
Der Puffer muss natürlich vorher überprüft werden ob das Signal vom 
eigenem Lautsprecher stammt oder "neu" ist.

Denke das Prinzip müsste es sein. Jedoch finde ich im I-net kaum 
gescheite Anleitungen was für Filter dies genau sind. Es gibt zwar 
Firmen die sagen das Ihr Algorithmus das macht, aber das Prinzip... mmh.
Ich würde das Thema gern besser verstehen um dann so was selbst auf die 
Beine stellen zu können.

Kann mir irgendwer erklären was genau digital ablaufen muss?

Autor: Kai S. (zigzeg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Skittler Bruce schrieb:

> Der Puffer muss natürlich vorher überprüft werden ob das Signal vom
> eigenem Lautsprecher stammt oder "neu" ist.

Ist leider nicht so ganz trivial. Das Prinzip bei der so genannten "Echo 
cancellation" ist, das man den akustischen Kanal zwischen Lautsprecher 
und Mikrofon elektronisch nachbildet. Damit "weiss" man sozusagen, was 
von dem mittels Mikrofon aufgenommenen Signal vom eigenen Lautsprecher 
stammt, und kann es von dem Mikrofon-Signal abziehen.
Das "Nachbilden" des akustischen Kanals passiert z.B. mit einem sog. FIR 
Filter. Die Dauer des Echos (Nachhalles) bestimmt dabei die notwendige 
Größe des FIR Filters. Je nach Raum ist es durchaus schon eine 
Herausforderung, diesen auf einem DSP zu implementieren - manchmal 
verwendet man auch dedizierte Hardware.
So ein großer FIR Filter hat in der Größenordnung von mehreren 100 bis 
1000e Parametern. Die Herausforderung ist nun diese aufgrund des 
akustischen Signals zu schätzen.
Echo cancellation Algorithmen schätzen diese Parameter fortwährend, denn 
es kann ja sein, dass der akustische Kanal sich ändert (z.B. Nutzer das 
Handy relativ zum Kopf bewegt). Da das ganz ja ein Rückgekoppeltes 
System ist muss man auch darauf Acht geben, dass es nicht zu schwingen 
anfängt.

Eine einfachere Möglichkeit die Parameter zu schätzen könnte es sein, 
ein Stossantwort aufzunehmen. Im Prinzip erzeugt man einen "Knall", und 
nimmt den entstehenden Nachhall auf. So zumindest die Theorie. Ob das 
auch praktisch funktioniert - keine Ahnung.

Also gar nicht so einfach. Vielleicht als Einstieg stattdessen einfach 
mal einen Hall (Reverb) implementieren ? Es gibt im Internet zum Teil 
"Impulsantworten" von realen Gebäuden zu finden. Damit könnte man dann 
zum Beispiel die Akustik einer Kathedrale simulieren.

Wenn es unbedingt Echo Cancellation sein muss: Vielleicht hilft auch ein 
Trick, z.B. das Signal einfach einige 100ms (?) verzögern, das 
verringert auf jeden Fall die Rückkoppelung. Ich denke ein zusätzlicher 
(digitaler) Tiefpass kann auch nicht schaden.

ZigZeg

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem (feedback cancellation) ist noch ein bisschen schwieriger 
als "nur" echo cancellation. Bei echo cancellation adaptiert man das 
Modellfilter nur wenn gerade keine andere Quelle aktiv ist, so kann man 
den Echopfad relativ problemlos identifizieren. Bei Feedback klappt das 
nicht mehr so einfach, weil permanent der Sprecher selbst als 
"Störquelle" in dem Mikrofonsignal enthalten ist.

Um Feedback zu reduzieren gibt es noch ein paar einfachere Verfahren, 
die z.B. in diesem Buchkapitel beschrieben werden:
http://books.google.de/books?id=57XmRUhcdIQC&lpg=P...

Allerdings habe ich auch so meine Zweifel ob das als Einsteigerprojekt 
taugt.

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Elektor wurde das vor einiger zeit so gelöst, dass das 
Sprachsignal um einige 100Hz raufgemischt wurde. Vielleicht ist das auch 
ein brauchbarer Ansatz.

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.