Forum: Digitale Signalverarbeitung / DSP / Machine Learning Audiosignal aus Lautsprecherleitung filtern


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jokyoky (Gast)


Lesenswert?

Hallo,

gibt es die Möglichkeit ein Audiosignal (Start- und Stoppmelodie eines 
Gerätes) aus einer Lautsprecherleitung herauszufiltern, ohne die weitere 
Übertragung zu stören?

Ich könnte mir nur das einfache zeitbasierte Unterbrechen einer 
Lautsprecherleitung vorstellen, jeweils nach An/Aus Taster drücken, aber 
gibt es hier etwas Raffinierteres wie einen programmierbaren 
Audiofilter?

Platz wäre etwa in Arduino Uno Größe vorhanden.

von Old (old_newcomer)


Lesenswert?

Von welchem Gerät wird denn die Start-/Stoppmelodie erzeugt und wie 
einem Lautsprecher zugeführt?

von Theo (Gast)


Lesenswert?

Ich glaube, er will die Melodie herausfiltern, die beim Einschalten des 
Geräts entstehen. Richtig?

von Old (old_newcomer)


Lesenswert?

Die Vermutung hab ich auch und deshalb nach dem Gerat gefragt, dass das 
macht.

von Michael M. (Firma: Autotronic) (michael_metzer)


Lesenswert?

Theo schrieb:
> Ich glaube, er will die Melodie herausfiltern, die beim
> Einschalten des Geräts entstehen. Richtig?

Dann könnte man eine invertierende NF-Stufe dahinter bauen (180° 
phasengedreht) und beide Signale exakt überlagern, damit sie sich 
gegenseitig auslöschen.

Mit einer Zeitverzögerung wird der Inverter nach dem Einschalten wieder 
abgeschaltet. Quasi genau dann, wenn die Melodie beendet ist.

von Klaus (feelfree)


Lesenswert?

Michael M. schrieb:
> Dann könnte man eine invertierende NF-Stufe dahinter bauen (180°
> phasengedreht) und beide Signale exakt überlagern, damit sie sich
> gegenseitig auslöschen.

Ich bin sicher, mit etwas Nachdenken findet man auch eine noch 
aufwendigere Lösung, um einen Lautsprecher daran zu hindern, Töne 
auszugeben.

von Michael M. (Firma: Autotronic) (michael_metzer)


Lesenswert?

Klaus schrieb:
> mit etwas Nachdenken findet man auch eine noch aufwendigere Lösung, um
> einen Lautsprecher daran zu hindern, Töne auszugeben.

Dann müsste man aber erst den Deckel vom Gerät abschrauben, um den 
Melodieteil mit dem Seitenschneider abknipsen zu können. Türlich ist das 
effektiver.

Zumal der 180° Inverter 100% exakt arbeiten muss! Bei der geringsten 
Klangabweichung kommt die Melodie trotzdem wieder leise durch.

von Old (old_newcomer)


Lesenswert?

Michael M. schrieb:
>
> Dann könnte man eine invertierende NF-Stufe dahinter bauen (180°
> phasengedreht) und beide Signale exakt überlagern, damit sie sich
> gegenseitig auslöschen.
>
> Mit einer Zeitverzögerung wird der Inverter nach dem Einschalten wieder
> abgeschaltet. Quasi genau dann, wenn die Melodie beendet ist.

Statt sich mit einem Inverter rumzuplagen, um beim Ein des Gerätes und 
-/Ausschalten eine Melodie mit einem genau entgegengesetzten Signal 
aufheben zu wollen, kann man auch einfach den/die Lautsprecher bzw. das 
Melodiesignal während der Zeit abschalten bzw. kurzschließen.

von Klaus (feelfree)


Lesenswert?

Michael M. schrieb:
> Zumal der 180° Inverter 100% exakt arbeiten muss! Bei der geringsten
> Klangabweichung kommt die Melodie trotzdem wieder leise durch.

Du hast die Absurdität deiner eigenen Idee immer noch nicht erkannt.
Hint: unterbrechung der Lautsprecherleitung führt zu einem deutlich 
besseren Ergebnis.

von Michael M. (Firma: Autotronic) (michael_metzer)


Lesenswert?

