0

我正在尝试从麦克风捕获数据。代码非常简单,但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) 就可以了,我可以将速率/周期设置为 8000/80,它可以工作,但不能设置为 8000/10。得到同样的错误。这似乎是一个错误。

4

1 回答 1

1

首先在你的代码中,

len, frame = recoder.read()

len是python中的关键字,你不能像那样将它用作变量。

否则它在我的笔记本电脑操作系统上运行,没有你提到的这样的错误,但我确实遇到了和你一样的问题。我所做的是指定 PCM 模式并给它一个适当的周期大小。

于 2017-04-15T22:45:07.377 回答