2014-10-11 108 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