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

运行桌面助手Voicy时Python程序出现Traceback及WaitTimeoutError求助

解决speech_recognition库的WaitTimeoutError问题

问题原因

你遇到的WaitTimeoutError是因为r.listen(source, timeout=3)设置了3秒的超时时间,这段时间内程序未检测到任何语音输入,直接抛出异常导致程序崩溃。

解决方案

1. 捕获超时异常,避免程序崩溃

在调用r.listen()时加入异常处理,让程序超时后给出提示并继续运行,而非直接崩溃。修改takeCommand()函数:

import speech_recognition as sr

def takeCommand():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("Listening...")
        try:
            # 可根据需求调整timeout时长,比如改为5秒
            audio = r.listen(source, timeout=5)
        except sr.WaitTimeoutError:
            print("未检测到语音输入,请重新说话")
            return ""
    
    # 后续语音识别逻辑示例
    try:
        query = r.recognize_google(audio, language='zh-CN')
        print(f"你说的是: {query}")
        return query
    except sr.UnknownValueError:
        print("无法识别语音,请重新尝试")
        return ""

2. 调整超时参数

  • timeout:设置等待语音输入的最长时间(秒),如果需要更长等待时间,可把值调大(比如timeout=10)。
  • 可选添加phrase_time_limit参数:限制单次语音输入的最长时长,例如r.listen(source, timeout=5, phrase_time_limit=10),避免程序一直等待过长语音。

3. 检查麦克风设备

  • 确保麦克风正常工作,且当前Python程序有麦克风访问权限。
  • 可通过sr.Microphone.list_microphone_names()查看可用设备,指定正确的麦克风:
# 查看所有麦克风设备
print(sr.Microphone.list_microphone_names())
# 指定设备(比如索引为0的设备)
with sr.Microphone(device_index=0) as source:
    # 后续逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:13:13