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

Python开发语音虚拟助手运行报WaitTimeoutError错误如何解决

报错原因

该speech_recognition.WaitTimeoutError报错触发逻辑为:你调用r.listen()方法时设置了timeout=1参数,代表程序启动收音后仅等待1秒,如果1秒内没有检测到用户开始说话,就会直接抛出该超时异常终止运行。

修复方案
  • 调整超时参数:将timeout参数调大到3~5秒,给用户预留足够的反应时间,也可以直接删除timeout参数,程序会持续等待直到检测到语音输入再继续执行。
    修改前代码:
audio = r.listen(source, timeout=1, phrase_time_limit=5)

修改后参考:

# 调大超时时间到5秒
audio = r.listen(source, timeout=5, phrase_time_limit=5)
# 或者删除timeout参数,永不超时等待语音输入
# audio = r.listen(source, phrase_time_limit=5)
  • 单独捕获超时异常:原有代码仅做了全局异常捕获,建议单独捕获WaitTimeoutError做针对性处理,同时可以添加环境噪音校准逻辑,降低背景音对语音检测的干扰,优化后的完整函数如下:
def takecommand():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        # 校准环境噪音,提升语音检测准确率
        r.adjust_for_ambient_noise(source, duration=0.5)
        print("Listening...")
        r.pause_threshold = 1
        try:
            audio = r.listen(source, timeout=5, phrase_time_limit=5)
        except sr.WaitTimeoutError:
            print("超时未检测到语音输入")
            return "none"

    try:
        print("Recognizing...")
        query = r.recognize_google(audio, language='en-in')
        print(f"user said: {query}")

    except Exception as e:
        speak("say that again please...")
        return "none"
    return query
  • 检查硬件设备:确认你的麦克风设备已经正常连接、没有被系统禁用,且系统默认收音设备为你正在使用的麦克风,避免因硬件问题导致程序无法捕获语音。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:24:06