I have to implement a function to get an accurate SNR value. For that, I would need a separate noise signal to get the signal power and noise power but I have only one noisy signal (a .wav file.) How can I extract noise from it or how can I find noise power from it?

  • 1
    $\begingroup$ Yeah, one sytem's noise is another system's signal. Your question is impossible to answer without describing both. $\endgroup$ Jul 15 at 11:23

In general, you need to know something about the signal and the noise in order to separate them and measure the signal power and the noise power.

As Marcus pointed out, one system's noise is another system's signal, so it's not possible to measure signal power or noise power with only a recording of received signal and no other information. From one recording, one person might consider the high-pitched flute music the "signal" and everything else noise, while another might consider narrowband Morse-code beeping the "signal" and everything else noise, and a third person might consider the exact timing of the doors clicking open and slamming shut to be the "signal" and everything else noise. That same recording has 3 different "signal power" for those 3 people.

There are many specific cases where we know enough about the signal and the noise that we can measure both signal power and noise power:

  • Some kinds of music and communication systems transmit only on a limited number of frequency bands, and often the noise is broadband nearly white noise. If so, we can look at the noise level between and outside those frequency bands, assume that the white noise is about the same inside those bands, and get a good estimate of the noise power.

  • Most modern communication systems (BPSK, OOK, FSK, QAM, COFDM, etc.) are completely digital. In many cases, the signal-to-noise ratio is high enough that it's possible to reconstruct exactly what the intended transmitted signal was, subtract that from the received signal, and what remains must be the error signal.

  • Some kinds of noise can be detected and separated from the desired signal. For example, if we are trying to receive a DSS or COFDM signal that lies in a known frequency band (and so the desired signal should be "flat" equal-power across the entire band), even if the signal-to-noise ratio is too small to decode the actual data (or the intended transmitted signal), we can still separate out transient spikes or an interfering sine-wave jammer and measure their noise power.

  • etc.

  • $\begingroup$ In my case, background noise is mixed with human speech, so it is obvious that signal is human speech. Basically I have one noisy signal (human speech mixed with background noise ), I want compare the signal before and after processing through noise reduction algorithm in order to validate the performance of these algorithm(how much of noise in db it is able to cancel ). For comparing both the signal I'm using SNR metric but I don't know correct approach. $\endgroup$
    – twinkle
    Jul 19 at 6:40

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.