Python wav画周波数スペクトル読み出し

1149 ワード

Pythonはwavオーディオファイルを読み取り、specgramでスペクトルを描きます
import wave
import struct
from scipy import *
from pylab import *
#  wav  ,         python     wav
filename = '1.wav'
wavefile = wave.open(filename, 'r') # open for writing
#  wav          。  numframes         frames,       。
nchannels = wavefile.getnchannels()
sample_width = wavefile.getsampwidth()
framerate = wavefile.getframerate()
numframes = wavefile.getnframes()
print("channel",nchannels)
print("sample_width",sample_width)
print("framerate",framerate)
print("numframes",numframes)
#   y   ,          frame amplitude。
y = zeros(numframes)
#for  ,readframe(1)     frame,     ,       。         。
#unpack struct      ,    http://docs.python.org/library/struct.html。       
#packed string        ,              tuple。             
#tuple,          。
for i in range(numframes):
    val = wavefile.readframes(1)
    left = val[0:2]
#right = val[2:4]
    v = struct.unpack('h', left )[0]
    y[i] = v
#framerate  44100,       。           !specgram!      。。。
Fs = framerate
specgram(y, NFFT=1024, Fs=Fs, noverlap=900)
show()