【发布时间】:2019-11-02 03:45:22
【问题描述】:
我的问题
我正在尝试拟合一个(机器学习)模型,该模型接收音频文件 (.wav) 并从中预测情绪(多标签分类)。
我正在尝试从文件中读取采样率和信号,但是当从scipy.io.wavfile 调用read(filename) 时,我得到ValueError: Incomplete wav chunk.
我尝试过的
我尝试从
scipy.read()切换到librosa.read()。
它们都输出信号和采样率,但由于某种原因,librosa比scipy花费的时间成倍增长,这对我的任务来说是不切实际的。我已经按照here 的建议尝试了
sr, y = scipi.io.wavfile.read(open(filename, 'r')),但无济于事。我已尝试查看我的文件并检查可能导致它的原因:
在所有 2084 个 wav 文件中,有 1057 个是好的(=scipy 设法读取它们),并且 1027 错误(=引发错误)。
我似乎找不到任何关于是什么使文件通过或失败的东西,但尽管如此,这是一个奇怪的结果,因为所有文件都是从同一个 origin 的同一个数据集中获取的。-
我听说有人说我可以使用某些软件将文件重新导出为 wav,它应该可以工作。
李>
我没有尝试这个,因为 a) 我没有任何音频处理软件,这似乎有点矫枉过正,b) 我想了解实际问题而不是贴上创可贴。
最小的、可重现的例子
假设filenames 是我所有音频文件的子集,包含fn_good 和fn_bad,其中fn_good 是要处理的实际文件,fn_bad 是引发错误的实际文件。
def extract_features(filenames):
for fn in filenames:
sr, y = scipy.io.wavfile.read(fn)
print('Signal is: ', y)
print('Sample rate is: ', sr)
附加信息
使用VLC,似乎scipy.io.wavfile支持编解码器,但无论哪种情况,两个文件都有相同的编解码器,所以很奇怪它们没有相同的效果......
GOOD 文件的编解码器:
【问题讨论】:
标签: python machine-learning audio scipy