0

我正在做一个虚拟助手项目,speech_recognition但是由于某种原因,代码无法接收语音。预期的输出应该是这样的:

user: Titan
program: Waiting for command
user: open youtube
program: Opening Youtube

但目前它是这样的:

user: Titan
program: Waiting for command
user: open youtube
*program resets to listening for wake word*

我不太确定是听功能、听功能还是响应功能有问题:

听力功能:

    def hear(self, recognizer, microphone, response):
    try:
        with microphone as source:
            print("Waiting for command.")
            recognizer.adjust_for_ambient_noise(source)
            recognizer.dynamic_energy_threshold = 3000
            # May reduce the time out in the future
            audio = recognizer.listen(source, timeout=5.0)
            command = recognizer.recognize_google(audio)
            s.remember(command)
            return command.lower()
    except sr.WaitTimeoutError:
        pass
    except sr.UnknownValueError:
        pass
    except sr.RequestError:
        print("Network error.")

监听功能:

    def listen(self, recognizer, microphone):
    while True:
        try:
            with microphone as source:
                print("Listening.")
                recognizer.adjust_for_ambient_noise(source)
                recognizer.dynamic_energy_threshold = 3000
                audio = recognizer.listen(source, timeout=5.0)
                response = recognizer.recognize_google(audio)

                if response == WAKE:

                    if LED:
                        listening_byte = "L"  # L matches the Arduino sketch code for the blue color
                        ser.write(listening_byte.encode("ascii"))  # encodes and sends the serial byte
                    s.speak("How can I help you?")
                    return response.lower()

                else:
                    pass
        except sr.WaitTimeoutError:
            pass
        except sr.UnknownValueError:
            pass
        except sr.RequestError:
            print("Network error.")

响应功能:

    def open_things(self, command):
    # Will need to expand on "open" commands
    if command == "open youtube":
        s.speak("Opening YouTube.")
        webbrowser.open("https://www.youtube.com")
        pass

    else:
        s.speak("I don't know how to open that yet.")
        pass
4

0 回答 0