1
$\begingroup$

I am trying to estimate the signal-to-noise ratio of a wave file (The wave file is a recording of a conversation in a room). I found examples where the Matlab scripts compare the wave file data to a noisy wave file. This noisy wave file is generated by either mixing Gaussian noise into the actual recording or they have mixed other sounds into the wave file and estimate the SNR.

How do I determine the noise floor for calculating SNR of a wave file? The reason for estimating the SNR of the recorded wave files is to determine if the speech content recorded in the file is useful or rendered by useless due to noise in the background.

$\endgroup$
  • $\begingroup$ If the only signal you have is the noisy recording, you can look for regions in your signal that contain noise only and thereby estimate the noise power. Here is a similar question: dsp.stackexchange.com/questions/4889/… $\endgroup$ – Deve Aug 14 '14 at 7:36
1
$\begingroup$

One method that is reasonable for white noise is to use a spectrogram. For each spectrum, compute a quantile value of the power bins and use that as the estimated noise floor. The quantile should be less than the maximum spectral occupancy of the speech. For example if the speech never fills more than 50% of the spectrum then the median (quantile 0.5) might be reasonable. If the speech fills more than half the spectrum then use a smaller quantile.

$\endgroup$
  • $\begingroup$ Did you mean use a smaller quantile of white noise? $\endgroup$ – Sai Aug 14 '14 at 17:35
  • $\begingroup$ What I mean by quantile X is to sort the power values and pick the one X percent above the minimum. $\endgroup$ – John Aug 14 '14 at 20:07

Your Answer

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

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