ノイズの多い信号のSNRを計算するにはどうすればよいですか?


14

私は実際にそれを行う方法を理解するのに問題があります

純粋な音声を含むwavファイルと、バックグラウンドノイズ(ホワイトノイズ、群衆ノイズ、吹く風の録音など、さまざまなものになる可能性がある)だけを含む別のaveファイルがあります。これらは、純粋な音声または純粋なノイズのいずれかです。したがって、両方のファイルの対応するサンプル(またはサンプルのフレームの平均)を単純に分割することで、それらからSNR値を取得できると思います。次に、それらを大胆に組み合わせて、ノイズの多い音声ファイルを取得します。このファイルにはまだ同じSNRがあると思います。

次に、このファイルをノイズ除去プログラムに渡し、結果として別のファイルを取得します。この「ノイズ低減」ファイルのSNRを計算するにはどうすればよいですか?

---編集---

ここに投稿されたフォローアップの質問

回答:


8

SNRの一般的な定義は、目的の信号の電力をノイズ電力で除算したものです。希望する信号とノイズ信号を配列として取得したと仮定すると、MatlabでSNRを計算してからノイズ低減を次のように実行できます。

snr_before = mean( signal .^ 2 ) / mean( noise .^ 2 );
snr_before_db = 10 * log10( snr_before ) % in dB

ノイズ低減後、残留ノイズは、必要な信号と実際の信号の差として計算できます。SNRの計算は簡単です。

residual_noise = signal - noise_reduced_signal; 
snr_after = mean( signal .^ 2 ) / mean( residual_noise .^ 2 ); 
snr_after_db = 10 * log10( snr_after )

1
あなたの場合、signalとnoise_reduced_signalは時間調整が必要です。
dspGuru

@dspGuru確かに、ノイズ低減アルゴリズムは時間遅延を導入しないと仮定しました。
DEVE

@DspGuruとDev:これらの場所で、信号全体のvarとmeanを取得する代わりに、音声を確実に含む信号の一部を指定するとどうなりますか?s \ exampleの場合、Matlabでシグナルをsignal(start_speech:end_speech)に置き換えます。これは、シグナルが5秒で、単語間のポーズがあるため
です-user13267

@ user13267どの信号ですか?ノイズリダクションの前後に?一般に、分析する信号が長ければ長いほど、SNRの推定値は良くなります。
DEVE

両方。つまり、私の音声サンプルには短い文章を話すものがあるので、大胆に開くと、波形の高強度と低強度の領域を見ることができます(単語の存在と、単語間の沈黙)。したがって、単語を含むサンプルを選択し、無音を含むサンプルは含めないようにします。
user13267

3

入力側で:

  1. DB1 = 10 * log10(var(noiseSignal))を計算します
  2. DB2 = 10 * log10(var(cleanSpeechSignal))を計算します

SNRは= DB2-DB1です

出力側で:

  1. ノイズ抑制アルゴリズムを介してクリーンな音声信号を送信します。出力Y1を示します。
  2. ノイズ抑制アルゴリズムを使用して、ノイズの多い音声信号を送信します。出力Y2を示します。
  3. Z = Y2-Y1を計算
  4. remainingNoiseDB = 10 * log10(var(Z))
  5. speechDB = 10 * log10(var(Y1))
  6. SNR = speechDB-remainingNoiseDB

ノイズリダクションアルゴリズムにクリーンな音声信号を渡すことは本当に必要ですか?共通の基準点を持つように、音声信号はノイズ低減アルゴリズムの前後で同じであってはなりませんか?
user13267

それは完全にあなたのアルゴリズムに依存します。遅延とフィルタリングにより、出力はクリーンな入力と一致しない可能性があります。
dspGuru

出力(クリーンな音声がノイズリダクションアルゴリズムを通過する場合)は実際には入力と一致しませんが、アルゴリズムによって遅延が発生することはないと確信しています。フォローアップの質問を確認してください(リンクはこの質問に編集されています)。ノイズリダクション前(図の上部)とノイズリダクション後(図の下部)のきれいな音声の波形があります。遅延はありませんが、非常に高い増幅があり、スピーチの一部が除外されています。
user13267
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.