信号があるかどうか(信号がノイズのように見える場合)はどのようにしてわかりますか?


11

これがまたいびき検出器です。

何かがあったときに信号を検出するのが得意です。壁をはがしているいびきから、録音では聞こえない呼吸まで追跡できます。問題は、信号がいつ検出可能なレベルを下回っており、アプリが「物事を聞いている」だけなのかわからないことです。そして、残念なことに、いびき/呼吸はしばしば不規則であり、単純な自己相関または同様のインターバルタイミングスキームがあまり役に立たないようです。(実際には、場合によっては、呼吸よりもノイズがより規則的である可能性があります。)

それで、信号がないときに理解するために私が見逃しているトリックはありますか?「シグナル」はもともと非常にノイズのようなものであることを考えると、私はここで難しい場所に反対しているようです。

(そしてこれは私が抱えている別の問題に関連している可能性があります:不思議なことに、かなり大きな音量でも信号レベルを正確に(または概算で)測定できません。レベル情報の種類が失われます。再構成するためのいくつかのトリックを探しています。)

基本的なテクニック

(依田用)

オーディオ信号はサンプリングされ(通常、さまざまな理由で8000Hzで)、1024ブロックでFFTされます。(私の実験では、ハミングフィルターとオーバーラップブロックはほとんど影響がないようですが、後で再検討する場合があります)。

FFTは「バンド」(現在は5、ローエンドでより詳細に配置するためにサイズがわずかに歪んでいる)に分割され、各バンドの「スペクトル差」とレベルが合計されます。ピーク制限値の長期平均が「しきい値」として使用され、さらにバイアス調整を使用して、約20%の「しきい値超過」率を維持します。

各「しきい値を超える」値には1の重みが与えられます(しきい値未満には0の重みが与えられます)が、その重みはバンドの見かけの「変動性」(約2Hzで)によって調整され、バンドにより多くの重みを与えますより明白な信号を運びます。

バンドの重みが合計され、後続のブロックの合計された重みが約1秒にわたって合計されて、実行中の「スコア」が生成されます。これは、繰り返し平均しきい値(およびいくつかのヒューリスティック)と比較され、いびきの開始/オフセットを検出します。

更新

突然、アルゴリズムが(信号レベルの問題ごとに)一定レベルの信号を維持する場合、SNRを効果的に測定する方法は、信号がないときにノイズを測定することです。

便宜上、いびきは断続的であり、その間にたくさんの「死んだ空気」が存在します。そして、いびきのエンベロープをすでに検出しています。したがって、エンベロープの外側(いびきの終わりと次のいびきの始まりの間)の外側は、おそらくノイズです。これは(ある程度の正確さ/再現性で)測定できます。(もちろん、中途半端なアルゴリズムを思いつくのに3回の試行が必要でした-現実が理論と一致することは決してありません。)

まだ完全な答えは出ていませんが、進歩しました。

(上記の手法でSNRのかなり良いプロキシが得られますが、実際の信号レベルを推定するのにまだ問題があります。私の「相対レベル」の表示は、かろうじて聞こえる息の場合はスケールから外れ、ウィンドウのガラガラの場合はまあまあです。絶対レベルのプロキシが必要です。)


「これはまた、いびき検出器です」—以前の質問(おそらく詳細に説明したと思われます)にリンクしてください。または、この質問に検出器の詳細を追加してください。
Lorem Ipsum

@yoda-dsp.stackexchange.com/ questions / 450 / dsp.stackexchange.com / questions/ 1292 / およびdsp.stackexchange.com/questions/1395/…
ダニエルRヒックス

回答:


5

これまでのところ、音声に強い周期的なパターンが存在することにより、いびきを特定しているようです。同じプロパティを持つ他のソースがあるかもしれないと私に言ったら、いびきのより具体的な信号のプロパティに移って焦点を当てる時が来ました。録音した音そのものの音色をもっと正確に調べることをお勧めします。人間のリスナーがいびきを呼吸から遠ざけることができるとすれば、従来のオーディオ信号分類アプローチに頼ることができます。MFCCやオーディオデータの変動パターンなどの機能を計算し、ベイジアン分類器(またはより高度なもの)をトレーニングして、いびきと呼吸を区別します。

また、トピックに関する文献を確認するときかもしれません...たとえば、私はこれを見つけました:http : //web.itu.edu.tr/kamasak/pubs/pdf/pm7_8_007.pdf


問題の1つは、音の性質が個人ごとに大きく異なり、夜の間に1人の個人でも変化することです。しかし、手がかりをありがとう-私はそれらを調べます。
ダニエルRヒックス

トレーニングセットが十分に大きい場合でも、機械学習手法を使用すればこれが可能である可能性があります。
ピシェネット2012

50を超えるデータセットがあります。残念ながら、あるセットで完全に機能するアルゴリズムは、次のセットでは惨めに失敗します。テレビがバックグラウンドで動作している場合や、空調機が鳴っている場合もあります。被験者は姿勢を変え、いびきの性質を完全に変えることができます。ある種のセルフチューニング方式が明らかに必要です。
ダニエルRヒックス

分類にどの機能を使用していますか?
ピシェネット

主に「スペクトル差」(「スペクトルフラックス」とも呼ばれます)は、「開始」と「オフセット」を検出します。しかし、私の現在のスキームでは、スペクトルをバンドに分割し、そのバンドの見かけの信号強度に基づいて各バンドを「重み付け」します(これは、約1/2 Hzで発生するスペクトル差の変動量によって判断されます)。これは、たとえ大きなノイズがあっても、ボリューム範囲全体にわたって呼吸/いびきを検出するためにうまく機能しますが、実際のボリュームのすべての表示を効果的に失います。また、ノイズの問題により、同時に合計サウンドレベルを確認するだけでは機能しません。
ダニエルRヒックス

0

固定トレーニングセットに調整するのではなく、現在の対象、睡眠段階、およびオーディオ環境に適応できる動的分類子を構築する必要がある場合があります。


それが私が考えていることです。
ダニエルRヒックス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.