【NumPy】wavファイルの音声をFFTする

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()

タイトルとURLをコピーしました