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