MFCC特徴抽出


7

オーディオのブロックがあり、FFTを実行しました。今私がしたいのは、このFFTをMFCCのセットに変換することですが、三角形のフィルターのセットに基づいてFFTサンプルに重みを付けることで何かをする必要があることはわかっていますが、実際にこれが何であるかわかりません。

誰かがそれについていくつかの詳細に入ることができますか?Matlabの例を紹介する場合は、各ステップについて十分に説明してください。MATLABではかなりの数のコーナーをカットできるため、iPhoneにMFCC抽出を実装しようとしています。

回答:


11

WebにはMFCCに関する多くの文献があるので、処理のどの部分を理解していないのかを具体的に説明できれば、もう少し簡単になります。しかし、私はこれがあなたに役立つことを願って、何をする必要があるかについての概要を与えます:

  1. FFTビンの大きさの2乗を計算する
  2. 三角窓を使用してビンを計量します。通常、ウィンドウは、三角形の中心がメル周波数スケールで等距離になり、各三角形が2つの隣接する三角形の中心で開始および終了するように選択されます。メル周波数スケールは、で定義されます。ここで、はHz 単位の周波数 です。図を見て、その動作を確認します。 カーネルは、三角形ごとの重みの合計が1になるように正規化されていることに注意してください。通常、このような三角形のウィンドウが約20使用されます。
    m=2595log10(1+f/700)
    fここに画像の説明を入力してください
  3. 加重係数の対数を取ります。
  4. DCTを計算します。

乾杯マット、私はこれをすべて読みましたが、私が落ちるのは「三角形の窓を使用して箱の重量を量る」ことです。これが何を意味するのか正確にはわかりません。ビンのセットを取り、この三角形の「ウィンドウ」に依存する各ビンに重みを付け、それらをすべて一緒に追加して「ビン」と呼ぶ必要がありますか?(これはm推測です)。もしそうなら、どうすれば三角ウィンドウを計算できますか?あなたが投稿したメル周波数方程式...複数の周波数が1つのメル "ビン"にどのように関連付けられるかわかりません...この特定のステップに関する詳細情報がありがたいです!:)
Goz

あなたはウィンドウについて正しい:あなたはあなたのFFTビンの加重和を計算します。重みは、三角関数の個々の値です。メルスケールは、三角形を中央に配置するためのものです。たとえば、メルスケールで20等距離のポイントを選択し、式を使用してヘルツに変換し直して、中心周波数をHzで取得します。もちろん、値を有効なFFTビンに一致させるために結果を丸める必要があります。
Matt L.

ビンの部分を中央に配置することは、理にかなっています。しかし、どのようにウィンドウを重み付けするのですか?つまり、どれくらいの幅にすべきですか?また、なぜ他のタイプのウィンドウではなく三角形なのですか?たぶんガウス?
Goz 2013年

別に(そして別の質問で潜在的に尋ねられるべきであるように)、ケプストラムに対してそれほど異なる方法で(重み付けを無視して)MFCCを計算するのはなぜですか?つまり、なぜ逆FFTではなくDCTなのでしょうか。
Goz 2013年

まあ、あなたは窓の重さではなく、FFTビンの重さを量ります。単純な例:値が1、2、1の三角形なので、この三角形の重み付き出力は1 *(最初のFFTビン)+ 2 *(2番目のFFTビン)+ 3 *(3番目のFFTビン)になります。なぜ三角が良い質問なのか、それが標準的なやり方です。よろしければ他の人も試してみてください。かなり良い結果が得られるとは思いません。
Matt L.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.