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

如何解决无录音时出现的speech_recognition.exceptions.UnknownValueError错误

问题解决:无语音输入时避免崩溃并重新提示

你遇到的核心问题是:当没有可识别的语音输入时,recognize_google方法会抛出UnknownValueError,导致程序直接崩溃。要实现无输入时重新提示录音的需求,只需给语音识别逻辑加上异常捕获即可。

错误信息(中文翻译)

回溯(最近的调用最后):
文件 "c:\Users\4136\Desktop\AI Operator\Python\test5.py",第26行,在 <module>
text = r.recognize_google(audio_data) # 英文录音
文件 "C:\Users\4136\AppData\Local\Programs\Python\Python310\lib\site-packages\speech_recognition\__init__.py",第728行,在 recognize_google
if not isinstance(actual_result, dict) or len(actual_result.get("alternative", [])) == 0: raise UnknownValueError()
speech_recognition.exceptions.UnknownValueError

修改后的代码

import speech_recognition as sr
import time

t_end = time.time() + 60 * 2
while time.time() < t_end:
    # 初始化识别器
    r = sr.Recognizer()
    with sr.Microphone() as source:
        WaitingTime = 10
        print("Speak for 10 seconds.............\n")
        
        # 录制指定时长的音频
        audio_data = r.record(source, duration=WaitingTime)
        print("Recognizing user voice.............\n")

        try:
            # 尝试将语音转文字
            text = r.recognize_google(audio_data) # 英文录音
            print('User Question is:', text, "?\n")
        except sr.UnknownValueError:
            # 捕获无有效语音的异常,提示后重新进入循环
            print("No valid speech detected, please try again.\n")

关键修改说明

  • 用try-except块包裹语音识别代码,精准捕获sr.UnknownValueError异常
  • 触发异常时打印提示信息,程序会自动回到外层循环,重新启动录音流程
  • 移除了多余的录制时长判断,因为r.record的duration参数会严格控制录制时间,无需额外校验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:47:46