Optische Klingel kompliziert realisiert

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
FragDenPinguin
Beiträge: 34
Registriert: 06.01.2017 05:41:47

Optische Klingel kompliziert realisiert

Beitrag von FragDenPinguin » 10.01.2017 21:08:08

Ich möchte folgendes Projekt realisieren, weiß aber noch nicht genau, wie man das am besten anpackt:

Übers Netzwerk bekomme ich das Audiosignal eines Mikrofons per mp3-Stream. Dieses nimmt meinen Flur daheim auf. Da ich gerne mit Kopfhörern arbeite, verpasse ich schon einmal, wenn es klingelt. Deshalb möchte ich auf dem Bildschirm eine Benachrichtigung bekommen, wenn das Mikro etwas hört, das dem Klingelton meiner Haustür ähnelt. Meine Idee dazu war eine Fourier-Analyse des Mikro-Signals und ein Vergleich mit dem Frequenzspektrum der Klingel. Außerdem hat das Signal zwei deutliche Peaks (Ding-Dong), die aber zeitlich verschieden weit auseinander liegen können.

Es gibt sicherlich einfachere Wege, das zu lösen, aber mich interessiert gerade der beschriebene Weg - also das Erkennen eines Audiomusters im mp3-Stream. Hat jemand eine Idee?

Jana66
Beiträge: 1941
Registriert: 03.02.2016 12:41:11

Re: Optische Klingel kompliziert realisiert

Beitrag von Jana66 » 10.01.2017 21:27:05

Kreuzkorrelation zwischen vorher empfangenem und gespeichertem und aktuell empfangenem Klingelton?
https://de.m.wikipedia.org/wiki/Kreuzkorrelation
Faltung geht auch: https://de.m.wikipedia.org/wiki/Faltung_(Mathematik)
Digital ist es sehr einfach zu realisieren, Integrale werden zu Summen von Produkten (Amplitude x Abtastzeit)

2 FFTs (gespeichertes Signal und gerade empfangenes Signal) statistisch vergleichen? Hast dann ja wieder 2 Folgen, welche Statistik für Ähnlichkeit? Bist du wahrscheinlich wieder bei obigen Operationen angelangt.
https://de.m.wikipedia.org/wiki/Schnell ... sformation

Gibt bestimmt irgendwo fertige Scripte für Kreuzkorrelation, Faltung und FFT.
Zuletzt geändert von Jana66 am 10.01.2017 21:41:51, insgesamt 1-mal geändert.
Wenn keiner was sagt, wird sich nichts ändern. Wenn alle nur reden ebenfalls nicht.

FragDenPinguin
Beiträge: 34
Registriert: 06.01.2017 05:41:47

Re: Optische Klingel kompliziert realisiert

Beitrag von FragDenPinguin » 10.01.2017 21:41:37

Das klingt auf jeden Fall sehr interessant. :THX:

Kann die Kreuzkorrelation denn damit umgehen, dass manche Typen "Ding-Dong" klingeln und manche "Ding ............................. Dong"?

Jana66
Beiträge: 1941
Registriert: 03.02.2016 12:41:11

Re: Optische Klingel kompliziert realisiert

Beitrag von Jana66 » 10.01.2017 21:49:10

Nu ja. Musst du Ding und Dong einzeln abspeichern und das Empfangssignal gegen Ding und Dong korrelieren. Dann werden Ding und Dong einzeln erkannt. Ein Ding oder ein Dong alleine reicht sicher auch schon?!

Ding-Dong und Ding-------------Dong sind zwar unterschiedliche Signale, allerdings beide statistisch sehr ähnlich und beide viiiiel unterschiedlicher gegenüber Nomalgeraeuschen. Sollte also auch klappen.

Die Faltung oder Kreuzkorrelation muss ständig laufen, das Mikrofonsignal mit dem gespeicherten Signal korrelieren. (Oder eben mit 2 gespeicherten.)
Physisch aufbauen musst du gar nichts, das Mikro deines Laptops sollte genügen. Du nutzt das gleichermaßen zur Aufnahme/Abspeicherung des Klingeltons wie für den ständige Lauschen darauf.

