0
$\begingroup$

In the FFT domain, for example, if I multiply a noise reduction gain to the noisy signal, $ Y(w)H(w) $, this translates to a circular convolution in the time domain of the same length $ y(t) \circledast h(t) $. If I want to convert this to a linear convolution, I should do zero-padding such that the noisy signal y(t) is now twice the original length minus 1 (assuming the noisy signal $ y(t) $ and filtering signal $ h(t) $ are of the same length).

My question is, is obtaining a linear convolution necessary for speech processing? What happens if I just stay with the circular convolution (i.e. NFFT length = signal length)? What if I just want to maintain the same signal length before and after processing? I am quite confused about the importance of satisfying linear convolution property in the context of STFT.

$\endgroup$
3
  • $\begingroup$ Is your ultimate goal to do just linear convolution? Because circular convolution is only a method to implement the linear convolution by carefully choosing FFT size. $\endgroup$
    – jithin
    Mar 26, 2020 at 8:11
  • $\begingroup$ No, I think not. My goal is just to modify the current spectrum of speech in FFT by multiplying it with a spectral gain. And then bring it back to time domain all with the same length. But somehow I read about the circular and linear convolution and I don't know what's the purpose of linear convolution in this case. $\endgroup$
    – micropyre
    Mar 26, 2020 at 8:27
  • $\begingroup$ Yes, you need zero padding and probably more than you think you do. Why don't try it without and listen to the results? That's going to answer your question quickly. $\endgroup$
    – Hilmar
    Mar 26, 2020 at 11:52

1 Answer 1

1
$\begingroup$

My answer is not from speech processing angle but from a generic signal processing involving Linear and Circular Convolution.

Is zero-padding necessary for speech processing to satisfy linear convolution property?

If the FFT size is $N$, and the length of result of linear convolution size is $\gt N$, then you need to do zero-padding. Otherwise it will result in time-aliasing in time domain. The effect of this is, at the output of FFT you will get an under-sampled representation of the theoretical continuous time DFT signal. $$ (Y.*H)(e^{j2\pi k/n}) = (Y.*H)(e^{j\omega})|_{\omega = 2\pi k/N} $$ but $$ (Y.*H)(e^{j\omega})|_{\omega = 2\pi k/N} \ne (\sum_0^{N-1}p[n]e^{-j\omega n})|_{\omega = 2\pi k/N} $$ because of time aliasing. Here $p$ is the sequence obtained by linear convolution.

What happens if I just stay with the circular convolution (i.e. NFFT length = signal length)?

Since your FFT length $N$ is equal to signal length $N$, the above time aliasing will happen.

What if I just want to maintain the same signal length before and after processing?

Your FFT size has to be atleast equal to the resultant linear convolved signal length ($2N-1)$. Because that will be the length of signal you will be working with after the point-wise multiplication. So your FFT size has to be at least $2N-1$ before hand. See this question and its answers too Linear and Circular Convolution in Fourier Domain (DFT)

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.