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.

  • $\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, 2014 at 7:36

1 Answer 1


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.

  • $\begingroup$ Did you mean use a smaller quantile of white noise? $\endgroup$
    – Sai
    Aug 14, 2014 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, 2014 at 20:07

Your Answer

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

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