【问题标题】:error handling speech_recognition WaitTimeOutError错误处理 speech_recognition WaitTimeOutError
【发布时间】:2020-04-17 04:09:03
【问题描述】:

当我试图运行这段代码时

  import speech_recognition as sr  #importing sr
r = sr.Recognizer()

with sr.Microphone() as source:
    print("speak into mic")
    audio = r.listen(source,timeout=2)


try:
    print("Transcription:" + r.recognize_google(audio))
except sr.UnknownValueError:
    print("Audio Unintelligible")

except sr.RequestError as e:
    print("cannot obtain results : {0}".format(e))

except sr.WaitTimeoutError as k :
    print("time out")    #error handler for time out error

当我运行上面的代码时,它会给出这样的错误

speak

 into mic
Traceback (most recent call last):
  File "C:/Users/punna/PycharmProjects/alex/alex.py", line 6, in <module>
    audio = r.listen(source,timeout=2)
  File "C:\Users\punna\Anaconda3\lib\site-packages\speech_recognition\__init__.py", line 544, in listen
    raise WaitTimeoutError("listening timed out while waiting for phrase to start")
speech_recognition.WaitTimeoutError: listening timed out while waiting for phrase to start

我写了异常,但是又报错了

谁能帮帮我

【问题讨论】:

  • 堆栈跟踪提到有问题的行是audio = r.listen(source,timeout=2),所以如果你想处理那个异常,你应该把那行换成try / except

标签: python python-3.x speech-recognition pyaudio


【解决方案1】:

这是因为您将超时保持了有限的时间。尝试不超时或保持超时至少超过 5

【讨论】:

  • 我试了 6 秒钟,它给出的错误是一样的,没有变化
  • 如果用户在 3 秒内没有说话,我只想停止进程
  • 或者,试试
  • 没有超时
【解决方案2】:

这可能有助于我刚刚添加了 return "none" 语句,以便在出现问题时返回 none,我还添加了 phrase_time_limit 到 5 和 query = r.recognize_google(voice,language='en-in')此语句将用户说出的单词识别为变量而不是此语句 print("Transcription:" + r.recognize_google(audio)) 然后它起作用了试试这可能会帮助你

 r = sr.Recognizer()
 with sr.Microphone() as audio:
     speak('Listening...')
     r.pause_threshold = 1
     voice = r.listen(audio,timeout=1,phrase_time_limit=5)
 try:
     print("Thinking...")
     query = r.recognize_google(voice,language='en-in')
     print("Transcription:"+query) 

 except Exception as e:
     print("I am Sorry There is an error while i am recognizimg your command")
     return "none"
 return query

【讨论】:

  • 请解释一下代码的作用和它是怎么做的。
  • 这可能有助于我刚刚添加了 return "none" 语句,以便在出现问题时返回 none,我还添加了phrase_time_limit 到 5 和 query = r.recognize_google(voice,language=' en-in') 这个语句将用户说出的单词识别成一个变量而不是这个语句 print("Transcription:" + r.recognize_google(audio)) 然后它起作用了试试这可能对你有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-18
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多