うまくいけばwavファイルからオーディオスペクトログラムを生成するPythonスクリプトをテストしようとしています。私はwavへのパスを入力する必要があると思いますが、エラーが発生します:IndexError:ここに入力して試したときに範囲外のインデックスを一覧表示します:
sr,x = scipy.io.wavfile.read('mySoundFile.wav')
コマンドラインで引数としてパスも試しましたが、正しくありません。何か助けはありますか?
http://mail.python.org/pipermail/chicago/2010-December/007314.html
"""
Compute and display a spectrogram.
Give WAV file as input
"""
import matplotlib.pyplot as plt
import scipy.io.wavfile
import numpy as np
import sys
wavfile = sys.argv[1]
sr,x = scipy.io.wavfile.read('BeatBoy01.wav')
## Parameters: 10ms step, 30ms window
nstep = int(sr * 0.01)
nwin = int(sr * 0.03)
nfft = nwin
window = np.hamming(nwin)
## will take windows x[n1:n2]. generate
## and loop over n2 such that all frames
## fit within the waveform
nn = range(nwin, len(x), nstep)
X = np.zeros( (len(nn), nfft/2) )
for i,n in enumerate(nn):
xseg = x[n-nwin:n]
z = np.fft.fft(window * xseg, nfft)
X[i,:] = np.log(np.abs(z[:nfft/2]))
plt.imshow(X.T, interpolation='nearest',
origin='lower',
aspect='auto')
plt.show()