ピーク制限/オーディオ圧縮式が必要


9

ピークを制限するためにオーディオ波形を効果的に圧縮する式を探しています。これは、ボリュームレベルを維持するためにアンプのゲインを制御する「自動ボリュームコントロール」アプリケーションではなく、個々のピークを制限(「ソフト」トランケート)したいのです。(私はこれが高調波を導入することを知っていますが、私はそれを聞くのではなく、データを分析しようとしています。)

これまでの私の(非常に粗雑な)式は次のとおりです。

factor = (10 * average / level) + exp(-sqrt(0.1 * level / average))

ここで、レベルは、瞬時音圧レベルであり、平均は過去の平均音圧レベルであり、係数は「調整」レベル(生成するために使用される乗数である係数レベル)。

さらに、この乗数は、1未満の値に計算される場合にのみ適用されます。それ以外の場合、レベルは調整されません。

意図は、調整されたレベルを過去の平均のいくつかの倍数(この式では約15倍)に制限することです。この式は私が必要とするものですが、数値が大きくなるにつれて「落ち込み」を示します。つまり、調整されたレベル(つまり、factor × level)は、調整されていないレベルが増加するポイントまで増加しますが、漸近するのではなく、実際に小さくなり始めます。(実際、最初の要素は、主に数式が非常に高い値でゼロにならないようにするために追加されました。)

(この方法で値を制限する理由は、主に一時的なノイズがサウンドレベルの移動平均を深刻に混乱させないためです。しかし、いびきを分析しているときは、「一時的なノイズ」はかなり重要なので、単純にそれを抑制できます。 。)

それで、誰かがより良い何かを提案できますか?(漸近的振る舞いは、望まないときは簡単に生成できますが、そうするときは難しいようです。)


回答:


9

ここでの2つの問題:レベルの信頼できる見積もりを取得する方法、およびデータを圧縮する方法。

  • 移動平均の代わりに中央値や分位数などの元の(ピークに制限されていない)データの堅牢な統計を使用して、「標準レベル」の検出を外れ値に対して堅牢にします。
  • k×tanh(xk)は圧縮式としてうまく機能し、実際には一部のオーディオ回路(OTAを使用)で起こっていることです。元の信号のダイナミクスを保持し、トランジェントを除去するだけの適応圧縮を取得するには、kに平滑化された「平均」レベルを追跡させます。C

例

  • 青:元の信号
  • 緑:「典型的なレベル」の検出として、スライディングウィンドウ上の絶対値の2倍の中央値
  • 赤:tanh圧縮(緑でプロットされたレベルにkが等しい上記の式)

有難うございます。差し込んで、どのように動作するかを確認します。
ダニエルRヒックス

1
私はそれを試してみましたが、うまく機能しているようです(いくつかのフィンガーチェックをクリアした後)。私の唯一の問題は、クリップのレベルなどを調整せずに「膝」のシャープネスを調整する方法がないように見えることです。
ダニエルRヒックス

「移動平均」が「移動平均」よりも優れているのはなぜですか?外れ値の影響を受けにくいことを多くの場所で読みました。しかし、実際のデータではこれを見ることができません。この質問について何か考えはありますか?
Basj 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.