MFCCの計算方法

説明するのがかなり面倒くさいのですが、説明をします。

まず、時間波形が下の図のようにあるとします。

これに 1, -0.97 という係数の移動平均フィルタをかけて、
「高域強調」をします。
そうすると、下の図のようになります(まだ、時間波形です)。

これをフーリエ変換すると、
高周波成分が持ち上がっているのが分かると思います。
(絶対値ですが、対数はとっていません。)

この周波数領域の絶対値に、
下の図のような周波数領域の窓をかけます。
図に示したとおり、
この窓は周波数が高くなるにつれて分解能が落ちます。
詳しい説明はしませんが、
この窓の一つ一つの幅は、
「メル尺度」という尺度に基づいています。

窓をかけて積分をするので、
一つの窓につき一つの値が出てくることになります。
この図の場合ですと、
窓が二十個あるので、二十の値が出てきます。

それの対数をとります。

対数をとったら、コサイン変換をします。

コサイン変換したものを低い次元の方からいくつかとってきます。
(12個くらい。)
それがMFCCと呼ばれるものです。

ちなみに、
「フーリエ変換」→「絶対値の対数」→「コサイン変換」
という手順を踏んだものを「ケプストラム」といいます。
MFCCの最初のCは、ケプストラムの略です。

inserted by FC2 system inserted by FC2 system