これはMFCC計算のDCTステップの正しい解釈ですか?


9

これはここの議論の続きです。私はそこでコメントしますが、50人の担当者がいないので、新しい質問をしています。

MFCC計算プロセスのDCTステップを理解する方法は次のとおりです。その背後にある理論的根拠は、フィルターのオーバーラップにより、(フィルターバンクからの)対数スペクトルの大きさの相関を分離することです。本質的に、DCTはこれらの対数スペクトルの大きさによって与えられるスペクトル表現を平滑化します。

下の画像の青い線は、対数スペクトルの大きさのベクトルで表されるスペクトルを表し、赤い線は、DCT変換された後のベクトルであると言って間違いありませんか?

DCT化された対数スペクトルマグニチュード(MFCCなど)と対数ログスペクトルマグニチュードだけ???


テスト用のコードはどこにダウンロードできますか?
オーラハム2014年

下の画像?投稿に画像がありません。
Eric Platon、2016年

回答:


16

最初から始めましょう。ケプストラムを計算する標準的な方法は次のとおりです。

C(x(t))=F1[log(F[x(t)])]

MFCC係数の場合、ケースは少し異なりますが、依然として類似しています。

プリエンファシスとウィンドウ処理の後、信号のDFTを計算し、重複する三角フィルターのフィルターバンクを適用し、メルスケールで分離します(場合によっては、線形スケールがメルよりも優れています)。

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

ケプストラムの定義に関して、メル周波数スケールでスペクトルの包絡線(縮小スペクトル)を表現しました。これを表すと、元の信号スペクトルに似ていることがわかります。

次のステップは、上記で得られた係数の対数を計算することです。これは、ケプストラムが信号を声道のインパルス応答などから分離する準同型変換であると想定されているためです。方法

元の音声信号は、ほとんどが声道のインパルス応答と畳み込まれます。s(t)h(t)

s^(t)=s(t)h(t)

周波数領域では、畳み込みはスペクトルの乗算です。

S^(f)=S(f)H(f)

これは、次のプロパティに基づいて、2つの部分に分解できます:。log(ab)=log(a)+log(b)

また、インパルス応答は時間の経過とともに変化しないため、平均を減算することで簡単に除去できます。これで、バンドエネルギーの対数をとる理由がわかります。

ケプストラム定義の最後のステップは、逆フーリエ変換です。問題は、位相情報がなく、対数エネルギーのみがあるため、適用後に複雑な値の係数が得られるということです。コンパクトな表現にするためにこのすべての作業を行うには、あまりエレガントではありません。FTの「簡略化」バージョンである離散コサイン変換を使用して、実数値の係数を取得できますが!この手順は、余弦波を対数エネルギー係数に一致させるものとして視覚化できます。ケプストラムは「スペクトルのスペクトル」とも呼ばれることを覚えていますか?これがまさにそのステップです。対数エネルギーエンベロープ係数の周期性を探しています。F1ifft

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

これで、元のスペクトルがどのように見えるかを理解するのがかなり難しくなったことがわかります。さらに、通常は最初の12のMFCCのみを使用します。これは、高いMFCCがログエネルギーの急速な変化を示しているため、通常、認識率が低下しているためです。したがって、DCTを実行する理由は次のとおりです。

  • 元々はIFFTを実行する必要がありますが、DCTから実数値の係数を取得する方が簡単です。さらに、フルスペクトル(すべての周波数ビン)ではなく、メルフィルターバンク内のエネルギー係数があるため、IFFTの使用は少々やりすぎです。

  • 最初の図では、フィルターバンクがオーバーラップしているため、互いに隣り合うものからのエネルギーが2つに分散されています。DCTを使用すると、それらを非相関化できます。これは、たとえばガウス混合モデルの場合に適切なプロパティであり、完全なもの(すべての係数が相関している)の代わりに対角共分散行列(他の係数間の相関なし)を使用できることを覚えておいてください。これにより、多くのことが簡単になります。

  • メル周波数係数を非相関化するもう1つの方法は、PCA(主成分分析)です。運が良ければ、信号の非相関化に関してDCTがPCAの非常に優れた近似であることが証明されたため、離散コサイン変換を使用するもう1つの利点があります。


いくつかの文献:

Hyoung-芥キム、ニコラ・モロー、トーマス・シコラ - MPEG-7オーディオと越えて:オーディオコンテンツのインデックスと検索


1
IFFTから複素数の絶対値を取得できないのはなぜですか?複素数を扱うのがはるかに難しい場合、ケプストラムを計算するときにIFFTを使用し、常にDCTを実行しないのはなぜですか?説明ありがとう。その図は特に役に立ちました。
acannon828 14

1
@ acannon828:編集した回答の最後の3点をご覧ください。私は今それがすべてを説明することを望みます。
jojek

素晴らしい反応..これに添付できるあらゆる文献。
Bob Burt

1
@BobBurt:よし!
jojek

本をありがとう。ほとんどのものはその中で説明されているようです。本は声道についての理論もカバーしていますか-私はそれに関連するものを見つけることができないようです。
Bob Burt

3

DCTを平滑化するだけでなく、スペクトルを表すために必要な次元数が減少します。DCTは、最初のいくつかの係数でスペクトルのエネルギーの大部分を圧縮する傾向があるため、次元削減に適しています。


ありがとう。これは、@ pichenettesが次元削減によって何を意味するかを理解するのに役立ちました。
acannon828 14

3

その背後にある理論的根拠は、フィルターのオーバーラップにより、(フィルターバンクからの)対数スペクトルの大きさの相関を分離することです。本質的に、DCTはこれらの対数スペクトルの大きさによって与えられるスペクトル表現を平滑化します。

これは誤りです。対数スペクトルマグニチュード間には、それらが重複しているだけでなく、一連の数値が対数スペクトルマグニチュードの「意味のある」(自然な音声や音で発生する)系列を表していないため、相関があります。「意味のある」対数スペクトルマグニチュードはかなり滑らかになる傾向があり、高周波数のエネルギーが全体的に減少します。すべての「意味のある」対数スペクトルマグニチュードベクトルの空間の次元は、40より小さいか、使用するバンドの数に関係なく。DCTは、40チャネルのデータをこの小さなスペースにマッピングするための次元削減と見なすことができます。

本質的に、DCTはこれらの対数スペクトルの大きさによって与えられるスペクトル表現を平滑化します。

DCTは平滑化を行いません。DCTデータから再構築すると、平滑化が見られます。平滑化は、DCTによる情報の損失とそれに続く係数の切り捨てが原因です。

しかし、MFCC係数は平滑化されたスペクトルを格納しません-相関のないDCT係数のシーケンスを格納します。

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