You need to enable JavaScript to run this app. Python语音识别开发遇NameError提示statement未定义的异常捕获失效问题
优惠活动
大模型
产品
解决方案
定价
更多

Python语音识别开发遇NameError提示statement未定义的异常捕获失效问题

报错核心原因
  • 变量赋值逻辑漏洞:statement 仅在语音识别流程执行成功时才会被赋值。一旦触发sr.UnknownValueError(即用户未发出可识别的有效语音),代码会直接跳转至对应except分支执行错误提示打印,全程不会运行到statement的赋值语句。
  • 异常捕获作用域失效:代码中新增的except NameError分支,仅能捕获try块运行过程中抛出的同类错误。本次报错实际发生在try块结束后的独立条件判断语句中,完全不在异常捕获的覆盖范围内,拦截逻辑自然失效。
修正实现
  • 在try块执行前为statement设置空字符串默认值,从根源上规避变量未定义问题
  • 识别失败时直接跳过唤醒词判断流程,无有效识别结果时默认将唤醒标记设为False,避免无效变量访问

修正后代码:

r = sr.Recognizer()
with sr.Microphone() as source:
    print("Say Anything: ")
    audio = r.listen(source)
    # 提前初始化变量,杜绝未定义报错
    statement = ""
    try:
        statement = r.recognize_google(audio).lower()
        print("You said : {}".format(statement))
    except sr.UnknownValueError:
        print(random.choice(command_errors))
    # 无有效识别结果时直接跳过后续判断
    if not statement:
        Wake = False
    else:
        if ai_name in statement:
            engine.say("At your service")
            response_to_wake = ("At your service, " + user_pronoun.lower())
            engine.runAndWait()
            print(response_to_wake)
            Wake = True
        else:
            Wake = False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 06:54:00