我试图处理涉及audioop.avg()
的WAV文件中的声音数据,但它失败了:
>>> import audioop, wave
>>> wf = wave.open('sound.wav', 'rb')
>>> averages = [audioop.avg(frame, 4) for frame in wf.readframes(1024)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
audioop.error: not a whole number of frames
这个错误是什么意思?它失败的第一个价值是&#39; \ x00&#39;这是一个合法的整体框架,所以我不明白为什么它会抛出这个例外。
答案 0 :(得分:0)
(至少)有两个问题:
audioop.avg()
。这就是为什么它在抱怨。只需删除for
并将数据直接发送到audioop.avg()
。audioop.avg()
的第二个参数应该是样本宽度,可能是也可能不是4.您应该使用wf.getsampwidth()来查找。