使用PyAudio与SpeechRecognition触发ALSA断言错误该如何修复?
问题根因
该报错是PyAudio依赖的PortAudio底层库与Linux ALSA音频服务交互时触发的断言错误,绝大多数出现在Conda环境中:Conda源提供的预编译PyAudio包绑定的PortAudio版本存在ALSA兼容缺陷,调用麦克风设备时扫描到异常虚拟音频设备就会触发崩溃。
可行修复方案
- 第一步:卸载Conda环境中自带的预编译音频依赖
执行命令:
conda remove pyaudio portaudio
- 第二步:安装系统层面的PortAudio开发依赖(Debian/Ubuntu系发行版,其他发行版对应替换包名即可)
执行命令:
sudo apt install portaudio19-dev libasound2-dev
- 第三步:从源码编译安装PyAudio,绑定系统正常版本的PortAudio
执行命令:
pip install pyaudio --no-binary :all:
- 临时规避方案:若上述编译安装后仍存在问题,可手动指定麦克风设备索引,避免程序调用默认异常设备
先运行代码打印所有可识别的音频设备:
import speech_recognition as sr for index, name in enumerate(sr.Microphone.list_microphone_names()): print(f"设备索引 {index}: {name}")
选择对应实际麦克风的索引,初始化时显式指定:
mic = sr.Microphone(device_index=你选择的设备索引)
- 额外适配:如果运行环境为WSL,需要先完成WSL侧的音频转发配置,否则无法识别Windows宿主的音频设备。
内容的提问来源于stack exchange,提问作者FOREVEREALIZE
相关产品推荐
相关产品推荐