mp3-Dateien sind komprimiert. Deshalb bitte nicht für statistische Auswertungen (Korrelation, Faltung) nutzen.
Vorschlag:
Nutze zum Test erst mal ein grafisches, numerisches Mathematikprogramm, Debianoctave beispielsweise und probiere die Operationen aus, lasse dir Ergebnisse anzeigen. Dateien als ganz einfache quantifizierte Amplitudenwerte (mit Abtastzeit dazwischen). Gibt also eine einzige Zahlenfolge pro Signal. Die Abtastfrequenz muss mindestens der doppelten, höchsten Signalfrequenz entsprechen. Ich würde > 40 kHz nutzen, der Mensch hört bis max 16..20 kHz, deine Klingel sollte weit darunter liegen. Abtastzeit demzufolge < 1/40KHz = 25 Mikrosekunden.

Vereinfachung: Taube nutzen Klingeln mit Blitzlicht für ein paar Minuten auch nach kurzem Klingeln, bei offener Tür sieht man die Refexionen in mehreren Räumen.
Wenn keiner was sagt, wird sich nichts ändern. Wenn alle nur reden ebenfalls nicht.

Benutzeravatar
CH777
Beiträge: 1079
Registriert: 27.05.2008 16:37:17

Re: Optische Klingel kompliziert realisiert

Beitrag von CH777 » 11.01.2017 09:31:40

Gibt es denn außer dem Klingeln noch andere laute Geräusche in deinem Flur? Falls nicht kannst du dir die mühselige Erkennung sparen und die Benahrichtigung einfach durch den Lautstärke-Peak triggern, das geht bestimmt viel einfacher.

Jana66
Beiträge: 1941
Registriert: 03.02.2016 12:41:11

Re: Optische Klingel kompliziert realisiert

Beitrag von Jana66 » 11.01.2017 09:38:36

Husten darf man dann aber nicht. Oder muss filtern und dann Peak-Auswertung. Da kann man es auch gleich richtig tun.
Gibt natürlich auch Funk-Klingeln. Kann man bestimmt mehrere Empfänger nutzen, an einen "Glühobst" ranbasteln. Wäre aber zu einfach ... . :mrgreen:
Zuletzt geändert von Jana66 am 11.01.2017 09:40:42, insgesamt 1-mal geändert.
Wenn keiner was sagt, wird sich nichts ändern. Wenn alle nur reden ebenfalls nicht.

MSfree
Beiträge: 2322
Registriert: 25.09.2007 19:59:30

Re: Optische Klingel kompliziert realisiert

Beitrag von MSfree » 11.01.2017 09:40:38

Jana66 hat geschrieben:Ding-Dong und Ding-------------Dong sind zwar unterschiedliche Signale
Es würde reichen, nur das "Dong" zu korrelieren.
mp3-Dateien sind komprimiert. Deshalb bitte nicht für statistische Auswertungen (Korrelation, Faltung) nutzen.
Das ist kein Problem. Einerseits ist MP3 bereits das Ergebnis der Fourier Transformation, andererseits kann man bedenkenlos das dekomprimierte MP3 mit dem statischen Mustersignal korrelieren. Der Datenverlust durch MP3 hat auf das Korrelationsergebnis so gut wie keinen Einfluß.

Jana66
Beiträge: 1941
Registriert: 03.02.2016 12:41:11

Re: Optische Klingel kompliziert realisiert

Beitrag von Jana66 » 11.01.2017 09:45:53

MSfree hat geschrieben:Es würde reichen, nur das "Dong" zu korrelieren.
Habe ich geschrieben, das einzeln reicht. :wink:
Du hast aber Recht, das technisch bedingte, immer gleiche Dongggg wäre am Besten. Ansonsten Ding und Diiiiiing. :mrgreen:

mp3 dekodiert geht natürlich, verkompliziert die Sache, da kann er auch nur das Klingelsignal unkomprimiert speichern und mit dem aktuell empfangenem, unkomprimierten Mikrofonsignal korrelieren. Die ständige und zyklische ("Zeitfenster") Aufzeichnung dessen muss ja nicht lang und damit speicherintensiv sein. Reichliche Klingeltonzeit mit Nachhall sollte genügen.
Wenn keiner was sagt, wird sich nichts ändern. Wenn alle nur reden ebenfalls nicht.

