After I use deep learning algorithm to enhance the speech, the speech will still have a weak background noise.The background noise of this audio has little effect on the calculation of SNR, but it does affect the hearing.I want to use traditional algorithms to eliminate the background noise.The frequency spectrum of audio looks like this: enter image description here

I try to use the HPSS(Harmonic Percussive Source Separation) algorithm to isolate the noise. The resulting noise spectrum looks like this: enter image description here

However, hpss can not completely separate clean speech from bottom noise, please see the spectrum diagram:

enter image description here

I also tried some simple algorithms like spectral subtraction.The effect is similar to or worse than hpss.And wiener-as,the effect is not bad (in terms of spectrum), but the human voice that sounds clean will change.

wiener-as: enter image description here

All algorithm code references come from this github repository: https://github.com/vipchengrui/traditional-speech-enhancement/tree/master

  • $\begingroup$ Could you please share some insight as to why you decided to use HPSS for denoising? It is not clear to me as HPSS is meant (as the name implies) to separate the percussive and harmonic parts of the spectrum. Wiener filtering sounds like a better candidate for this job unless the noise is comprised of discrete frequency components and you are trying to remove them by separating them with HPSS and then recombining both percussive and harmonic content with the noise components removed. $\endgroup$
    – ZaellixA
    Sep 12, 2023 at 8:22
  • $\begingroup$ My choice of hpss is an empirical one.I didn't really know what denoising algorithm was best for my task, so I was just blindly experimenting with different approaches. The hpss's percussive and harmonic separation did a good job of separating my clean audio from the noise in previous missions. $\endgroup$ Sep 12, 2023 at 8:35
  • $\begingroup$ I am definitely not an expert on the matter but have you considered the possibility that the effectiveness of the algorithm in denoising just happened to be the case for the specific signals? I am just speculating here as I don't really know the nature of your signals (either this or the previous ones you mentioned). Maybe providing some more info (and/or the actual audio file) on your noise could help a bit. $\endgroup$
    – ZaellixA
    Sep 12, 2023 at 8:43
  • $\begingroup$ I can't be able to provide my audio file, but I can describe the content of the audio. My noisy audio itself is a mixture of human voice and aircraft propeller noise, and then processed by a deep learning algorithm. My previous missions have been to separate the paddle noise from the human voice. $\endgroup$ Sep 12, 2023 at 8:57
  • $\begingroup$ What is important is what are the "leftovers" of the Neural Network denoising algorithm. Aircraft propeller is the initial noise but after passing through the NN, it most probably has very different characteristics than the original noise. This may dictate different approaches. As I said, I am not an expert and since I don't have any information about the noise, I would suggest going with a Wiener filtering approach which has some optimality based on the "Least Squares" sense. This may be suboptimal for your case and if you know the characteristics of the noise you may be able to do better. $\endgroup$
    – ZaellixA
    Sep 12, 2023 at 9:04


Your Answer

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

Browse other questions tagged or ask your own question.