wave.Error: file does not start with RIFF idとエラーが出ました。
views.py に
from mfcc import * import numpy as np import os if __name__ == "__main__": train_label = np.array([]) test_label = np.array([]) nfft = 2048 nceps = 12 train_data = np.empty((0, 12), float) test_data = np.empty((0, 12), float) directory = os.listdir('/sound_app/sounds') for file_name in directory: feature = get_feature(file_name, nfft, nceps) if len(train_data) == 0: train_data = feature else: train_data = np.vstack((train_data, feature)) train_label = np.append(train_label) test_label = np.append(test_label,file_name)
と書いてmfcc.pyに
import wave import numpy as np import scipy.signal import scipy.fftpack import scipy.fftpack.realtransforms from pylab import * def get_feature(wavfile,nfft,nceps): wav,fs = wavread(wavfile) t = np.arange(0.0,len(wav)/fs,1/fs) center =len(wav)/2 cuttime = 0.8 global wavdata wavdata = wav[int(center-cuttime/2*fs):int(center+cuttime/2*fs)] global time time = t[int(center-cuttime/2*fs):int(center+cuttime/2*fs)] ceps = mfcc(wavdata,nfft,fs,nceps) return ceps.tolist()
と書きました。
/sound_app/soundsにはたくさんのwavファイルが入っていて、これらのwav ファイルは本当にwavファイルなのか確認するためコマンドを打つと
RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz
と戻ってきてwavファイルであることが確認できました。なぜこのようなエラーが出てしまうのでしょうか?どのようにエラーを直せば良いでしょうか?Tracebackには
Traceback (most recent call last): File "sound.py", line 24, in <module> feature = get_feature(file_name, nfft, nceps) File "/Users/xxx/sound_recognition/mfcc.py", line 76, in get_feature wav,fs = wavread(wavfile) File "/Users/xxx/sound_recognition/mfcc.py", line 13, in wavread wf = wave.open(filename,"r") File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wave.py", line 511, in open return Wave_read(f) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wave.py", line 164, in __init__ self.initfp(f) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wave.py", line 131, in initfp raise Error, 'file does not start with RIFF id' wave.Error: file does not start with RIFF id
と出ました。
例外が出ている行がどこかや、wavreadが何者かわかるようにimportを明記していただいたほうがよいと思います。

情報を追加しました。もし何かお分かりでしたらお願いいたします。
残念ながら・・・自分の環境(python 3.6.0 Windows)ではmfcc.pyと同じimportをしてもwavreadがないと言われます。pythonのバージョンや各ライブラリーのバージョンも書いた方がよいかも知れませんね。
waveファイルはどのようなコマンドで確認しましたか?また、そのwaveファイルの先頭数十バイト程度を16進表記で提示ください。
手軽に16進数でダンプするには次のようにすればよいと思います。(Linux/Macどちらでも大丈夫かな..)
od -tx1 xxx.wav | head -5

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