これは前の質問の続きです。
私は呼吸といびきの音を分析しようとしています。今はいびきをかなりうまく検出できていますが、呼吸はより大きな課題です。
分析した周波数範囲(約4KHz、フレームサイズ1024で約8KHzでサンプリング)を約5つのサブレンジに分割すると、サブレンジの1つが(スペクトル差を使用して)良好な感度を示すことがよくあります。全体の範囲でノイズ。秘訣は、どの部分範囲をいつ「信頼」するかを決定することです。
おそらく「信頼できる」サブレンジは約2Hzと0.05Hzの間のレートで変動性を示しますが、「悪い」サブレンジはよりランダムに振る舞い、それらの変動のほとんどは短い間隔です。
ある種のアルゴリズムを組み合わせて、1秒未満の解像度で値を平滑化し、より長い間隔で変動性を計算することもできますが、この種の「缶詰」アルゴリズムはないのでしょうか。その背後にある理論の小片?
助言がありますか?
[注:理論的には、FFTを使用してこの情報を抽出できることは承知していますが、野球のバットを使ってノミを殺しているようです。多分もう少し軽量なものでしょうか?]
追加:
ある意味で(類推を使用して)、RF送信で「ベースバンド」信号を検出しようとしています(「RF」のみがオーディオ周波数であり、「ベースバンド」は8Hz未満です)。そして、ある意味では、「RF」は「スペクトラム拡散」です。検出したい音は、多くの高調波を生成したり、複数の周波数成分を分離したりする傾向があるため、スペクトルの1つの帯域にノイズが多すぎると、おそらく別のものを利用してください。ほとんどの「ノイズ」が2Hzを超え、信号が2Hz未満であるという前提で、さまざまな周波数帯域のSNRに似たメトリックを基本的に決定することが目標です。
このアルゴリズムへの入力として、8Hz間隔で測定された各帯域の生の振幅(含まれるすべての周波数でのFFT振幅の合計)があります。
(私は正式なSNR測定を行っていませんが、処理されたスペクトル全体のSNRはしばしば1.0に近いかそれ以下に見えることに注意してください-Audacityなどのツールでサウンドエンベロープを視覚的に観察すると、エンベロープは目立ちます(耳が呼吸音を明確に識別できる場合でも)。このため、バンドを分析してSNRが適切なものを見つける必要があります。