2017-08-28 237 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