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

我的Python语音识别代码无法监听语音,此前正常运行,求解决方法

问题排查与修复方案

代码里的核心问题

  • 麦克风实例未正确绑定:你在循环里创建了Microphone(device_index=4),但没把这个实例赋值给mic变量,后续with mic as source用的还是最初创建的默认麦克风。而且硬编码device_index=4大概率不是当前可用的麦克风索引,应该用循环遍历到的device_index。
  • 缺少环境噪音校准:没有调用r.adjust_for_ambient_noise(source),识别器无法区分背景噪音和语音,可能导致listen()一直卡在等待有效语音输入的状态。
  • 无异常处理机制:recognize_google()可能抛出无法识别语音、网络请求失败等异常,没捕获这些异常的话,程序会直接崩溃,你也看不到具体错误原因。

修复后的代码

import speech_recognition as sr

r = sr.Recognizer()
# 获取可用麦克风列表
working_mics = sr.Microphone.list_working_microphones()
if not working_mics:
    print("No working microphones found!")
    exit()

# 使用第一个可用的麦克风设备
mic = sr.Microphone(device_index=next(iter(working_mics.keys())))

with mic as source:
    print("say something:")
    # 校准环境噪音,采集1秒背景音
    r.adjust_for_ambient_noise(source, duration=1)
    try:
        # 设置超时时间,避免无限等待
        audio = r.listen(source, timeout=5, phrase_time_limit=10)
        # 指定中文识别,适配国内场景
        request = r.recognize_google(audio, language="zh-CN")
        print(f"识别结果: {request}")
    except sr.WaitTimeoutError:
        print("等待语音输入超时,请重试")
    except sr.UnknownValueError:
        print("无法识别语音,请清晰说话后重试")
    except sr.RequestError as e:
        print(f"调用Google语音识别服务失败: {e}")

额外排查方向

  • 打印working_mics查看可用麦克风的索引和对应设备,确认你使用的是正确的设备:print(working_mics)。
  • 用PyAudio录制一段音频测试,确认麦克风硬件本身能正常工作。
  • 如果使用Google语音识别,检查网络是否稳定,网络不通会导致识别请求失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:30:49