2017-08-28 211 views
2

每当我尝试读取.wav文件时,出现以下错误。 我到处搜索,但没有任何进展。
CODE:Scipy io读取wavfile错误

import scipy as sp 
import matplotlib.pyplot as plt 
sr, y = sp.io.wavfile.read(MY_FILENAME) 
print sr 


错误:

File "/usr/local/lib/python2.7/dist-packages/scipy/io/wavfile.py", line 252, in read 
    fmt_chunk = _read_fmt_chunk(fid, is_big_endian) 
    File "/usr/local/lib/python2.7/dist-packages/scipy/io/wavfile.py", line 94, in _read_fmt_chunk 
    raise ValueError("Unknown wave file format") 
    ValueError: Unknown wave file format 

更新:

后,我试着将我的文件通过@velikodniy使用SOX建议:

sox MY_FILENAME.wav MY_FILENAME.wav 

但它抛出一个警告:

sox WARN wav: Premature EOF on .wav input file 

现在,如果我尝试发挥原有的.wav文件,它说,在媒体播放器支持的格式(以前是玩)

回答

2

WAV文件可能包含不同格式的音频数据。例如,MP3。 scipy.io.wavfile.read此刻只能读取PCM和浮点格式(准确地说WAVE_FORMAT_PCM和WAVE_FORMAT_IEEE_FLOAT)。

所以你必须用音频编辑器(例如Audacity或sox)转换你的音频文件。

+0

@velikodnly,你的意思是使用sox从wav转换为wav? – user5722540

+0

是的,我喜欢。 Sox支持多种内部WAV格式。如μ律,A律等。也许你的文件包含用其中一个编码的数据。不幸的是,sox不支持WAV内的mp3。 – velikodniy

+0

它仍然会引发警告,现在该文件即使在媒体播放器中也不会播放 – user5722540