1

私が見つけたこの論文(http://arxiv.org/pdf/1003.4083.pdf)に基づいてMFCCアルゴリズムを計算しようとしているので、これまでに行ったことは次のとおりです。

ステップ1)プリエンファシス

ステップ2)フレーミング

ステップ3)ハミングウィンドウ

ステップ4)高速フーリエ変換

ステップ5)メルフィルターバンク処理

ステップ6):離散コサイン変換

基本的に、私はMel Bankフィルターを使用して、実際の生の信号を乗算しました。次に、これらの結果に対してFFTを実行しました。これは次のようになります。

フレーム1のFFT:

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

次に、FFTのDCTを計算しました。その結果は、次のようになります。

フレーム1のDCT:

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

これは今のところ正しいように見えますか?私がこれをチェックして、私が正しい方向に進んでいることを知る方法さえありますか?

また、13の係数を取得する必要がありますが、これらのどれを取得するかを決定する方法がわかりません。256個の値を取得しますが、最初の13個を取得しますか?または、私は総エネルギーを取得しますか?

誰かが私を助けてくれることを願っています。

4

3 に答える 3

9

似たようなものを何日も探した後、MFC係数を取得する方法の非常に便利なチュートリアルに出くわしました: メル周波数ケプストラム係数(MFCC)チュートリアル

(スレッドは古いですが、答えが将来の読者に役立つことを願っています)

于 2013-03-13T12:12:58.937 に答える
4

私はあなたが今書いたものと混同しています。私が知る必要がある唯一のことは、信号をフレームに分割したことです。n= 100、m = 256(私は信じています)これは約390ブロックを生成します。したがって、ブロックごとに13の係数、または全体で13の係数があります。サウンドファイル?

答えは、サウンドファイル全体ではなく、ブロックごとに13の係数があるということです。

mfcc係数を計算する方法が間違っている場合は、前述の1〜6の手順に従う必要があります。

ステップ1)サウンドファイル全体のプリエンファシス。

ステップ2)多くのブロックを取得するためにサウンドファイル全体をフレーミングする

ステップ3)各ブロックのハミングウィンドウ

ステップ4)各ブロックの高速フーリエ変換

ステップ5)各ブロックのメルフィルターバンク処理

ステップ6):各ブロックの離散コサイン変換

于 2013-12-27T15:52:24.293 に答える
2

いいえ、あなたは間違っています。

FFT後のメルフィルターバンクエネルギーの対数を計算してから、 DCTを適用する必要があります。フィルタバンクのエネルギーの数は約20または40である必要があり、DCTの後、20または40の数を取得し、最初に13を取得する必要があります。

FFTで行ったことはすべて間違っています。

ゼロから何かを行う代わりに、いくつかのMFCCコードを読みたい場合があります。たとえば、sphinxbaseには、多くの実装があります。

http://cmusphinx.sourceforge.net

于 2012-12-11T06:28:30.783 に答える