I'm trying to implement a deep learning based dereverberation algorithm. The network I am using is inspired by the U-net. The idea is to supply the reverberated spectrogram as input and 'clean' it with the network, minimizing the MSE compared to the clean spectrogram. My problem, however, is the normalization of the spectrograms to be used for the train. Not doing a normalization in fact the train is very long and fails to bring very consistent results. I also emphasize that to create the dataset, I did not save the spectrograms as images, but as binary files, which I then re-read as two-dimensional arrays before sending them inputs to the network (to avoid problems with encoding the spectrograms as images). How can I normalize the log-spectrogram matrices? For example, on librosa there is the function Librosa.util.normalize ()

  • $\begingroup$ One thing to try is normalize to the total energy in the frame. I'm just curious: why would you use a spectrogram for this? Reverb is primarily a time domain phenomenon and the spectrum is only mildly affected by it. I always found it very difficult to distinguish between the spectral fine structure of the signal it self and the room modes. $\endgroup$
    – Hilmar
    Dec 24, 2021 at 13:33
  • $\begingroup$ The point is using image denoising tecniques, like the U-net. In last years many audio problems were solved by using Convolutional neural network, which are designed for images, not audio. Give a look: arxiv.org/abs/1803.08243 So , do you mean normalize each column of the stft matrix? $\endgroup$ Dec 24, 2021 at 17:45


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy