octaveからscipy/numpy/matplotlibに移行する事にした.
octaveも別に悪くはないんだけど,GUIとの連携が弱すぎた…
とりあえず,このサイトを参考にしてスペクトログラムを表示してみた.
spectrogram.py
#!/usr/bin/env python
import sys
import wave
import urllib2
import scipy as sp
import matplotlib.pyplot as plt
if __name__ == "__main__":
if len( sys.argv ) > 1:
wo = wave.open( sys.argv[1], 'rb' )
else:
url = 'http://www.it.ice.uec.ac.jp/SRV-DB/archive/HENSHU00_PF00/HENSHU00_PF00_0951.wav'
wo = wave.openfp( urllib2.urlopen( url ).fp, 'rb' )
chunk = 65536
data = sp.fromstring( wo.readframes( chunk ), sp.int16 )
srate = wo.getframerate()
nFFT = 1024
window = sp.hamming(nFFT)
Pxx, freq, bins, im = plt.specgram(
data,
NFFT=nFFT,
Fs=srate,
noverlap=512,
window=window)
plt.show()