我的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
相关产品推荐
相关产品推荐

