Python alsaaudio捕获声音

时间:2016-05-27 17:55:29

标签: python ubuntu audio alsa pyalsaaudio

我正在尝试从麦克风捕获数据。代码非常简单,但出于某种原因我收到了错误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

OS Ubuntu 16.04。 有谁知道问题是什么?

更新

删除recoder.setchannels(1)可以解决这个问题,我可以将速率/周期设置为8000/80并且可以正常工作但不能设置为8000/10。得到了同样的错误。这似乎是一个错误。

1 个答案:

答案 0 :(得分:0)

首先在你的代码中,

len, frame = recoder.read()

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

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