2013年7月13日土曜日

wave関係

pythonのwaveモジュールを用いて,waveファイルの情報抽出,読み込みを行う.なお,1行目のfrom __future__ import divisionは整数と整数を小数で出力するおまじない.
from __future__ import division
import wave
from pylab import *
from numpy import *

def printWaveInfo(wf):
    print "Number of channels: ", wf.getnchannels()
    print "Sampel width: ", wf.getsampwidth()
    print "Sampling frequency: ", wf.getframerate()
    print "Number of frames: ", wf.getnframes()
    print "Parameters: ", wf.getparams()

def wavread(wf):
    buffer = wf.readframes(wf.getnframes())
    data = frombuffer(buffer, dtype="int16")
    return data

if __name__ == '__main__':
    wf = wave.open("./wave/guitar_A4.wav", "r")
    printWaveInfo(wf)
    x = arange(wf.getnframes())
    y = wavread(wf)
    fs = wf.getframerate()
    x = x / fs
    
    plot(x, y)
    xlabel("Time [sec]", fontsize = 20, fontname = 'serif')
    ylabel("Amplitude", fontsize = 20, fontname = 'serif')
    xticks(fontsize = 16)
    yticks(fontsize = 16)
    show()

0 件のコメント :

コメントを投稿