2014-10-11 69 views
1

我在(通过ipython)读取声音文件.wav。当我尝试“正常”的代码读取文件:在python中读取.wav文件

from scipy.io.wavfile import read 

(fs,x) = read ('/Users/joehigham/Desktop/Audio_1.wav') 

我得到的

众所周知的回溯呼叫
ValueError: string size must be a multiple of element size 

任何人都可以点我在正确的方向,为什么出现这种情况,和当然我该如何解决这个问题呢?

在此先感谢 - 我确实看了解这个解决方案,但没有任何东西(我发现)似乎将这个问题与声音文件相匹配。

+0

我想我应该加...可以这样做与文件的采样率(24位等)? – joesh 2014-10-11 12:49:08

+0

无论哪种方式文件无效,或者你需要更新scipy – stark 2014-10-11 12:51:09

+0

我试过'pip install --upgrade scipy'并得到 '需求已经最新:/Library/Frameworks/Python.framework/Versions/2.7中的scipy/lib/python2.7/site-packages' – joesh 2014-10-11 12:55:19

回答

2

你的wav文件可能有24位数据。你可以检查:

import wave 
w = wave.open("filename.wav") 
print w.getsampwidth() 

如果打印值是3,你的数据是24位。如果是这种情况,scipy.io.wavfile将不起作用。我写了一个处理24位数据的阅读器;见https://github.com/WarrenWeckesser/wavio(它取代 https://gist.github.com/WarrenWeckesser/7461781 的要点)。读者也是on PyPI

+0

确实是这样!我刚刚尝试了Audacity的一个wave文件,并且非常棒。我会在一分钟内更新我的答案,这样可以节省其他人试图解决已解决的问题。感谢您的信息。 – joesh 2014-10-11 13:59:26