背景: 私は(に言及したiPhoneアプリに取り組んでいる中で 、いくつかの 他 の記事)その1が眠っていると判断しながら呼吸/いびき「に耳を傾ける」「スリープラボ」の前の画面として(睡眠時無呼吸の兆候がある場合テスト)。アプリケーションは、主にいびき/息を検出するために「スペクトル差」を使用し、睡眠ラボの録音(実際には非常にノイズが多い)に対してテストすると、非常にうまく機能します(約0.85--0.90相関)。
問題: ほとんどの「ベッドルーム」ノイズ(ファンなど)をいくつかの手法でフィルタリングし、人間の耳では検出できないS / Nレベルで呼吸を確実に検出できることがよくあります。問題は音声ノイズです。バックグラウンドでテレビやラジオを走らせることは珍しくありません(または単に誰かが遠くで話していることもあります)。また、声のリズムは呼吸/いびきとほぼ一致します。実際、私はこのアプリを介して故作者/ストーリーテラーのビル・ホルムの録音を実行しましたが、それは本質的にリズム、レベルの変動性、および他のいくつかの測定のいびきと区別できませんでした。(少なくとも彼が起きている間は、睡眠時無呼吸がなかったようです。)
ですから、これは少し長めのショット(そしておそらくフォーラムのルールの延長)ですが、私は音声を区別する方法についていくつかのアイデアを探しています。いびきをなんとかフィルタリングする必要はありません(それはいいと思います)が、音声で過度に汚染された「ノイズが多すぎる」サウンドとして拒否する方法が必要なだけです。
何か案は?
公開されたファイル: dropbox.comにいくつかのファイルを配置しました:
最初の曲はかなりランダムなロック(おそらく)音楽で、2番目の曲は故ビルホルムのスピーチの録音です。両方(いびきと区別するために「ノイズ」のサンプルとして使用します)は、信号を難読化するためにノイズと混合されています。(これにより、それらを識別する作業は非常に困難になります。)3番目のファイルは、真に最初の3分の1がほとんど呼吸し、真ん中の3分の1が呼吸/いびきの混合で、最後の3分の1はかなり安定したいびきです。(ボーナスで咳が出ます。)
多くのブラウザではwavファイルのダウンロードが非常に難しくなるため、3つのファイルはすべて「.wav」から「_wav.dat」に名前が変更されました。ダウンロード後、名前を「.wav」に戻すだけです。
更新:エントロピーは私にとって「トリックをやっている」と思っていましたが、それは主に使用しているテストケースの特性であり、あまりにもうまく設計されていないアルゴリズムでした。一般的な場合、エントロピーは私にとってほとんど役に立たない。
その後、1秒間に約8回サンプリングされた(メインFFTサイクルから統計情報を取得して)信号全体の振幅(パワー、スペクトルフラックス、その他のいくつかの測定を試しました)のFFT(いくつかの異なるウィンドウ関数を使用)を計算する手法を試しましたこれは1024/8000秒ごとです)。1024サンプルでは、これは約2分の時間範囲をカバーします。いびき/呼吸対音声/音楽のリズムが遅いためにこのパターンを見ることができることを望んでいました(また、「変動性」問題に対処するより良い方法かもしれません)あちこちにあるパターンの、私が本当にラッチできるものは何もありません。
(詳細:場合によっては、信号振幅のFFTは、約0.2Hzに強いピークと階段高調波を持つ非常に明確なパターンを生成します。しかし、ほとんどの場合、パターンはそれほど明確ではなく、音声と音楽はあまり明確に生成できません性能指数の相関値を計算する方法はあるかもしれませんが、約4次の多項式にカーブフィッティングする必要があり、電話で1秒に1回実行することは実用的ではないようです)
また、スペクトルを分割した5つの個別の「バンド」に対して、同じ平均振幅のFFTを実行しようとしました。バンドは4000-2000、2000-1000、1000-500、および500-0です。最初の4つのバンドのパターンは全体的なパターンとほぼ同じでした(ただし、実際の「目立つ」バンドはなく、より高い周波数帯域ではほとんど無視できるほど小さい信号でしたが)。
バウンティ: 彼がこれまでで最も生産的な提案であったことを考えると、彼は新しいものを何も提供していませんが、ネイサンにバウンティを与えるつもりです。しかし、他の誰かが良いアイデアを思いついたら、他の誰かに喜んで表彰したいと思ういくつかのポイントがあります。