我正在尝试从麦克风捕获数据。代码非常简单,但是由于某种原因,我收到了alsaaudio.ALSAAudioError: Capture data too large. Try decreasing period size
错误。尝试谷歌,但没有...
res = []
recoder = alsaaudio.PCM(type=alsaaudio.PCM_CAPTURE)
recoder.setchannels(1)
recoder.setrate(8000)
recoder.setperiodsize(80)
recoder.setformat(alsaaudio.PCM_FORMAT_S8)
while len(res) < 8000*5:
len, frame = recoder.read()
if len(frame) != 0:
print(len)
res.extend(frame)
最有趣的部分是减少并没有帮助。但是增加会更改错误:周期大小大于135会给我
Input output error
。操作系统Ubuntu 16.04。
有人知道问题出在哪里吗?
更新
删除recoder.setchannels(1)可以解决问题,我可以将rate / period设置为8000/80,并且可以,但是不能设置为8000/10。得到了同样的错误。好像是个错误。
最佳答案
首先在您的代码中,
len, frame = recoder.read()
len是python中的关键字,您不能将其用作变量。
否则它会在我的笔记本电脑操作系统上运行,您没有提到任何此类错误,但是我确实遇到了与您相同的问题。
我所做的是指定PCM模式并为其指定适当的周期大小。