Hintergrund: Ich arbeite an einer iPhone-Anwendung (auf die in mehreren anderen Posts hingewiesen wird ), die während des Schlafens Schnarchen / Atmen "abhört" und feststellt, ob Anzeichen von Schlafapnoe vorliegen (als Vorbild für "Schlaflabor"). testen). Die Anwendung verwendet hauptsächlich "Spektraldifferenzen" zur Erkennung von Schnarchen / Atemzügen und funktioniert recht gut (Korrelation zwischen ca. 0,85 und 0,90), wenn sie mit Aufnahmen aus dem Schlaflabor verglichen wird (die tatsächlich ziemlich laut sind).
Problem: Das meiste "Schlafzimmer" -Geräusch (Ventilatoren usw.) kann ich durch verschiedene Techniken herausfiltern und kann Atmung bei S / N-Pegeln, bei denen das menschliche Ohr sie nicht erkennen kann, oft zuverlässig erkennen. Das Problem ist das Sprachrauschen. Es ist nicht ungewöhnlich, dass ein Fernseher oder ein Radio im Hintergrund läuft (oder einfach jemand in der Ferne spricht), und der Rhythmus der Stimme passt genau zum Atmen / Schnarchen. Tatsächlich habe ich eine Aufnahme des verstorbenen Autors / Geschichtenerzählers Bill Holm über die App abgespielt, und es war im Wesentlichen nicht zu unterscheiden von Schnarchen in Bezug auf Rhythmus, Pegelvariabilität und verschiedenen anderen Maßnahmen. (Obwohl ich sagen kann, dass er anscheinend keine Schlafapnoe hatte, zumindest nicht wach.)
Das ist also ein bisschen langwierig (und wahrscheinlich ein Teil der Forenregeln), aber ich suche nach Ideen, wie man die Stimme unterscheidet. Wir müssen das Schnarchen nicht irgendwie herausfiltern (dachte, das wäre schön), sondern wir müssen nur einen Weg finden, um Geräusche als "zu laut" abzulehnen, die übermäßig mit Sprache verschmutzt sind.
Irgendwelche Ideen?
Veröffentlichte Dateien: Ich habe einige Dateien auf dropbox.com platziert:
Das erste ist ein eher zufälliges Stück Rockmusik (ich denke), und das zweite ist eine Aufnahme des verstorbenen Bill Holm. Beide (die ich als Beispiel für "Rauschen" verwende, um von Schnarchen zu unterscheiden) wurden mit Rauschen gemischt, um das Signal irgendwie zu verschleiern. (Dies erschwert die Identifizierung erheblich.) Bei der dritten Datei handelt es sich um eine zehnminütige Aufzeichnung von Ihrer Person, bei der das erste Drittel hauptsächlich atmet, das mittlere Drittel gemischt atmet / schnarcht und das letzte Drittel ziemlich gleichmäßig schnarcht. (Sie bekommen einen Husten als Bonus.)
Alle drei Dateien wurden von ".wav" in "_wav.dat" umbenannt, da viele Browser das Herunterladen von WAV-Dateien erschweren. Benennen Sie sie nach dem Herunterladen einfach wieder in ".wav" um.
Update: Ich dachte, Entropie würde für mich "den Trick machen", aber es stellte sich heraus, dass es sich hauptsächlich um Besonderheiten der von mir verwendeten Testfälle handelte, sowie um einen Algorithmus, der nicht allzu gut konzipiert war. Im Allgemeinen tut die Entropie sehr wenig für mich.
Anschließend habe ich eine Technik ausprobiert, bei der ich die FFT (unter Verwendung mehrerer verschiedener Fensterfunktionen) der Gesamtsignalgröße (ich habe Leistung, Spektralfluss und mehrere andere Messwerte ausprobiert) berechnet, die ungefähr 8 Mal pro Sekunde abgetastet wurde (wobei die Statistiken aus dem Haupt-FFT-Zyklus entnommen wurden) das ist alle 1024/8000 Sekunden). Bei 1024 Stichproben deckt dies einen Zeitbereich von etwa zwei Minuten ab. Ich hatte gehofft, dass ich aufgrund des langsamen Rhythmus von Schnarchen / Atmen vs. Stimme / Musik Muster darin erkennen kann (und dass es auch eine bessere Möglichkeit ist, das Problem der " Variabilität " anzugehen ), aber es gibt Hinweise Von einem Muster gibt es hier und da nichts, woran ich mich wirklich festhalten kann.
( Weitere Informationen: In einigen Fällen erzeugt die FFT der Signalgröße ein sehr ausgeprägtes Muster mit einer starken Spitze bei etwa 0,2 Hz und Oberschwingungen im Gleichschritt. Das Muster ist jedoch die meiste Zeit nicht annähernd so ausgeprägt, und Stimme und Musik können weniger ausgeprägt sein Versionen eines ähnlichen Musters. Es könnte eine Möglichkeit geben, einen Korrelationswert für eine Gütezahl zu berechnen, aber es scheint, dass eine Kurvenanpassung auf ein Polynom 4. Ordnung erforderlich ist, und dies einmal pro Sekunde in einem Telefon zu tun, erscheint unpraktisch.)
Ich habe auch versucht, die gleiche FFT der durchschnittlichen Amplitude für die 5 einzelnen "Bänder" zu machen, in die ich das Spektrum unterteilt habe. Die Bänder sind 4000-2000, 2000-1000, 1000-500 und 500-0. Das Muster für die ersten 4 Bänder war im Allgemeinen dem Gesamtmuster ähnlich (obwohl es kein echtes "herausragendes" Band gab und in den höheren Frequenzbändern häufig ein verschwindend kleines Signal), aber das 500-0-Band war im Allgemeinen nur zufällig.
Kopfgeld: Ich werde Nathan das Kopfgeld geben, obwohl er nichts Neues angeboten hat, da dies der produktivste Vorschlag war, den es bisher gab. Ich habe noch ein paar Punkte, die ich gerne an andere vergeben würde, wenn sie gute Ideen hätten.