Old schrieb:
> ...kann man auch einfach den/die Lautsprecher bzw. das  Melodiesignal
> während der Zeit abschalten.

In der Theorie würde das sogar gehen...

Klaus schrieb:
> Eine Unterbrechung der Lautsprecherleitung führt zu einem deutlich besseren
> Ergebnis.

Das ginge zwar auch aber:

Jokyoky schrieb:
> aus einer Lautsprecherleitung herauszufiltern

...der TE möchte das Signal richtig rausgefiltert haben und dafür ist 
meine Idee einfach am besten geeignet.

von Klaus (feelfree)


Lesenswert?

Michael M. schrieb:
> der TE möchte das Signal richtig rausgefiltert haben

Was verstehst Du denn unter "richtig rausgefiltert"?
Wär eine eine Dämpfung auf 0dB(A) Schalldruck für dich nicht "richtig 
rausgefiltert", weil es ja nur gedämpft und nicht gefiltert ist?
Ich behaupte mal, er möchte das Signal schlicht und einfach nicht hören.
Und deshalb ist deine Idee völlig absurd.

von Old (old_newcomer)


Lesenswert?

@Michael M.
Wann willst du denn für wie lange was rausfiltern? Anfangs- und Endzeit 
der zur Invertierung des Lautsprecher-Signals zum „Filtern“ musst du ja 
vorgeben (können), da kann man zu diesen Zeiten auch einfach den 
Lautsprecher oder sein treibendes Signal zu den selben Zeitpunkten 
abschalten.

Wo und wie soll eigentlich ein invertiertes Signal hinzugefügt werden, 
damit es das Lautsprecher-Signal aufheben könnte? Doch nicht etwa als 
direktes und invertiertes Lautsprecher-Signal mit xxxVA maximaler 
Lautsprechersignal-Leistung?

: Bearbeitet durch User
von Schlaumaier (Gast)


Lesenswert?

Erinnert mich an die "vor DAB" Autoradios. Die haben das 
Nachrichten-Signal auch überwacht und dann auf den Sender umgeschaltet.

Allerdings hat man dann eine Pause drin. Die Pause wurde für das 
Umschalten genutzt.

Viele male auf der Autobahn so erlebt. Besonders in Zeiten ohne GPS und 
mit Papier-Navi. ;)

Man sollte ergo einfach mal schauen wie die alten Kisten das gemacht 
haben.

von Klaus (feelfree)


Lesenswert?

Schlaumaier schrieb:
> Man sollte ergo einfach mal schauen wie die alten Kisten das gemacht
> haben.

Nö, sollte man nicht. Denn hier gibt es eine völlig andere 
Aufgabenstellung, dessen mögliche Umsetzung der TE schon in seinem 
Eingangsbeitrag selbst skizziert hat. Nur dass man für so eine einfache 
Zeitschaltung noch nicht mal einen Arduino benötigt.

von Smith (Gast)


Lesenswert?

Jokyoky schrieb:
> Start- und Stoppmelodie eines Gerätes

? Was soll das denn sein?

von rbx (Gast)


Lesenswert?

Jokyoky schrieb:
> gibt es die Möglichkeit ein Audiosignal (Start- und Stoppmelodie eines
> Gerätes) aus einer Lautsprecherleitung herauszufiltern, ohne die weitere
> Übertragung zu stören?

Gibt es keine Möglichkeit, die Melodie(n) selber auszutauschen?
Wenn es irgendwelche Mixerbibs gibt, könnte man auch einfach die 
dazwischenfummeln, zwecks Lautstärkeregelung inclusive Fade Ins und Fade 
Outs.
Zeitgesteuertes Limitieren kann man auch noch machen - oder eben Noise 
Gate.

von Jokyoky (Gast)


Lesenswert?

Old schrieb:
> Von welchem Gerät wird denn die Start-/Stoppmelodie erzeugt und wie
> einem Lautsprecher zugeführt?

Eine asiatische PKW Multinerveinheit. Der extra Lautsprecher wird dann 
aber auch für Navigationsansagen und einige weitere Hinweise genutzt. 
Auscodieren ist tatsächlich nicht möglich.

Michael M. schrieb:
> Dann könnte man eine invertierende NF-Stufe dahinter bauen (180°
> phasengedreht) und beide Signale exakt überlagern, damit sie sich
> gegenseitig auslöschen.