MSfree
Beiträge: 2322
Registriert: 25.09.2007 19:59:30

Re: Optische Klingel kompliziert realisiert

Beitrag von MSfree » 11.01.2017 10:21:50

Jana66 hat geschrieben:mp3 dekodiert geht natürlich, verkompliziert die Sache, da kann er auch nur das Klingelsignal unkomprimiert speichern und mit dem aktuell empfangenem, unkomprimierten Mikrofonsignal korrelieren.
Natürlich kann man sich die "Formatwandlung" in MP3 auch sparen, dann ist die Datenmenge der Soundsamples halt größer. Man wird die Samples aber wohl kaum aufheben und speichern, so daß das eigentlich unerheblich ist.

Man braucht auch nicht ständig ein Soundsignal zum Korrelator zu schicken, denn das würde die CPU letzlich doch ziemlich auslasten. Wenn man das von einem Schwellwert abhängig macht, also eine bestimmte Mindestlautstärke am Mikrofon anliegen muß, bevor man das Signal zum Korrelieren weiterreicht, spart man sich jede Menge Rechenaufwand.

FragDenPinguin
Beiträge: 34
Registriert: 06.01.2017 05:41:47

Re: Optische Klingel kompliziert realisiert

Beitrag von FragDenPinguin » 11.01.2017 12:40:51

Danke für eure Anregungen! :)

Dass mp3 genutzt wird hat den Hintergrund, dass die Netzwerkanbindung zum Mikrofon eine ziemliche "Bambusleitung" ist.

PS: Sehe ich das eigentlich richtig, dass bei der Kreuzkorrelation streng genommen in jedem Zeitschritt eine neue zeitverschobene Faltung mit dem Referenzsignal gestartet wird?

MSfree
Beiträge: 2322
Registriert: 25.09.2007 19:59:30

Re: Optische Klingel kompliziert realisiert

Beitrag von MSfree » 11.01.2017 13:35:41

FragDenPinguin hat geschrieben:Dass mp3 genutzt wird hat den Hintergrund, dass die Netzwerkanbindung zum Mikrofon eine ziemliche "Bambusleitung" ist.
Auch WAV ohne Kompression kann man klein halten, indem man z.B. nur mit 11050Hz, nur ein Kanal und nur mit 8Bit/Sample abtastet. Das ergibt eine Datenbandbreite von 11050 Byte/s (128kBit MP3 ergibt immerhin 16000Byte/s). Zur Korrelation mit einem Türgong reicht die genannte Tonqualität locker aus.

Jana66
Beiträge: 1941
Registriert: 03.02.2016 12:41:11

Re: Optische Klingel kompliziert realisiert

Beitrag von Jana66 » 11.01.2017 13:38:23

FragDenPinguin hat geschrieben:Sehe ich das eigentlich richtig, dass bei der Kreuzkorrelation streng genommen in jedem Zeitschritt eine neue zeitverschobene Faltung mit dem Referenzsignal gestartet wird?
Faltung und Kreuzkorrelation sind sehr ähnlich. Insgesamt bezeichnet man die gesamte Operation/Funktion damit, nicht nur einen Schritt.

Schau mal hier, gut erklärt:
https://www.google.de/url?sa=t&source=w ... rQzg4VhOEw
https://www.google.de/search?q=faltung+ ... F-8#xxri=3

Guck die Diagramme an und vergiss die Integrale. Digital brauchst du sie eh nicht, auf Grundrechenarten rueckfuehrbar wio oben gesagt. Im oben verlinkten Wikipedia (Faltung) ist eine Animation für Faltung von 2 Rechteckfunktionen. Das Ergebnis ist eine Dreieckfunktion. Maximum logischerweise bei vollständiger Gleichheit. Du wirst bei deiner Klingel einen Schwellwert für eine optische Meldung etwas unterhalb Maximum festlegen müssen. Ein eindeutiges Maximum wird auch erreicht bei "statistischer Aehnlichkeit" der gespeicherten Mikrofonaufnahme der Klingel mit der aktuellen ("gefensterten") Aufnahme. Wenn es klingelt, wird Schwellwert überschritten und Meldung.
Zuletzt geändert von Jana66 am 11.01.2017 13:48:12, insgesamt 1-mal geändert.
Wenn keiner was sagt, wird sich nichts ändern. Wenn alle nur reden ebenfalls nicht.

