MFCCアルゴリズムの作成方法
-
08-07-2019 - |
質問
メル周波数ケプストラムアルゴリズムを作成したいのですが、理解できないことがいくつかあります。
FTTが完了したら、「三角形の重複ウィンドウを使用して、上記で取得したスペクトルのパワーをメルスケールにマッピングする」必要があります。
三角形の計算方法を知っています。メルスケールに渡す方法も知っています。 どうすればいいのかわかりません。
三角形が定義されている場合、上記で取得したスペクトルのパワーをメルスケールにマッピングするにはどうすればよいですか
これは次のようなものですか? 三角形の内側の周波数を合計し、それをメルスケールに渡しますか? または 重み値(その時点での三角形の高さで定義)に従って三角形内の周波数を合計し、それをメルスケールに渡しますか? または 三角形内のすべての周波数を、weith値に従ってメルスケールに渡しますか? もう一つ?
誰でも私にこれを明確にすることができます
解決
このプロセスのステップは少し奇妙で、完全に意味をなさないと思います(とにかく私には)。フィルターバンドの中心は、メルスケールに沿って等間隔に配置されていますが、線形スケールでは三角形です。つまり、図こちら。
次に、これらの三角形を使用して線形x軸に沿って加重和を計算します。 (この前のステップでは、いくつかのアプローチはフィルター三角形の領域によって正規化され、いくつかのアプローチはそうではないと思います。また、ここでの最終的な結果については正直にわかりませんが、とにかくすべての相対的な比較である最終解釈。1つは総エネルギーを維持し、もう1つは帯域ごとに均等に重み付けされた寄与を提供します。)これのログを取ります(全体の体積係数をオフセットに変換します)。
編集: フィルタの適用をより明確にするために...各三角形は個別のフィルタを表し、個別の加重合計を生成します。フィルターバンクに20個のフィルターがある場合、20個の三角形と20個の加重合計が計算されます。各フィルターを適用するには、各x軸の値に対して、そのx位置のフィルター値をそのx位置の関数値で乗算し、これをその特定のフィルターの合計に追加します。を持つほとんどのx軸の値には2つのフィルターが存在するため、各x位置で2つのフィルターに寄与します。