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.)
quelle
Antworten:
Daniel,
Wenn Sie Ihre Frage erneut lesen, scheint es, dass das, was ich als "Gabor-Bandbreite" bezeichnet habe, in diesem Fall für Sie nützlich sein könnte, wenn Sie versuchen, die "spektrale Variabilität" zu messen. (Dilip gab eine gute Antwort auf meine Frage Frage zu Spektralmomenten hier).
Als ich es weiter studierte, scheint die Gabor-Bandbreite wirklich nur ein Maß dafür zu sein, wie weit das Spektrum von seinem Mittelwert entfernt ist. (Daher die Manipulation von Momenten).
Schauen Sie sich um und sehen Sie, was Sie denken.
quelle
Haben Sie den Spektralfluss ausprobiert? Hier gibt es eine MATLAB-Implementierung: http://blog.weisu.org/2009/12/spectral-flux-sf-in-audio.html
quelle
Was Sie brauchen, scheint viel größer als ein Floh. Möglicherweise müssen Sie also in die entgegengesetzte Richtung gehen und mehr als nur eine FFT ausführen. Vielleicht Niederfrequenz-Cepstrum- oder Cepstral-Analyse, um Ihre "Exiter" -Frequenz zu finden.
quelle
Folgendes schlage ich vor:
Für jedes n:
Wählen Sie das Teilband mit der höchsten Autokorrelationsspitze (= je "pechiger").
Peakedness Maßnahmen zu betrachten:
Diese Art von Metriken wird zB verwendet, um stimmhafte / stimmlose Sprache zu unterscheiden.
quelle