I'm following a youtube tutorial to make an assistant in python. When I say "Piggy", it responds as usual, but after that, when I say how are you, it gives me this error. The guy in the video has no problems with it. RuntimeError: run loop already started
I don't know what's wrong with my code.
import pyttsx3
import speech_recognition as sr
import time
r = sr.Recognizer()
keywords = [("piggy", 1), ("hey piggy", 1)]
source = sr.Microphone()
def Speak(text):
rate = 100
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[14].id)
engine.setProperty('rate', rate+50)
engine.say(text)
engine.runAndWait()
def callback(recognizer, audio):
try:
speech_as_text = recognizer.recognize_sphinx(audio, keyword_entries=keywords)
print(speech_as_text)
if "piggy" in speech_as_text or "hey piggy":
Speak("Yes sir?")
recognize_main()
except sr.UnknownValueError:
print("Oops! Didn't catch that")
def start_recognizer():
print("Waiting for a keyword...piggy or Hey piggy")
r.listen_in_background(source, callback)
time.sleep(1000000)
def recognize_main():
with sr.Microphone() as source:
print("Say something!")
audio = r.listen(source)
data = ""
try:
data = r.recognize_google(audio)
data.lower()
print("You said: " + data)
if "how are you" in data:
Speak("I am Fine")
elif "hello" in data:
Speak ("Hi there")
else:
Speak("I'm sorry sir, I did not understand your request")
except sr.UnknownValueError:
print("piggy did not understand your request")
except sr.RequestError as e:
print("Could not request results from Google Speech Recognition service; {0}".format(e))
while 1:
start_recognizer()