5

Mel-Frequency Cepstrum Algorithmを作りたいのですが、わからないことがあります。

FTT が完了したら、「三角形のオーバーラップ ウィンドウを使用して、上記で取得したスペクトルのパワーをメル スケールにマッピングする」必要があります。

私は三角形を計算する方法を知っており、メル スケールに渡す方法も知っています。私は単にそれらをどうするかわかりません。

三角形が定義されている場合、上記で取得したスペクトルのパワーをメルスケールにマッピングするにはどうすればよいですか?

このようなものですか: 三角形内の周波数を合計してから、メル スケールに渡しますか? または、重み値 (その時点での三角形の高さによって定義される) に従って三角形内の周波数を合計し、それをメル スケールに渡しますか? または、三角形内のすべての周波数を、weith 値に従ってメル スケールに渡しますか? 別物?

誰かが私にこれを明確にすることができますか

4

1 に答える 1

5

プロセスのこのステップは少し奇妙で、完全には意味がないと思います(とにかく私には)。フィルタバンドの中心はメルスケールに沿って等間隔に配置されていますが、線形スケールでは三角形です。つまり、ここの図のようになります。

次に、線形x軸に沿ったこれらの三角形を使用して加重和を計算します。(この前のステップでは、いくつかのアプローチはフィルター三角形の領域によって正規化されると思いますが、そうでないものもあります。ここでの最終的な結果については正直にわかりませんが、変更する以外はあまり意味がないかもしれません。とにかくすべて相対的な比較である最終的な解釈。1つは総エネルギーを維持し、もう1つはバンドごとに均等に重み付けされた寄与を与えます。)次に、これのログを取ります(これは全体の体積係数をオフセットに変換します)。

編集: フィルターの適用をより明確にするために...各三角形は個別のフィルターを表し、個別の加重和を生成します。フィルタバンクに20個のフィルタがある場合、20個の三角形と、計算する20個の加重和があります。各フィルターを適用するには、各x軸値について、そのx位置のフィルター値にそのx位置の関数値を掛け、これをその特定のフィルターの合計に加算します。ほとんどのx軸の値には、そこに存在する2つのフィルターがあるため、各x位置で2つのフィルターに寄与します。

于 2009-10-28T20:52:16.180 に答える