scipy.io.wavfile.read

时间:2019-05-28 16:02:39

标签: python python-3.x scipy

我试图使用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,请不要忘记添加所需的额外文件((文件)。

2 个答案:

答案 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')