Ok, dann würde ich tatsächlich einfach tastenaktiviert für die 
Zeitspanne unterbrechen. Ich dachte, es gäbe irgendwas Fertiges und das 
wäre ein typisches Audio-Standardproblem und sei es etwas mit einer 
kleinen Latenzzeit, so dass die Signalerkennung sauber funktioniert.

Danke für die erdenden Beiträge!

von J. S. (engineer) Benutzerseite


Lesenswert?

Es soll ja eigentlich automatisch passieren, wenn ich das richtig 
interpretiere. Ist durchaus machbar.

Dazu müsste man die Melodie aufnehmen, analysieren und als Profil 
hinterlegen, um sie mit einem Signalprozessor zu erkennen. Man braucht 
dann allerdings einige Sekunden Material zur "Ansicht" und muss das 
Signal entsprechend verzögern.

Der Signalprozessor müsste in Echtzeit ein Spektralprofil erstellen, um 
die Melodie zu erkennen und das Signal muten. Machbar ist das. Mit einem 
Audio-DSP wäre das leicht zu lösen. Einige Audioprogramme am PC können 
eine solche präzises 3D-FFT offline machen und ein Profil erstellen, mit 
dem vergleichen werden kann. Ich habe das für Störschallunterdrückung 
schon mal gelöst.

Man muss auch nicht das ganze Frequenzprofil bilden und vergleichen 
sondern nur eine vereinfachte Abbildung. Meistens reicht ein Profil von 
einigen Sekunden, das aus 10-20 Frequenzen besteht. Die Höhen kann man 
oft weglassen, es sei denn, es geht um Sprache. Dann braucht man unten 
eine Oktave weniger und oben 3 mehr und eine dichtere FFT, um 
ausreichend Präzision zu bekommen, weil Worte kürzer sind und nur 
erkannt werden können, wenn die Profile sehr gut sind.

Siehe auch hier:
Beitrag "Re: Geräuscherkennung mit Referenzaudiofile"

von Klaus (feelfree)


Lesenswert?

Jürgen S. schrieb:
> Es soll ja eigentlich automatisch passieren, wenn ich das richtig
> interpretiere. Ist durchaus machbar.

Ja: Beim Einschalten die Lautsprecher erst nach xx Sekunden 
durchschalten, und beim Ausschalten sofort unterbrechen.

Aber ich sehe schon, die eigentliche Herausforderung ist es wohl, eine 
simple Aufgabe mit maximalem Aufwand zu lösen -da kann und will ich 
nicht mithalten.

von Michael M. (Firma: Autotronic) (michael_metzer)


Lesenswert?

Klaus schrieb:
> Beim Einschalten die Lautsprecher erst nach xx Sekunden durchschalten,
> und beim Ausschalten sofort unterbrechen.

Die Melodie ertönt nicht nur beim Ein- und Ausschalten, sondern auch 
mittendrin. Da gehört schon eine gehörige Portion Gehirnschmatz dazu, um 
das Problem zu lösen.

von Klaus (feelfree)


Lesenswert?

Michael M. schrieb:
> Die Melodie ertönt nicht nur beim Ein- und Ausschalten, sondern auch
> mittendrin

Und woher hast du diese exklusive Information?

von Michael M. (Firma: Autotronic) (michael_metzer)


Lesenswert?

Klaus schrieb:
> Und woher hast du diese exklusive Information?

Die habe ich von hier:

Jokyoky schrieb:
> Eine asiatische PKW Multinerveinheit. Der extra Lautsprecher wird dann
> aber auch für Navigationsansagen und einige weitere Hinweise genutzt.
> Auscodieren ist tatsächlich nicht möglich.

Aber wahrscheinlich habe ich mir aus der Info selber einen falschen Reim 
raus gemacht.

von Klaus (feelfree)


Lesenswert?

Michael M. schrieb:
> Aber wahrscheinlich habe ich mir aus der Info selber einen falschen Reim
> raus gemacht.

Ganz sicher.

von J. S. (engineer) Benutzerseite


Lesenswert?

Wie es auch immer sein mag: Wenn ich lesen

"Audiosignal aus Lautsprecherleitung filtern"

