【问题标题】:Python alsaaudio capturing soundPython alsaaudio 捕捉声音
【发布时间】:2016-09-26 03:48:04
【问题描述】:

我正在尝试从麦克风捕获数据。代码非常简单,但由于某种原因我收到错误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。得到同样的错误。这似乎是一个错误。

【问题讨论】:

  • 尝试将利率和周期降低到非常低的水平?
  • @Torxed 7/1 用于速率/周期工作。 8/1 没有。但是..什么都没有打印出来。
  • 一定要用alsaaudio吗?你可以试试sounddevice ...

标签: python ubuntu audio alsa pyalsaaudio


【解决方案1】:

首先在你的代码中,

len, frame = recoder.read()

len是python中的关键字,不能这样作为变量使用。

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

【讨论】:

    猜你喜欢
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多