我正在做一个虚拟助手项目,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