Extract FFT from a wavfile and plot spectrogram

2017-04-02 jkang
Python3.5


In [1]:
%matplotlib inline
from extract_fft import *
import numpy as np
import scipy.io.wavfile as wav
import matplotlib.pyplot as plt

(1) Extract FFT


In [2]:
spec, timevec, freqvec = getFFT('test.wav')
print('Spectral data shape: {}'.format(spec.shape))
print('Time vector length: {}'.format(len(timevec)))
print('Frequency vector length: {}'.format(len((freqvec))))

plt.plot(spec[0,:]) # first fft vector
plt.xlim(0, len(freqvec)-1)
tickloc = [int(i) for i in np.linspace(0, len(freqvec)-1, 4)]
plt.xticks(tickloc, [freqvec[t] for t in tickloc])
plt.title('First Spectral Slice')
plt.show()


Spectral data shape: (92, 513)
Time vector length: 92
Frequency vector length: 513

(2) Plot spectrogram


In [3]:
plotstft("test.wav")


<matplotlib.figure.Figure at 0x10c2b9d30>