0

MATLAB での実験について助けが必要です。時間間隔ごとに曲の周波数範囲を取得しようとしています。たとえば、人が歌う場合、時間 0 から 0.5 秒までの周波数範囲は? MATLAB のスペクトログラム関数を使用してみましたが、返された値から必要な値を抽出する方法がわかりません。

あなたが私を助けてくれることを願っています(初心者)。

どうもありがとうございました。私はあなたの助けに感謝します。

4

1 に答える 1

1

まず、スペクトログラムが何をしているかを理解する必要があります。信号をより短い (ただし固定された) 時間の長さに分割し、それに FFT を実行します (したがって、STFT 表現とも呼ばれます)。Matlab スペクトログラムには、いろいろと試すことができる多くのオプションがあります。

あなたの質問に対して、スペクトログラム データを見て信号の周波数範囲を計算するには、まず NFFT、オーバーラップ数、サンプリング周波数を使用してスペクトログラム ビンの時間長を計算する必要があります (作業したと仮定します)。スペクトログラムを作成する前にこれを出力します)。高品質の音声 (16kHz でサンプリングされ、50% と 1024 NFFT がオーバーラップ) を処理すると、ビン (またはスペクトログラムのスライス) ごとに約 32ms が返されます。0 から 500 ミリ秒の間にどの周波数が存在したかを調べるには、単純に最初の ceil(500/32) ビンを取得し、周波数応答を書き出します。音声には高調波特性と拡散特性の両方があるため、複数の周波数が得られる可能性があります。

残りの部分については、役立つヘルプを提供する前に、あなたの設定/達成したいことを正確に知る必要があります.

于 2015-03-31T15:17:42.960 に答える