Benutzeravatar
niemand
Beiträge: 9667
Registriert: 18.07.2004 16:43:29

Re: Optische Klingel kompliziert realisiert

Beitrag von niemand » 11.01.2017 13:47:05

Gerade Gongs haben doch eine definierte Tonhöhe. Ich würde eine der Libs für Stimmsoftware hernehmen und das auswerten. Da es zwei verschiedene, fixe Töne sind, sollte sich das ziemlich sicher erkennen lassen.

Wenn ich sowas bauen wollte, würde ich das elektrische Signal abgreifen, btw. - weniger Aufwand und noch eindeutiger.
••• Hinweis: Von diesem User werden auch Sarkasmus und Ironie verarbeitet. Spuren davon können daher in diesem Beitrag enthalten sein •••
T2IgaWNoIHdhcyB6dSB2ZXJiZXJnZW4gaGFiZT8gTmF0w7xybGljaCBoYWJlIGljaCB3YXMgenUgdmVyYmVyZ2VuIOKAkyBpY2ggYmluIHNjaGxpZcOfbGljaCBlaW4gTWVuc2NoISAK

Jana66
Beiträge: 1941
Registriert: 03.02.2016 12:41:11

Re: Optische Klingel kompliziert realisiert

Beitrag von Jana66 » 11.01.2017 13:49:43

Ich hatte gestern mal an Spracherkennungssoftware gedacht. Die ist doch anlernbar? Auch mit Klingelton? :mrgreen:
Wie weiterverarbeiten ist mir dann jedoch nicht mehr eingefallen ...
Wenn keiner was sagt, wird sich nichts ändern. Wenn alle nur reden ebenfalls nicht.

FragDenPinguin
Beiträge: 34
Registriert: 06.01.2017 05:41:47

Re: Optische Klingel kompliziert realisiert

Beitrag von FragDenPinguin » 11.01.2017 14:15:16

Jana66 hat geschrieben:
FragDenPinguin hat geschrieben:Sehe ich das eigentlich richtig, dass bei der Kreuzkorrelation streng genommen in jedem Zeitschritt eine neue zeitverschobene Faltung mit dem Referenzsignal gestartet wird?
Faltung und Kreuzkorrelation sind sehr ähnlich. Insgesamt bezeichnet man die gesamte Operation/Funktion damit, nicht nur einen Schritt.

Schau mal hier, gut erklärt:
https://www.google.de/url?sa=t&source=w ... rQzg4VhOEw
https://www.google.de/search?q=faltung+ ... F-8#xxri=3
Ok, danke für die Literatur. Ohne weitere Vereinfachungen müsste ich dann also jedesmal, wenn aus dem Stream ein neues Sample eintrudelt, eine neue Summe aus dem Produkt zwischen den Werten von gehörtem und Referenzsignal berechnen? Also jetzt die Kontrolle des Lautstärkepegels etc. nicht inbegriffen.
MSfree hat geschrieben: Auch WAV ohne Kompression kann man klein halten, indem man z.B. nur mit 11050Hz, nur ein Kanal und nur mit 8Bit/Sample abtastet. Das ergibt eine Datenbandbreite von 11050 Byte/s (128kBit MP3 ergibt immerhin 16000Byte/s). Zur Korrelation mit einem Türgong reicht die genannte Tonqualität locker aus.
Ich nutze momentan mp3 mit 22.1kHz/16Bit, das mit mpg123 on-the-fly dekomprimiert wird. Ergibt etwa 6% CPU-Auslastung.und 8 kByte/s auf dem Netzwerk. Wenn es da Probleme gibt, werde ich später mal mit den Formaten experimentieren.
Zuletzt geändert von FragDenPinguin am 11.01.2017 15:45:12, insgesamt 2-mal geändert.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast