如何解决无录音时出现的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
相关产品推荐
相关产品推荐

