TypeError: slice indices must be integers or None or have an index method
とエラーが出ました。
コードには以下のように書きました。
#coding:utf-8 import wave import numpy as np from pylab import * def wavread(filename): wf = wave.open(filename, "r") fs = wf.getframerate() x = wf.readframes(wf.getnframes()) x = np.frombuffer(x, dtype="int16") / 32768.0 # (-1, 1)に正規化 wf.close() return x, float(fs) if __name__ == "__main__": # 音声をロード wav, fs = wavread("test.wav") t = np.arange(0.0, len(wav) / fs, 1/fs) # 音声波形の中心部分を切り出す center = len(wav) / 2 # 中心のサンプル番号 cuttime = 0.04 # 切り出す長さ [s] z = center-cuttime/2*fs q= center + cuttime/2*fs wavdata = wav[z:q] time = t[z:q] # 波形をプロット plot(time * 1000, wavdata) xlabel("time [ms]") ylabel("amplitude") savefig("waveform.png") show()
Traceback には
Traceback (most recent call last): File "test.py", line 24, in <module> wavdata = wav[z:q] TypeError: slice indices must be integers or None or have an __index__ method
と表示されました。
しかし、zもqもint型であるためなぜこのエラーが起きるのかが分かりません。
どのように直せば良いのでしょうか?
print(type(z)) とすると変数の型を確かめられます。

回答1件
あなたの回答
tips
プレビュー