Forum: Digitale Signalverarbeitung / DSP / Machine Learning Echo compensation


von Skittler B. (skittler)


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?

von Kai S. (zigzeg)


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

von Andreas S. (andreas) (Admin) Benutzerseite


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=PP1&dq=acoustic%20echo%20and%20noise%20control&pg=PA129#v=onepage&q&f=false

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

von Lukas K. (carrotindustries)


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.

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.