Você está certo. O processamento baseado em FFT adiciona latência inerente ao seu sistema. No entanto, existem maneiras de ajustar isso.
Vamos supor que você tenha um filtro FIR de comprimento "N". Isso pode ser implementado com base na FFT usando o método de adição ou sobreposição padrão de sobreposição padrão, onde o comprimento da FFT seria 2 * N. A latência geral do sistema também será aproximadamente 2 * N: você precisa acumular um quadro de N amostras e, enquanto acumula o próximo quadro de entrada, faça as contas no quadro atual. Quando o segundo quadro for acumulado (deslocamento de tempo 2 * N), o primeiro quadro estará pronto para sair. Se você tem uma CPU rápida, pode acelerar isso um pouco, usando alinhamento diferente para os quadros de entrada e saída, mas isso normalmente é mais incômodo do que vale a pena.
Você também pode dividir o filtro em K blocos menores de comprimento M, ou seja, N = K * M. A FFT precisa ser feita apenas em amostras de entrada M e o atraso e a acumulação nas várias seções do filtro são feitos no domínio da frequência. Bill Gardner descreveu alguns sabores disso aqui: http://www.cs.ust.hk/mjg_lib/bibs/DPSu/DPSu.Files/Ga95.PDF
É frequentemente chamado de "Convólvulo de Bloco".
Isso permite basicamente compensar a latência contra a eficiência e fornece um continuum entre o FIR direto e o método de adição de sobreposição de tamanho normal. Um bom efeito colateral do Block Convolver é que o comprimento total do filtro não precisa ser uma potência de 2. Por exemplo, você pode implementar um filtro de 768 guias como 6 blocos de 128 sem perda significativa de eficiência.