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

树莓派Python音频驱动故障:语音识别程序报错求助

树莓派Python语音识别报错解决方案

一、先解决ALSA底层音频问题

  • 确认音频设备识别状态:执行arecord -l列出输入设备,aplay -l列出输出设备,确保目标设备(如USB麦克风、板载音频)出现在列表中。
  • 设置默认ALSA设备:创建或修改~/.asoundrc文件,添加以下内容(替换plughw:0,0为你的设备ID,来自上述命令输出):
    pcm.!default {
        type hw
        card 0
        device 0
    }
    ctl.!default {
        type hw
        card 0
        device 0
    }
    
  • 测试音频输入是否正常:执行arecord -D plughw:0,0 -d 5 test.wav录制5秒音频,再用aplay test.wav播放,确认能正常录制和播放。
  • 修复ALSA权限:将当前用户加入audio组,执行sudo usermod -a -G audio pi,重启系统后生效。

二、排查Python语音识别库依赖与配置

  • 升级或重装核心依赖:执行pip install --upgrade SpeechRecognition pyaudio,如果pyaudio安装失败,改用系统包安装:sudo apt install python3-pyaudio。
  • 强制指定音频设备索引:在代码中明确指定设备ID,比如使用SpeechRecognition库时:
    import speech_recognition as sr
    r = sr.Recognizer()
    # 替换device_index为arecord -l中显示的设备索引(从0开始)
    mic = sr.Microphone(device_index=0)
    
  • 确保音频格式兼容:大部分语音识别API要求音频为16kHz采样率、16位深度、单声道,录制时强制设置格式:
    with mic as source:
        r.adjust_for_ambient_noise(source)
        audio = r.listen(source, sample_rate=16000)
    

三、解决代码层面的异常

  • AssertionError:通常是代码中断言条件不满足,比如音频输入为空或设备索引无效。可在代码中添加设备存在性检查:
    mic_list = sr.Microphone.list_microphone_names()
    if not mic_list:
        raise RuntimeError("No microphone detected")
    # 确认使用的索引在有效范围内
    assert 0 <= device_index < len(mic_list), "Invalid device index"
    
  • AttributeError:多是调用了不存在的方法/属性,比如API拼写错误或使用废弃方法。检查代码中是否有拼写错误(如把recognize_google写成recognize_goole),同时确保仅将listen()返回的AudioData对象传给识别函数。

四、其他排查方向

  • 检查树莓派供电:供电不足会导致音频芯片工作异常,使用官方5V/2.5A电源适配器。
  • 关闭其他占用音频的程序:避免录音、播放类软件占用音频设备。

内容的提问来源于stack exchange,提问作者Jim Bellette

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:57:17