You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派Zero 2上PyAudio启动失败:ALSA无法打开slave问题求助

解决树莓派Zero 2上PyAudio的"unable to open slave"报错

兄弟,我太懂你这种xkcd979时刻的憋屈了——找到一模一样的问题帖却连个回复都没有,换谁都挠头!先帮你把问题理清楚:

在全新树莓派Zero 2上运行PyAudio时程序卡住,核心报错如下:

Python 3.9.2 (default, Mar 12 2021, 04:06:34) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyaudio
>>> stream = pyaudio.PyAudio()
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_dmix.c:1075:(snd_pcm_dmix_open) unable to open slave

已尝试设置默认声卡、更换USB适配器,但问题依旧,同款配置在树莓派3上可正常运行。

下面是几个针对性的解决方案,你可以按顺序试试:

1. 强制指定PyAudio使用的设备

自动检测默认设备经常掉链子,先手动列出所有可用音频设备:

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

找到你的USB音频dongle对应的index值(比如输出里的"index": 1),然后初始化流的时候直接指定这个设备:

p = pyaudio.PyAudio()
stream = p.open(
    format=pyaudio.paInt16,
    channels=1,
    rate=44100,
    input=True,
    input_device_index=1  # 替换成你找到的设备索引
)

2. 修改ALSA配置文件

树莓派Zero 2的ALSA默认配置和3有差异,编辑/etc/asound.conf(没有的话直接新建),添加以下内容:

pcm.!default {
    type hw
    card 1  # 这里替换成你的USB声卡编号,用`aplay -l`命令可以查看
}

ctl.!default {
    type hw
    card 1
}

保存后重启ALSA服务或者直接重启树莓派:

sudo alsa force-reload

3. 重新编译安装PyAudio

预编译的PyAudio包可能和Zero 2的硬件兼容不佳,手动编译安装试试:
先卸载现有版本:

pip uninstall pyaudio -y

安装编译依赖:

sudo apt-get update && sudo apt-get install portaudio19-dev python3-dev -y

然后从源码编译安装:

pip install --no-binary :all: pyaudio

4. 检查电源供电

树莓派Zero 2的USB口供电能力比3弱,如果你的USB音频dongle功耗稍高,容易导致识别不稳定。试试换个5V 2A及以上的电源适配器,或者用带外接供电的USB hub连接音频设备。


内容的提问来源于stack exchange,提问作者Dan Humphreys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 14:37:28