0

私は現在、FFT を計算して配列として返すことができるオーディオ分析用の Bass ライブラリを使用しています。libmfcc はこのデータを使用して、必要な MFCC 係数の値を計算します。(情報: MFCC はオーディオ スペクトルに似ていますが、人間の聴覚と周波数スケーリングの仕組みにより適合します) ベース ライブラリは 0 から 1 までの値を FFT 値として返します。

今、私はいくつかの問題と質問に遭遇しました:

  • 彼らのFFTサンプルデータは異なるフォーマットを持っているようです.値は非常に高く、8192 FFT値の合計は10739.24になります.[/li]
  • 彼らの例のアプリケーションでは、次のように関数を呼び出します。8192 個の値をロードしただけなのに、FFT 配列サイズとして 128 を使用するのはなぜですか?
  • C# の構文/関数に一致するように少しコピーして編集した MFCC クラスを使用すると、一部の係数で負の値が得られますが、そうあるべきではないと思います。

なぜそれが負の値を返すのか、または私が間違ったことを誰かが助けてくれますか? 上記を実行し、デバッグに役立つ簡単なサンプル Ready to Try Program を作成しました。
リンク: http://www.xup.in/dl,17603935/MFCC_Test.rar/

私の C# アプリケーションからの出力 (正しくない可能性が高い)

Coeff 16 = 0,017919318626506 Coeff 17 = -0,155580763009355 Coeff 18 = -0,76072865841987 Coeff 19 = 0,108961510335727 Coeff 20 = 0,819025783804398 Coeff 21 = -0,660508603974514 Coeff 22 = -0,951623924906163 Coeff 23 = 0 ,424922129906254 Coeff 24 = 0,0129727009313168 Coeff 25 = -0,388796833267654 Coeff 26 = 0,270839393161931 Coeff 27 = -0,138515788828431 Coeff 28 = -0,454837674981149 Coeff 29 = -0,448629344922371 Coeff 30 = -0,11908663618393 Coeff 31 = 0,237500036702818 Coeff 32 = 0,114874386870208 Coeff 33 = -0,100822381384326 Coeff 34 = 0,144242143551012 Coeff 35 = 0,209338502838453 Coeff 36 = 0,247588420953066 Coeff 37 = -0,451654204112441 Coeff 38 = 0,0346927542067229 Coeff 39 = 0,180816031061584

彼らの例のFFTデータ(異なるフォーマット?)

14.524506 38.176063 10.673860 3.705076 2.102398 1.461585 1.145616 0.974108 0.878079 0.825304 0.798959 0.789067 0.789914 0.797102 0.808576 0.822048 0.836592 0.851101 0.864869 0.877625 0.888780 0.897852 0.905033 0.910054 0.912214 0.912414 0.909593 0.904497

4

2 に答える 2

0

私は最初の部分に答えることができます: サンプル コードは、入力データがFFTWを使用して計算され、正規化されていない結果を生成することを明確に示しています。正規化された値を取得するには、sqrt(n) で除算する必要があります。これは、BASS が返すと思われるものです。

おそらく、入力に sqrt(n) を掛けると、より良い結果が得られます。

于 2012-02-09T19:00:36.473 に答える