%pylab inline
#rcParams['figure.figsize'] = (10, 4) #wide graphs by default
from __future__ import print_function
from __future__ import division
Populating the interactive namespace from numpy and matplotlib
import wave
import glob
from scipy.io import wavfile
from scipy.signal import freqs
Paths=glob.glob('C:/Users/Meera/AppData/Local/Temp/media/*.wav')
print(Paths) #Reading paths of audio in this order - Goleckenspiel, Piano, Tom
['C:/Users/Meera/AppData/Local/Temp/media\\glockenspiel.wav', 'C:/Users/Meera/AppData/Local/Temp/media\\piano.wav', 'C:/Users/Meera/AppData/Local/Temp/media\\tom.wav']
def findfreq (sr,samples): #Defining a function to calculate the frequency
N=len(samples)
num=(N/2)+1
X=fft.rfft(samples,len(samples)) #Computing one real FFT with frame size equal to the number of samples for each file.
Magspec=abs(X)/(N/2)
nyquist = sr/2.0
freq = linspace(0, nyquist, num, endpoint=True) #Converting to frequency scale
Totalenergy=sum(Magspec)
Cutoffbin=where(cumsum(Magspec)>=0.95*Totalenergy)[0][0] # creating a cut off to restrict signal to 95% of total energy
cutofffreq=Cutoffbin*sr/len(samples)
subplot(121)
plot(freq, Magspec)
xlabel('frequency')
ylabel('magnitude')
plt.axvline(cutofffreq,color='r',label='{:2f}Hz'.format(cutofffreq)) #Red line indicated the cut off frequency
legend()
subplot(122)
plot(freq,20*log10(Magspec/Totalenergy)) #Converting to db scale
xlim(0,cutofffreq)
xlabel('frequency')
ylabel('magnitude-db')
gcf().set_figwidth(18)
peakbin=argmax(Magspec) #Finding maximum argument
peakfreq=peakbin*sr/len(samples) #Converting to frequency in Hz
print('The peak frequency is {:f}Hz'.format(peakfreq))
sr, samples = wavfile.read(Paths[0])
print(Paths[0])
findfreq(sr,samples)
C:/Users/Meera/AppData/Local/Temp/media\glockenspiel.wav The peak frequency is 1323.342835Hz
sr, samples = wavfile.read(Paths[1])
print(Paths[1])
findfreq(sr,samples)
C:/Users/Meera/AppData/Local/Temp/media\piano.wav The peak frequency is 78.057861Hz
sr, samples = wavfile.read(Paths[2])
print(Paths[2])
findfreq(sr,samples)
C:/Users/Meera/AppData/Local/Temp/media\tom.wav The peak frequency is 92.565431Hz