Qt でサウンド データの適切なスペクトログラムをプロットしようとしています。これで、fft ウィンドウ長 1024 とオーバーラップ データ長 976 の見栄えの良いスペクトログラムをプロットできます。しかし、256 などの小さなウィンドウ長を使用してスペクトログラムをプロットするのが通常であり、それにより時間分解能が向上します。しかし、ウィンドウの長さを 256 に減らすと、スペクトログラムに空の行が表示されます。ウィンドウの長さを短くすると FFT の周波数分解能が低下することはわかっていますが、他のプログラムのスペクトログラムに空の行がないのはなぜですか。私は何か間違ったことをしていますか、それともこの結果は正常ですか?
スペクトログラムを取得するために使用する主な手順は次のとおりです。 -サウンド ファイルからデータを取得します。-最初のウィンドウの FFT (ハニング)。-複素 fft 出力をマグニチュード配列に変換します(マグニチュード = sqrt(re^2 + im^2) ) -マグニチュードを対数スケール(dB)に変換します Magnitude_dB = 20*log10(magnitude) -スケーリングによってスペクトログラムの最初の列をプロットしますスペクトル データを列に固定する - 次の操作のためにウィンドウを 48 サンプル移動します。
次のスクリーン ショットで問題を確認できます。 ウィンドウの長さ 1024 ウィンドウの長さ 256
(ちなみに、私の目標は、音声データから音素を認識するプログラムを作成することです。FFTW ライブラリを使用します)
あなたが提供できる助けに本当に感謝します。