5

ここでさまざまな FFT の質問を見てきましたが、実装の一部で混乱しています。FFT をリアルタイムで実行する代わりに、オフラインで実行したいと考えています。に生データがあるとしましょうfloat[] audio。サンプリング レートは 44100 であるためaudio[0] to audio[44099]、1 秒分の音声が含まれます。FFT 関数がウィンドウ処理 (Hanning など) を処理する場合、audioバッファ全体を一度に関数に入れるだけですか? または、オーディオを 4096 (私のウィンドウ サイズ) のチャンクにカットし、それを FFT に入力して、ウィンドウ機能を実行する必要がありますか?

4

3 に答える 3

2

データセット全体(OPの場合は1秒のデータを表す44100サンプル)に対して1つのFFTを計算するか、完全なデータセットのより小さなサブセットに対して一連のFFTを実行するかは、データによって異なります。 、およびFFTの意図された目的について。

データが完全なデータセットに対してスペクトル的に比較的静的である場合、データセット全体に対して1つのFFTがおそらく必要なすべてです。

ただし、データがデータセット全体でスペクトル的に動的である場合、データの小さなサブセット上で複数のスライディングFFTを使用すると、データのより正確な時間周波数表現が作成されます。

以下のプロットは、A4ノートを演奏するアコースティックギターのパワースペクトルを示しています。オーディオ信号は44.1KHzでサンプリングされ、データセットには131072サンプル、ほぼ3秒のデータが含まれています。このデータセットは、ハンウィンドウ関数で事前に乗算されています。

ギタースペクトル、ハンウィンドウ、131072サンプル

以下のプロットは、アコースティックギターA4ノートの完全なデータセットから取得した16384サンプルのサブセット(0〜16383)のパワースペクトルを示しています。このサブセットには、ハンウィンドウ関数も事前に乗算されています。

ギタースペクトル、ハンウィンドウ、16384サンプル

サブセットのスペクトルエネルギー分布が、完全なデータセットのスペクトルエネルギー分布とどのように大きく異なるかに注意してください。

スライド式の16384サンプルフレームを使用して完全なデータセットからサブセットを抽出し、各フレームのパワースペクトルを計算すると、完全なデータセットの正確な時間周波数画像が作成されます。

参照:

実際のオーディオ信号データ、ハンウィンドウ関数、プロット、FFT、およびスペクトル分析は、ここで行われました。

高速フーリエ変換、スペクトル分析、ハンウィンドウ関数、オーディオデータ

于 2013-03-01T09:29:32.977 に答える
2

入力データを別のバッファにコピーし、正しい形式で取得する必要がある場合があります。たとえば、FFT がインプレースである場合や、インターリーブされた複素数データ (実数/虚数) が必要な場合です。ただし、FFT ルーチンが純粋に実数の入力を受け取ることができ、インプレースではない (つまり、非破壊的) 場合は、適切なサイズ パラメータと共に、元のサンプル データへのポインタを渡すことができる場合があります。

通常、スピーチや音楽などの 1 秒のオーディオの場合、10 ミリ秒または 20 ミリ秒など、オーディオの適度に静止したチャンクに対応する FFT サイズを選択します。したがって、44.1 kHz では、FFT サイズは 512 または 1024 となります。その後、バッファーを進めて各開始点で新しい FFT を実行することにより、連続するスペクトルを生成します。通常、これらの連続するバッファーを 50% オーバーラップさせるのが一般的であることに注意してください。したがって、N = 1024 の場合、最初の FFT はサンプル 0..1023、2 番目はサンプル 512..1535、次に 1024..2047 などになります。

于 2011-09-21T06:51:47.897 に答える
1

選択したチャンク サイズまたはウィンドウの長さによって、FFT 結果の周波数分解能と時間分解能が制御されます。どちらが必要か、またはどのようなトレードオフを行うかを決定する必要があります。

ウィンドウが長いほど、周波数分解能は向上しますが、時間分解能は低下します。短いウィンドウ、その逆。各 FFT 結果ビンには、単一の周波数だけでなく、ウィンドウの形状 (長方形、フォン ハンなど) に応じて、サンプル レートの約 1 ~ 2 倍を FFT 長で割った周波数帯域幅が含まれます。データ チャンク全体が静止している (周波数コンテンツが変化しない) 場合、時間分解能は必要なく、1 秒のデータで 1 ~ 2 Hz の周波数 "分解能" を使用できます。複数の短い FFT ウィンドウを平均化することも、スペクトル推定の分散を減らすのに役立つ場合があります。

于 2011-09-21T20:46:11.813 に答える