dann interpretiere ich da nicht nur ein einfaches Schalten hinein. Bei 
dem konkreten Vorschlag (wir haben ja gerade dasselbe Thema an zwei 
Stellen im Forum) geht es in der Tat darum, das Signal rauszufiltern und 
den Rest zu belassen. Natürlich kann man einfach erkennen und 
abschalten. Ein Signal rausfiltern ist aber etwas anderes, als Leitung 
wegnehmen.

In besagter Lösung wird demgemäß auch in der Tat das Signal unterdrückt, 
während der Rest weiterläuft.
Beitrag "Re: Geräuscherkennung mit Referenzaudiofile"

von Klaus (feelfree)


Lesenswert?

Jürgen S. schrieb:
> dann interpretiere ich da nicht nur ein einfaches Schalten hinein.

Das ist der Kern deines Problems. Erst mal die Anforderung verstehen, 
bevor man über eine Lösung nachdenkt. Dazu muss man auch die "Sprache" 
des Fragestellers verstehen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Klaus schrieb:
> Das ist der Kern deines Problems. Erst mal die Anforderung verstehen,
> bevor man über eine Lösung nachdenkt.
Anders herum - selber erst mal lesen. Der TE sagt:

Jokyoky schrieb:
> ... melodie eines aus einer Lautsprecherleitung herauszufiltern,
> ohne die weitere Übertragung zu stören?
Das ist zunächst "Herausfiltern".
Später ist er auf "Abschalten" geschwenkt.

Meine Lösung kann beides. Sobald die Signalfolge erkannt worden ist, 
kann sie auch gefiltert werden. BTDT. Pilottöne in einer PA-Alage, 
Brummunterdrückung in Audiodaten. Geht sogar zweidimensional: 
unbekanntes Objekt im Bild mit anderer Geschwindigkeit als Schwenk 
entdecken und interpolierend rausfiltern. Überlagerte Objektiv- und 
Sonnenreflektionen kann man so praktisch vollständig eliminieren.

Ich empfehle dir, erstmal selber etwas Ähnliches aufzubauen und in den 
Markt zu bringen, Erfahrungen zu sammeln und dann mitzudiskutieren.

von Jokyoky (Gast)


Lesenswert?

Ich besorg mir ein einstellbares Eltako o.ä. Zeitrelais und 
Zwischenadapter für den Taster und den Lautsprecher. Dann hab ich eine 
saubere Lösung. Alles andere wäre zu komplex für mich. Thanks for input.

von Klaus (feelfree)


Lesenswert?

Jürgen S. schrieb:
> Das ist zunächst "Herausfiltern".

Nun ja, offensichtlich hast Du den TE immer noch nicht verstanden. Wie 
schreib ich doch bereits:

Klaus schrieb:
> Dazu muss man auch die "Sprache" des Fragestellers verstehen.

Jürgen S. schrieb:
> Meine Lösung kann beides

Nein, deine "Lösung" wirst weder Du noch der TE in endlicher Zeit und 
unter den gegebenen Randbedingungen je implementieren können.

von Mark S. (voltwide)


Lesenswert?

Klaus schrieb:
> Michael M. schrieb:
>> Dann könnte man eine invertierende NF-Stufe dahinter bauen (180°
>> phasengedreht) und beide Signale exakt überlagern, damit sie sich
>> gegenseitig auslöschen.
>
> Ich bin sicher, mit etwas Nachdenken findet man auch eine /noch/
> aufwendigere Lösung, um einen Lautsprecher daran zu hindern, Töne
> auszugeben.
Ja, man könnte ja auch eine E88CC dazwischen schalten, die langsam 
aufheizt und auf diese Arte den Anfang "muted".

von J. S. (engineer) Benutzerseite


Lesenswert?

Klaus schrieb:
> Nein, deine "Lösung" wirst weder Du noch der TE
Wie ich schrieb, HABE ich das bereits implementiert. Um einen Vergleich 
zum vorliegenden Problem zu bringen:

