gpt4 book ai didi

linux - Pyaudio 无法识别 ReSpeaker usb 麦克风 InputChannels

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:40 25 4
gpt4 key购买 nike

我已将 USB 麦克风(ReSpeaker 4 麦克风阵列 (UAC1.0))连接到我的 Gentoo Linux 机器。我想用那个 usb 麦克风用 pyaudio 录音。Pyaudio 检测到 USB 设备但未检测到其输入 channel 。

这是输出的相关部分:

import pyaudio
p = pyaudio.PyAudio()
for i in range(p.get_device_count()):
print p.get_device_info_by_index(i)

[...]

'maxOutputChannels': 2L, 'name': u'HDA Intel PCH: AD198x Analog (hw:0,0)', 'defaultHighInputLatency': -1.0}

{'defaultSampleRate': 16000.0, 'defaultLowOutputLatency': 0.024, 'defaultLowInputLatency': -1.0, 'maxInputChannels': 0L, 'structVersion': 2L, 'hostApi': 0L, 'index': 1, 'defaultHighOutputLatency': 0.096, 'maxOutputChannels': 2L, 'name': u'ReSpeaker 4 Mic Array (UAC1.0): USB Audio (hw:1,0)', 'defaultHighInputLatency': -1.0}

{'defaultSampleRate': 44100.0, 'defaultLowOutputLatency': -1.0, 'defaultLowInputLatency': 0.008707482993197279, 'maxInputChannels': 2L, 'structVersion': 2L, 'hostApi': 0L, 'index': 2, 'defaultHighOutputLatency': -1.0, 'maxOutputChannels': 0L, 'name': u'PrimeSense Device: USB Audio (hw:2,0)', 'defaultHighInputLatency': 0.034829931972789115}

[...]

什么时候

 $ arecord -l

成功检测到麦克风作为输入设备。

**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: AD198x Analog [AD198x Analog]
Subdevices: 0/2
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
card 1: ArrayUAC10 [ReSpeaker 4 Mic Array (UAC1.0)], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 2: Device [PrimeSense Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: Phone [MT65xx Android Phone], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0

我假设arecord和pyaudio是相互独立的,但是我该怎么做才能让 Pyaudio 将麦克风识别为麦克风?是否需要修改一些配置文件?

非常感谢任何帮助。

最佳答案

所以在我的例子中,pulseaudio 阻塞了设备。我找到了几个选项来改变这个:

  1. 使用 lsof | 检查 pulseaudio 是否阻止了设备 | grep "/dev/snd/"

    /etc/pulse/client.conf 中设置 autospawn = no link

    然后打电话

    pulseaudio --kill
    systemctl --user stop pulseaudio.socket
    systemctl --user stop pulseaudio.service

    之后 lsof | grep "/dev/snd/" 是空的并且

    import pyaudio
    p = pyaudio.PyAudio()
    for i in range(p.get_device_count()):
    print p.get_device_info_by_index(i)

    产量:

    [...] {'defaultSampleRate': 16000.0, 'defaultLowOutputLatency': 0.024, 'defaultLowInputLatency': 0.024, 'maxInputChannels': 6L, 'structVersion': 2L, 'hostApi': 0L, 'index': 3, 'defaultHighOutputLatency': 0.096, 'maxOutputChannels': 2L, 'name': u'ReSpeaker 4 Mic Array (UAC1.0): USB Audio (hw:3,0)', 'defaultHighInputLatency': 0.096} [...]

  2. 如果您仍然希望 pulseaudio 处理您的其他设备但忽略您的 USB 设备,这可以使用 udev 来完成。 link

  3. 另一个选项是卸载检测到 USB 设备的 pulseaudio 模块索引 link .

    调用 pactl list 并找到您设备的线路,例如:

    Owner Module: 7

    然后调用pactl unload-module 7

  4. 对我来说也有用的是卸载 module-udev-detect before 通过

    插入 USB 麦克风

    pactl unload-module module-udev-detect

关于linux - Pyaudio 无法识别 ReSpeaker usb 麦克风 InputChannels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57054059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com