首页 > 解决方案 > if 工作正常但 elif 抛出错误

问题描述

我正在编写一个 python 代码(提供);但是当我说“打开照片”时,一切正常,它会识别出我说的是“打开照片”,但会抛出 except 语句而不是 'elif listen() == "open photos": output'。请帮助我。

import speech_recognition as sr
import pyttsx3
import time
friday = pyttsx3.init('sapi5')
r = sr.Recognizer()
mic = sr.Microphone()
friday.setProperty('rate', 150)
def listen():
     with mic as source:
         r.adjust_for_ambient_noise(source)
         audio = r.listen(source)
         try:
           text =  r.recognize_google(audio)
           print(text)
           return text
         except sr.UnknownValueError:
          friday.say("sorry sir , could't do that")
          friday.runAndWait()
print("started!")
while 1:
    if listen() == "hello Jarvis":
        friday.say("hello sir")
        friday.runAndWait()
    elif listen() == "open photos":
            friday.say("opening")
            friday.runAndWait()

标签: pythonspeech-recognition

解决方案


我认为你需要的是更好的关注。 listen将消耗输入;再次调用它会迫使您重复该短语。相反,第一次要注意。:-)

heard = listen()
if heard == "hello Jarvis":
    friday.say("hello sir")
    friday.runAndWait()
elif heard == "open photos":
    friday.say("opening")
    friday.runAndWait()

请注意,如果您一致地缩进,您的代码更易于阅读:同一处理级别的代码,即使是在独立块之间,也应该缩进到同一级别。


推荐阅读