回答:
ヒルベルト変換は、「分析」信号の計算に使用されます。たとえば、http://en.wikipedia.org/wiki/Analytic_signalを参照してください。信号が正弦波または変調された正弦波の場合、分析信号の大きさは実際にエンベロープのように見えます。ただし、ヒルベルト変換の計算は簡単ではありません。技術的には、かなりの長さの非因果的FIRフィルターが必要であるため、かなりの量のMIPS、メモリ、レイテンシが必要になります。
広帯域信号の場合、特定のアプリケーションの「エンベロープ」をどのように定義するかに大きく依存します。ダイナミックレンジ圧縮のアプリケーションでは、時間の経過に伴うラウドネスの知覚とよく相関するメトリックが必要です。ヒルベルト変換はそのための適切なツールではありません。
より良いオプションは、A-weightedフィルター(http://en.wikipedia.org/wiki/A-weighting)を適用してから、損失のあるピークまたは損失のあるRMS検出器を実行することです。これは、時間の経過とともに知覚される音量とかなりよく相関し、比較的安価です。
ヒルベルト変換を使用して、次の方法でエンベロープを計算できます。(MATLABコードとして記述します):
envelope = abs(hilbert(yourTimeDomainSignal));
すぐに数学を書き出す時間はありませんが(後で試します)、ごく簡単に言えば、あなたの信号は正弦波であると言います。サインのヒルベルト変換は、-コサインです。(言い換えれば、ヒルベルト変換は常に-90度位相シフトした信号を提供します-言い換えれば、その直角位相)。
信号(正弦波)をj
ヒルベルト信号(-コサイン波)の時間に加算すると、次のようになります。
sin(wt) - j.*cos(wt)
これはたまたまe ^(j *(wt-pi / 2))でもあります。
したがって、これの絶対値を取得すると、エンベロープである1が得られます。(この場合)。
私は、信号から振幅エンベロープを取得する少なくとも2つの別々の方法を知っています。
重要な方程式は次のとおりです。
E(t)^2 = S(t)^2 + Q(S(t))^2
Where Q represents a π/2 phase shift (also known as quadrature signal).
私が知っている最も簡単な方法は、Qを取得することです.FFTを使用してS(t)を一連の正弦波成分に分解し、各成分を反時計回りに4分の1回転させます(各成分は複素数になるため、特定の成分x + iy-> -y + ix)そして、再結合します。
このアプローチは非常にうまく機能しますが、少し調整する必要があります(これをより良い方法で説明するのに十分な数学をまだ理解していません)
ここにはいくつかの重要な用語、すなわち「ヒルベルト変換」と「分析信号」があります
私はこれらの用語の使用を避けています。なぜなら、それらの使用にかなりのあいまいさが見られたことは確かだからです。
1つのドキュメントは、元の実信号f(t)の(複雑な)解析信号を次のように説明しています。
Analytic(f(t)) = f(t) + i.H(f(t))
where H(f(t)) represents the 'π/2 phase shift' of f(t)
この場合、振幅エンベロープは単純に| Analytic(f(t))|であり、元のピタゴラス方程式に戻ります
NB:最近、周波数シフトとローパスデジタルフィルターを含むより高度な手法に出会いました。理論は、さまざまな手段で分析信号を構築できるということです。f(t)を正と負の正弦波周波数成分に分解し、負成分を除去して正成分を2倍にします。周波数シフトとローパスフィルタリングの組み合わせにより、この「負の周波数成分の除去」を行うことができます。これは、デジタルフィルターを使用して非常に高速に実行できます。私はまだこのアプローチを検討していないので、これは現時点で言えることです。
したがって、基本的に自動ゲイン制御(AGC)を探しています。デジタルで処理する必要があるかどうかはわかりませんが、そのタスクを非常にうまく実行できる非常に優れた集積回路があります。通常、AGCは他の多くの機能と統合されていますが、JFETトランジスタでいくつかの回路を作成することができますそしていくつかのダイオード。
しかし、デジタル処理でこれを行う非常に簡単に理解できる方法は、5または10ミリ秒を表すのに十分なサンプルの時間ウィンドウを取得し、忘却係数alpha ^ n(alpha <1)を適用するなど、適応分散推定器を設計することです新しいサンプルはそれぞれ、過去のサンプルよりも多く考慮されます。次に、この分散推定に基づいて、各オーディオサンプルに適用するゲインに分散をマッピングする関数である、希望に応じて設計します。これは硬判定境界である可能性がありますが、分散が何らかのしきい値を超えると、何らかの要因でゲインが減少します。
または、より軟判定の境界で、分散からゲインへの非線形変換を作成し、最後の分散推定に基づいてすべてのサンプルに変換を適用することもできます。
これはよりヒューリスティックな方法ですが、少なくともすべての重い数学からあなたを救います。