A Editing in Freq domain and applying inverse FFT

AI Thread Summary
The discussion centers on issues related to editing audio signals in the frequency domain and the resulting distortions when converting back to the time domain using inverse FFT. The user experiences problems with block/frame boundary distortions after making adjustments to the frequency data. Suggestions include implementing a phase vocoder technique that sums time domain results from windowed analyses to create smoother transitions. The use of window functions, specifically the Hann and Hamming functions, is debated, with both showing minimal differences in performance during subjective testing. Ultimately, applying windowing techniques with appropriate overlap can help mitigate boundary issues in audio processing.
raminee
Messages
15
Reaction score
3
TL;DR Summary
How to overcome the distortions that result in editing in frequency domain before applying inverse FFT ?
Hello All,

I am somewhat familiar with FFT and iFFT and its uses.
However I have an issue when I edit in Freq domain and try to get back to time domain .

I have an audio signal in time domain that I transform to frequency domain using an FFT routine in block sizes of N points.
(in my case 256 samples)

I make some adjustments to the Real and Imaginary data based on some algorithm that I am working on.

I apply inverse FFT to get back to time domain.

I repeat this process for a number of blocks of N that forms my entire audio signal.

The resulted output audio signal has distortions mainly around the Block/Frame boundaries due to the changes that were made to the
real and imaginary samples in each Block.

How to remove block/frame boundary issues ?

Any suggestions would be helpful.

Thanks

Raminee
 
Mathematics news on Phys.org
I have no expertise in this, but it is interesting that the MATLAB phase vocoder described here sums up the time domain results from the analysis done in the windows. I suspect that makes the transitions smooth.
 
Thank you "FactChecker" for that info.
I have implemented the procedure as in the phase vocoder description and it works !!
THANKS AGAIN !!
Raminee
 
  • Like
Likes FactChecker
FactChecker said:
I have no expertise in this, but it is interesting that the MATLAB phase vocoder described here sums up the time domain results from the analysis done in the windows. I suspect that makes the transitions smooth.
I agree with this and the article linked to.

You can find out more about "windowing" at Window function and for this application the Hann function would be a suitable choice. Use blocks where each block is windowed by the Hann function and overlaps each of its neighbours by 50%.
 
I used Hamming window with 50% overlap.
Any reasons Hann function would be better ?
 
raminee said:
I used Hamming window with 50% overlap.
Any reasons Hann function would be better ?
Hann (a.k.a. Hanning) fades all the way to zero, whereas Hamming still has a small discontinuity. As the discontinuity is small, in practice you might not notice the difference. I'd be tempted to try both and see what difference it makes.
 
For anyone interested I tried both windows and it is very very hard to tell the difference in the outputs.
At least with the audio signals I tried they both performed equally well under subjective testing.
Thx
 
Back
Top