I try to develop an overlap-add function which doesn't execute FFT of filter because it has been transformed and saved earlier. It works really good for real-value signals and filters (~20% faster than sp.signal.oaconvolve), but fails if both signals are complex (~10 slowly than the reference) with the same quality. Do you know any library with perfect realization of functions like I need in? I'll be glad and thankfull to you if you share it or say way it's impossible. This is the best code I've used (with reference to author of the origin) def OAConvolve(x: np.ndarray, N: int, filter_speq: np.ndarray): """ Thanks to: https://github.com/jthiem Modified to return 'same' convolution. """ M = 2 << (N - 1).bit_length() L = M - N + 1 sig_len = x.shape[0] offsets = range(0, sig_len, L) res = np.zeros(sig_len + M, dtype=np.complex128) for n in offsets: res[n:n + M] += np.fft.ifft(np.fft.fft(x[n:n + sig_len], n=M) * filter_speq) # Обрезка до режима 'same' start = (N - 1) // 2 return res[start: start + sig_len] Continue reading...