Besagtes Gerät wird in einem Umfeld betrieben, in dem andere Geräte 
pipen und tuten. Um die Sprachsteuerung nicht zu stören, werden diese 
Töne erfasst oder gelernt und rausgefiltert. Und zwar "gefiltert" und 
nicht etwa das Signal gemutet oder gegatet. Es handelt sich dabei um 
Töne, die von Fremdgeräten mit Echos von den Wänden kommen, wie auch 
Störgeräusche, die vom Gerät selber stammen, z.B. ein "Bling" einer 
bewegten Mechanik. Diese Eigengeräusche sind sehr gut reproduzierbar und 
im Labor / der Produktion messbar, um sie wegzukalibieren. Es ist 
gewissermassen Gegenschall auf der Signalleitung. Diese Störungen sind 
bis zum Unhörbaren zu beseitigen. Das ist aus technischer Sicht sogar 
erstaunlich trivial. Auch ohne eine Regelung, die die Kontersignalstärke 
anpasst und optimiert, bekommt man das sehr gut weg. Ich konnte ein für 
eine andere Anwendung entwickeltes Modul im Bereich Gegenschall fast 
unverändert reinwerfen und betreiben.

Die Erkennung von Hintergrundschall und Echos und das Anlernen von 
regelmäßigen Störtönen ist natürlich komplizierter, aber bei Telefonen 
und Freisprechanlagen im Auto wurde das ja bereis erfolgreich gemacht, 
daher konnte ich diesbezüglich auch auch Vorhandenes zurückgreifen. 
Mithin ist gerade das Vorhandensein von Echos ausreichender Amplitude 
ein Indiz dafür, dass es sich um Störschall aus der Distanz handelt, 
welches ungewollt ins Mikro dringt -> siehe "Hallradius".

Das Grundproblem der Anwendungen ist immer nur die, dass man ausreichend 
Pufferlänge benötigt, um das aktuelle Signal zu sehen und mit Profilen 
matchen zu können. Bei der Sprachsteuerung ist ja eine sofortige 
Reaktion wünschenswert,

Will man wie im vorliegenden Fall, eine Melodie erkennen, müsste man 
festlegen, wie lange man warten darf, um sie sicher zu erkennen. Wenn 
man nach 3 Tönen glaubt, sie erkannt zu haben, würde man wegfiltern und 
eine andere Melodie mit denselben Tönen, die aber anders weitergeht, 
mitlöschen, sprich, die Kompensation fällt ins Negative oder muss 
unterbrochen werden.

In beiden Fällen muss man dann mehrere Sekunden Audiomaterial puffern.

Ich habe hier einen Demonstrator auf dem Nexys liegen, mit dem ich das 
zeigen kann.

von Klaus (feelfree)


Lesenswert?

Jürgen S. schrieb:
> Wie ich schrieb, HABE ich das bereits implementiert

na dann, schicke dem TE doch einfach deine Lösung.

Jokyoky schrieb:
> Platz wäre etwa in Arduino Uno Größe vorhanden.

Bekommt er ja sicher locker unter und die Kosten sind sicher auch mit 
einer Zeitschaltung vergleichbar, die für den TE exakt das gleiche 
leisten würde.

von J. S. (engineer) Benutzerseite


Lesenswert?

Klaus schrieb:
> na dann, schicke dem TE doch einfach deine Lösung.

Ich warte noch auf die Bestellung ...

von Rolf S. (audiorolf)


Lesenswert?

Michael M. schrieb:
> Dann könnte man eine invertierende NF-Stufe dahinter bauen (180°
> phasengedreht) und beide Signale exakt überlagern, damit sie sich
> gegenseitig auslöschen.
Das ist theoretisch möglich, funktioniert in der Praxis aber nur sehr 
beschränkt.

> Mit einer Zeitverzögerung wird der Inverter nach dem Einschalten wieder
> abgeschaltet. Quasi genau dann, wenn die Melodie beendet ist.
Das müsste aber sozusagen, samplegenau arbeiten.

von J. S. (engineer) Benutzerseite


Lesenswert?

>> genau dann, wenn die Melodie beendet ist.
> Das müsste aber sozusagen, samplegenau arbeiten.

... was nicht so schwierig ist. Man kann Korrelationen zwischen zwei 
Signalen auf Subsamples genau realiseren, was aufgrund der 
Abtastratenproblematik oft genug auch nötig ist. In der Bildverarbeitung 
machen wir das auch.

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.