Computing the “signal to noise” ratio of an audio file is pretty simple if it’s already a wav file – if not, I suggest you convert it to one first.
If you’re doing a lot of these, this can take up a lot of disk space – I’m doing audio lectures, which are on average 30mb mp3s. I’ve found it helpful to think about trying to write scripts that you can ctrl-c and re-run.
One minor note here is that audio files are typically one or two channels (left-right), so you can potentially have two values for signal-to-noise. You should be able to add these together without issue, if you wish to get one value.
This does [1] on the wavfile data, as [0] has the sample rate.
import scipy.io.wavfile as wavfile
import numpy
import os.path
def snr(file):
if (os.path.isfile(file)):
data = wavfile.read(fileWav)[1]
singleChannel = data
try:
singleChannel = numpy.sum(data, axis=1)
except:
# was mono after all
pass
norm = singleChannel / (max(numpy.amax(singleChannel), -1 * numpy.amin(singleChannel)))
return stats.signaltonoise(norm)