我试图使用scipy.io.wavfile.read获取wav文件的数据,但它始终返回以下错误消息: ValueError:文件意外结束。
我在这个网站上浏览了所有相关问题(我想)。但是他们都不起作用。我还尝试过将文件名写为 r 'Mozart 40 Allegro.wav'。
import scipy.io.wavfile
sample,data=scipy.io.wavfile.read('Mozart 40 Allegro.wav')
print(data)
注意 :其他人提到我的wav文件可能已损坏,因此我下载了sample wav file。这就是结果。 WavFileWarning:不理解块(非数据),请跳过它。 WavFileWarning)
但是有什么方法可以获取我需要的wav文件(莫扎特第40号交响曲,如果可能的话还可以加载其他古典音乐),该文件没有损坏并且没有给出我提到的第二条错误消息?
我正在做一个项目,这是至关重要的一步。
谢谢
谢谢 :最初,我使用了一些在线转换器,但是它们在保持文件完整无误的精确格式方面做得很糟糕,vlc可以处理此类错误,但可以没错始终使用sox进行转换和其他操作,如果正在使用mp3,请不要忘记添加所需的额外文件((文件)。
答案 0 :(得分:0)
对空格使用下划线:
sample,data=scipy.io.wavfile.read('Mozart_40_Allegro.wav')
尝试:
import soundfile as sf
audio = sf.read("file")
答案 1 :(得分:0)
我对某些未使用正确标头创建的文件有一些类似的问题。为了解决这个问题,我首先使用 ffmeg 将文件从 wav 转换为 wav。这会为 wav 文件创建元数据。
那么接下来的步骤应该或多或少:
ffmpeg -i "Mozart 40 Allegro.wav" -f wav -acodec pcm_s16le -ar 22050 -ac 1 "Mozart 40 Allegro_.wav"
然后新创建的文件应该有正确的元数据。所以现在它在python上打开时不应该引发错误:
sample,data=scipy.io.wavfile.read('Mozart 40 Allegro_.wav')