fft()メソッドでFFT(高速フーリエ変換)を行い、wavファイルの音声の周波数スペクトルを求める。
import numpy as np
import wave
import matplotlib.pyplot as plt
filename = "sample.wav"
w = wave.open(filename, 'rb')
data = w.readframes(w.getnframes())
w.close()
fs = w.getframerate()
s = (np.frombuffer(data, dtype="int16") / 32767.0)[0:fs]
F = np.fft.fft(s)
F_abs = np.abs(F)
F_a = F_abs / fs * 2
F_a[0] = F_abs[0] / fs
plt.plot(F_a[:int(fs/2)+1])
plt.show()