Bạn nói đúng. Xử lý dựa trên FFT thêm độ trễ vốn có cho hệ thống của bạn. Tuy nhiên có nhiều cách để điều chỉnh điều này.
Giả sử bạn có bộ lọc FIR có độ dài "N". Điều này có thể được thực hiện dựa trên FFT bằng cách sử dụng phương thức lưu hoặc thêm chồng lấp tiêu chuẩn, trong đó độ dài FFT sẽ là 2 * N. Độ trễ hệ thống tổng thể cũng sẽ vào khoảng 2 * N: bạn cần tích lũy một khung gồm N mẫu và sau đó trong khi bạn đang tích lũy khung đầu vào tiếp theo, hãy làm toán trên khung hiện tại. Vào thời điểm khung thứ hai được tích lũy (thời gian bù 2 * N), khung đầu tiên đã sẵn sàng để ra ngoài. Nếu bạn có CPU nhanh, bạn có thể tăng tốc phần nào bằng cách sử dụng các căn chỉnh khác nhau cho các khung đầu vào và đầu ra nhưng điều đó thường gây phiền toái hơn giá trị của nó.
Bạn cũng có thể chia bộ lọc thành K khối nhỏ hơn có chiều dài M, tức là N = K * M. FFT chỉ cần được thực hiện trên các mẫu đầu vào M và độ trễ và tích lũy trên nhiều phần bộ lọc được thực hiện trong miền tần số. Bill Gardner đã mô tả một vài hương vị của nó ở đây: http://www.cs.ust.hk/mjg_lib/bibs/DPSu/DPSu.Files/Ga95.PDF
Nó thường được gọi là "Khối chuyển đổi khối".
Điều này về cơ bản cho phép đánh đổi độ trễ so với hiệu quả và nó cung cấp tính liên tục giữa FIR trực tiếp và phương thức thêm chồng chéo kích thước đầy đủ. Một hiệu ứng phụ tuyệt vời của Trình chuyển đổi khối là tổng chiều dài bộ lọc không phải là công suất 2. Ví dụ: bạn có thể triển khai bộ lọc gồm 768 tab thành 6 khối 128 mà không làm giảm hiệu quả đáng kể.