2009-08-17 1 views
3

オーディオストリームに存在する静的またはノイズの量を定性的に把握しようとしています。ストリームの通常の内容は音声または音楽です。オーディオノイズレベルを測定する

私はサンプルのSTDDEVを取ってexperiementingてきた、そしてそれは、音声対空のチャネルノイズの存在に私にいくつかのハンドルを与えるんが

(すなわち。高いSTDDEVは、通常、音声や音楽を示します)他の誰かがこれについていくつかの指針を持っているのだろうかと思っていた。

答えて

3

ピーク値で答えが得られませんか?優れたADCからの信号を見ている場合は、周囲のレベルは1秒または10秒のカウントでなければなりませんが、音声または音楽は数千に上がります。この戦略が機能しないような自動ゲインコントロールがありますか?

さらに複雑なものが必要な場合は、ピーク対RMS比が単純にRMSレベル(RMS = stddev)よりも信頼性が高くなる可能性があります。純粋なノイズは約3〜5の比を有し、シヌソイドは例えば1.4のピーク対RMS比を有する。しかし、信号のspectrumを見ることでより多くの差別を得ることができます。スタティックは通常、スペクトル的に滑らかであるかフラットであり、一方、音声および音楽はスペクトル的に構造化される。フーリエ変換は、あなたが探しているものかもしれません。 FFT機能はすぐにフーリエ変換を計算しながら、

Sx = fft(x .* hann(length(x), 'periodic')) 

HANN機能は、スペクトル漏れを低減するためにHannウィンドウを適用します。含まれている信号xと仮定すると、データの0.5秒の価値が言う、ここではいくつかのMATLABコードです。今あなたはいくつかの選択肢を持っています。あなたは、信号xは、静的または音声/音楽で構成されているかどうかを判断したい場合は、スペクトルのRMS比にピークを取る:

pk2rms = max(abs(Sx))/sqrt(sum(abs(Sx).^2)/length(Sx)) 

私は純粋な静的、3-周りRMS比にピークを持っていることを期待したいです5(もう一度)、音声/音楽は少なくとも1桁以上高くなります。これは、純粋な白色雑音が時間および周波数領域において同じ「構造」を有するという事実を利用する。あなたは騒音レベルの数値推定値を取得したい場合は

、あなたは平均的な使用して、時間をかけてのSxで電力を計算することができます。時間が経つにつれて

Gxx = ((k-1)*Gxx + Sx.*conj(Sx))/k 

を、GXXのピークが来て、行くべき、ノイズフロアに対応する一定の最小値が表示されます。一般に、音声スペクトルはdB(対数垂直)スケールで見ることが容易です。

いくつかの注意点:
1. xの長さは0.5秒ですが、最適な値は何か分かりません。短すぎる値を選択すると、xはあまり構造を持たなくなります。その場合、信号のDC成分は多くのエネルギーを有することになる。 DCに対応するSxのビンを最初に投げ出すならば、ピークからRMSのディスクリミネータを使用することができます。
2. kの値がどれくらい良いかわかりませんが、その式はexponential averagingに相当します。おそらくkで試して最適な値を調べることができます。これは短いxでうまくいくかもしれません。

0

ノイズにはさまざまな種類があります。白、ピンク、茶色。騒音は多くの場所から来ることができます。 60ヘルツのノイズや信号ですか?

ホワイトノイズについては、fftを見て、最も低い値を見つけてノイズフロアを確認します。