あなたは正しいです。FFTベースの処理は、システムに固有のレイテンシを追加します。ただし、これを調整する方法はいくつかあります。
長さ "N"のFIRフィルターがあるとします。これは、FFT長が2 * Nになる標準のオーバーラップ追加またはオーバーラップ保存メソッドを使用してFFTベースを実装できます。システム全体のレイテンシも約2 * Nになります。Nサンプルのフレームを蓄積する必要があり、次の入力フレームを蓄積している間に、現在のフレームで計算を行います。2番目のフレームが累積されるまで(タイムオフセット2 * N)、最初のフレームは出力する準備ができています。高速なCPUを使用している場合は、入力フレームと出力フレームに異なる配置を使用することで、これをいくらか高速化できますが、通常、それよりも面倒です。
また、フィルターを長さMのK個の小さなブロックに分割することもできます(N = K * M)。FFTはM個の入力サンプルでのみ実行する必要があり、複数のフィルターセクションでの遅延と累積は周波数領域で実行されます。Bill Gardnerは、そのいくつかのフレーバーをここで説明しました:http : //www.cs.ust.hk/mjg_lib/bibs/DPSu/DPSu.Files/Ga95.PDF
これは、しばしば「ブロックコンボルバー」と呼ばれます。
これにより、基本的にレイテンシと効率のトレードオフが可能になり、直接FIRとフルサイズのオーバーラップ加算メソッドとの間に連続性が提供されます。ブロックコンボルバーの優れた副作用は、フィルターの全長が2の累乗である必要がないことです。たとえば、768タブのフィルターを、効率を大幅に低下させることなく、128の6ブロックとして実装できます。