録音中の信号クリッピングを検出する良い方法は何ですか?


32

録音が行われた場合、クリッピングが発生したかどうかを検出する必要があります。

いずれかのサンプルが最大サンプル値に達した場合、クリッピングがあったと安全に結論付けることができますか、または最大レベルで一連の後続のサンプルを検索する必要がありますか?

記録は、16または24ビットA / D変換器から採取することができ、範囲ポイント値フローティングに変換される。この変換が2 151またはによる除算の形式をとる場合、おそらく負のピークは-1よりやや低くなり、値が-1のサンプルはクリップされませんか?1 ... 121512231

明らかに、クリッピング検出アルゴリズムを無効にするための信号をいつでも作成できますが、音声、音楽、正弦波、ピンク/ホワイトノイズの録音を見ています。


8
クリッピングレベルは常にデジタル最大値ではないことに注意してください。アナログ回路(またはADCのアナログ側)のクリッピングレベルがデジタル最大よりもわずかに低い場合、早期にクリップします。アナログでクリップしてから何らかのフィルタリングを通過すると、直線にさえなりません。どのシナリオを検出する必要がありますか?
エンドリス

1
録音はPCサウンドデバイス(通常はUSBで接続)で行われます。ほとんどは、スイープまたはMLS刺激に対する応答であり、室内インパルス応答の計算に使用されます。ハードウェアを制御していないため、刺激出力でクリッピングが発生する可能性もあります。以前は考えていませんでしたが、考えてくれてうれしいです。
ハン

回答:


30

私はヨーダのように答えをタイプしている最中でした。彼はおそらく最も信頼できる人ですが、別のソリューションを提案しますので、いくつかの選択肢があります。


信号のヒストグラムを取得すると、信号の種類に応じて、ベルや三角形のような形状になります。クリーンな信号はこのパターンに従う傾向があります。多くのレコーディングスタジオは、「ラウドネス」エフェクトを追加して、上部付近に小さな隆起を生じさせますが、それでも多少滑らかに見えます。メジャーミュージシャンの本物の歌の例を次に示します。

ヒストグラム

ヨーダが彼の答えで出した信号のヒストグラムは次のとおりです。

クリッピングのないヒストグラム

そして今、彼らがクリッピングされている場合:

クリッピングのあるヒストグラム

このメソッドは時々だまされる可能性がありますが、FFTメソッドが機能していないか、環境に対して計算が多すぎる状況では、少なくともツールバッグに入れる必要があります。


2
それはクレイジーで素晴らしい影響です。とても興味深い。
-Kortuk

この方法を提案してくれてうれしいです。私は自分でそれを含めるべきだった...
PearsonArtPhoto

これが具体的に言うのは、これが最も実装可能な方法だからです。これは、指定された他のオプションの適用された形式ですが、これは「エラー」シグナルがはるかに明確に見えるようです。
-Kortuk

1
同様に、最初に信号の絶対値を取得し、より滑らかな片側ヒストグラムを取得する可能性があります
エンドリス

私の指でこれを試してみたいとかゆみがあります。ありがとう。
ハン

20

短い録音を扱う場合の最も簡単な答えは、それを聞いて、再生中の「ポップ」(短いスパイク音)を検出することです。ただし、より堅牢なソリューションは、録音の周波数スペクトルを分析することです。

信号があるしきい値でクリップされると、クリップされた領域の方形波に局所的に似ていることを思い出してください。これにより、元々存在しなかった高周波数が周波数スペクトルに導入されます。信号が帯域制限され(ほとんどの実世界の信号が制限されている)、ナイキストレートをはるかに超えてサンプリングしている場合、これは日として非常に明確です。

これを示すMATLABの短い例を次に示します。ここでは、持続時間1秒の帯域制限信号を作成し、1000Hzでサンプリングしてから、その間にクリップします±0.8(下図の上のプロットを参照)

time = 0:0.001:1;
cleanSignal = sin(2*pi*75*time).*chirp(time,50,1,200);
clippedSignal = min(abs(cleanSignal),0.8).*sign(cleanSignal);

ここに画像の説明を入力してください

クリッピングされていない元の波形の周波数スペクトルはきれいで、帯域幅の外側(左下)でゼロになりますが、クリッピングされた信号では、スペクトルの一般的な軽度の歪み(クリッピングされた場合に予想される)重要なのは、信号の帯域幅外のスペクトルにおける高調波/スパイク/非ゼロの寄与です(右下)。

機器を自分で設計し、しきい値の値を正確に知っていない限り、値を見てクリッピングを検出することは一般に正確ではないため、これは一般に優れたアプローチです。


1
私の信号の一部(特にMLS)はナイキスト周波数まで上がります。したがって、この方法はおそらく私には必ずしも適用できるとは限りません。
ハン

@yodaスペクトルが手元にあるとき、あなたが示したようにスペクトルは「汚れている」とどのように見分けますか?どのテストを実行できますか?
スペイシー

9

これの少しは、記録の方法に依存します。コンバータを1つだけ使用しているように聞こえますが、これにより物事が多少簡単になります。

あるしきい値を超えるもの、特に互いに隣接する複数のポイントを探す必要があります。通常、A / Dコンバーターは、非常に正確にテストしない限り、実際には最大値を読み取らないため、最大値が考えられるよりも低い可能性があることに注意してください。

あなたのパラメータを考えると、.98以上または-.98以下の連続信号を探して、最適なしきい値を決定するために少し調整します(.9以下にはしません)。1つを最大で検出し、もう1つを.8などの近くで検出するのが賢明かもしれません。

1つの特定の測定値を無視する理由は、信号とはまったく関係のないスパイクが発生するのが一般的だからです。既知の良好なA / Dコンバーターを1つ使用している場合、これは削減されます。検出器の配列または画像を使用している場合、検出器の一部が不良で、頻繁にクリッピングされる可能性があります。


ここで非常に実用的なアドバイス。@Kellenjbのアプローチと合わせて、これは実装に取り​​組むのに十分なはずです。
ハン

3

MLS(最大長シーケンス)は、クリッピングを分析するのに特に注意が必要です。クレストファクター(=ピーク/ rms)は1に非常に近く、正弦波よりも3 dB小さくなっています。多くのD / Aコンバーターは、最悪の場合として正弦波を取るように設計されており、最大振幅で再生されるMLSは、D / Aの出力補間回路を簡単にクリップできます。

次の問題は、クリップされたMLSがクリップされていないMLSとほとんど同じに見えることです。これは、振幅がそもそもほぼすべて+ピークであるためです。また、MLSのPDFは単に端にある2つの大きなピークであるため、PDF分析は機能しません。

一般的な室内インパルス応答測定では、最も可能性の高いクリッピングポイントは、実際にはD / A、アンプ、またはスピーカーです。部屋を通過すると、MLSのように見えなくなるため、上記の方法でクリッピングを評価するのが簡単になります。

ほとんどすべての音響測定では、ノイズフロアは、A / Dではなく、マイクの自己ノイズまたはバックグラウンドノイズによって決定されます。したがって、A / Dへの入力ゲインを最適化することはあまり重要ではなく、クリッピング(10dB程度)の前に十分なヘッドルームを残しても問題ありません。

通常、さまざまな励起レベルで測定し、測定のSNRを確認することをお勧めします。低レベルでは、音響バックグラウンドノイズが支配的であり、高レベルでは、何かが制限、圧縮、またはクリップされます。適切な測定を行うための秘Theは、間に適切な場所を見つけることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.