I am playing with noise suppression for voice processing applications. I have done a bit of reading and thought it sensible to ask if anyone could advise me as to a good place to start. I am familiar with spectral subtraction and have played with it a bit but avoiding artefacts seems to be an issue. Any advice would be appreciated with techniques or post processing to remove artefacts. Thanks
NB: I am assuming a office/home environment (not an F16).
you may check this book;
a python based solutions;
I would first check spectrogram for 'clean' and 'noisy' recordings first. It always helps..
Spectral Subtraction produces artifacts over the entire frame length of your current STFT (short term fourier transform). To reduce these artifacts, start with overlapping your frames and windowing (hanning window for example) them. Alternatively you could use the MDCT which gives you real coefficients instead of complex ones and windowing is already a part of it.
In my experience, parameters are crucial in noise suppression. Smoothing factors, STFT block size, noise overestimation (how much do you subtract) can make the difference between a good and a bad noise removal. Generally slow changes make less artifacts so you could start out by smoothing the noise spectrum a lot...