Dies ist eine Fortsetzung einer früheren Frage .
Ich versuche, Atem- und Schnarchgeräusche zu analysieren, und obwohl ich Schnarchen jetzt ziemlich gut erkennen kann, ist das Atmen eine größere Herausforderung.
Ich habe gelernt, dass, wenn ich den analysierten Frequenzbereich (ungefähr 4 kHz, abgetastet bei ungefähr 8 kHz, mit einer Bildgröße von 1024) in ungefähr 5 Unterbereiche aufteile, sehr oft einer der Unterbereiche eine gute Empfindlichkeit (unter Verwendung der spektralen Differenz) aufweist, die vergraben ist im Lärm im Gesamtbereich. Der Trick besteht darin, zu bestimmen, welchem Unterbereich wann "vertraut" werden soll.
Vermutlich würde der "vertrauenswürdige" Unterbereich eine Variabilität mit einer Rate zwischen etwa 2 Hz und 0,05 Hz aufweisen, während sich die "schlechten" Unterbereiche zufälliger verhalten würden, wobei der größte Teil ihrer Variation in kürzeren Intervallen erfolgt.
Ich könnte eine Art Algorithmus zusammenschustern, um die Werte mit einer Auflösung von weniger als einer Sekunde zu glätten und dann die Variabilität über längere Intervalle zu berechnen, aber ich frage mich, ob es für diese Art von Dingen keinen "vordefinierten" Algorithmus gibt - etwas mit vielleicht ein Minimum an Theorie dahinter?
Irgendwelche Vorschläge?
[Anmerkung: Mir ist klar, dass man theoretisch eine FFT verwenden könnte, um diese Informationen zu extrahieren, aber das scheint, als würde man einen Baseballschläger verwenden, um einen Floh zu töten. Vielleicht etwas leichter?]
Hinzugefügt:
In gewisser Weise (um eine Analogie zu verwenden) versuche ich, ein "Basisband" -Signal in einer HF-Übertragung zu erkennen (nur das "HF" sind Audiofrequenzen und das "Basisband" liegt unter 8 Hz). In gewissem Sinne ist "RF" "Spreizspektrum" - die Geräusche, die ich erkennen möchte, erzeugen in der Regel viele Harmonische und / oder haben mehrere separate Frequenzkomponenten. Wenn also ein Band des Spektrums zu verrauscht ist, kann ich wahrscheinlich von einem anderen Gebrauch machen. Das Ziel besteht darin, im Grunde genommen eine Metrik zu bestimmen, die dem SNR für die verschiedenen Frequenzbänder ähnelt, unter der Annahme, dass das meiste "Rauschen"> 2 Hz ist und mein Signal weniger als 2 Hz beträgt.
Ich habe als Eingabe für diesen Algorithmus die Rohamplituden (Summe der FFT-Amplituden bei allen eingeschlossenen Frequenzen) für jedes Band, gemessen in 8-Hz-Intervallen.
(Es sollte beachtet werden, dass, obwohl ich keine formalen SNR-Messungen durchgeführt habe, das Gesamt-SNR über das verarbeitete Spektrum häufig nahe oder unter 1,0 zu liegen scheint - wenn Sie die Klanghüllkurve in einem Werkzeug wie Audacity visuell beobachten, keine Modulation des Die Hüllkurve ist spürbar (obwohl das Ohr Atemgeräusche deutlich erkennen kann). Deshalb müssen Bänder analysiert werden, um solche mit einem anständigen SNR zu finden.)