最初から始めましょう。ケプストラムを計算する標準的な方法は次のとおりです。
C(x (t ))= F− 1[ ログ(F[ x (t )] )]
MFCC係数の場合、ケースは少し異なりますが、依然として類似しています。
プリエンファシスとウィンドウ処理の後、信号のDFTを計算し、重複する三角フィルターのフィルターバンクを適用し、メルスケールで分離します(場合によっては、線形スケールがメルよりも優れています)。
ケプストラムの定義に関して、メル周波数スケールでスペクトルの包絡線(縮小スペクトル)を表現しました。これを表すと、元の信号スペクトルに似ていることがわかります。
次のステップは、上記で得られた係数の対数を計算することです。これは、ケプストラムが信号を声道のインパルス応答などから分離する準同型変換であると想定されているためです。方法
元の音声信号は、ほとんどが声道のインパルス応答と畳み込まれます。s (t )h(t)
s^(t)=s(t)⋆h(t)
周波数領域では、畳み込みはスペクトルの乗算です。
S^(f)=S(f)⋅H(f)
これは、次のプロパティに基づいて、2つの部分に分解できます:。log(a⋅b)=log(a)+log(b)
また、インパルス応答は時間の経過とともに変化しないため、平均を減算することで簡単に除去できます。これで、バンドエネルギーの対数をとる理由がわかります。
ケプストラム定義の最後のステップは、逆フーリエ変換です。問題は、位相情報がなく、対数エネルギーのみがあるため、適用後に複雑な値の係数が得られるということです。コンパクトな表現にするためにこのすべての作業を行うには、あまりエレガントではありません。FTの「簡略化」バージョンである離散コサイン変換を使用して、実数値の係数を取得できますが!この手順は、余弦波を対数エネルギー係数に一致させるものとして視覚化できます。ケプストラムは「スペクトルのスペクトル」とも呼ばれることを覚えていますか?これがまさにそのステップです。対数エネルギーエンベロープ係数の周期性を探しています。F−1ifft
これで、元のスペクトルがどのように見えるかを理解するのがかなり難しくなったことがわかります。さらに、通常は最初の12のMFCCのみを使用します。これは、高いMFCCがログエネルギーの急速な変化を示しているため、通常、認識率が低下しているためです。したがって、DCTを実行する理由は次のとおりです。
元々はIFFTを実行する必要がありますが、DCTから実数値の係数を取得する方が簡単です。さらに、フルスペクトル(すべての周波数ビン)ではなく、メルフィルターバンク内のエネルギー係数があるため、IFFTの使用は少々やりすぎです。
最初の図では、フィルターバンクがオーバーラップしているため、互いに隣り合うものからのエネルギーが2つに分散されています。DCTを使用すると、それらを非相関化できます。これは、たとえばガウス混合モデルの場合に適切なプロパティであり、完全なもの(すべての係数が相関している)の代わりに対角共分散行列(他の係数間の相関なし)を使用できることを覚えておいてください。これにより、多くのことが簡単になります。
メル周波数係数を非相関化するもう1つの方法は、PCA(主成分分析)です。運が良ければ、信号の非相関化に関してDCTがPCAの非常に優れた近似であることが証明されたため、離散コサイン変換を使用するもう1つの利点があります。
いくつかの文献:
Hyoung-芥キム、ニコラ・モロー、トーマス・シコラ - MPEG-7オーディオと越えて:オーディオコンテンツのインデックスと検索