Reputation: 17
I'm using pyttsx3 and speech_recognition package for Python3 to take user's voice input. But what if the user doesn't give any voice input and after the timeout, user have to give manual input? Please help me with this thing!
import pyttsx3
import speech_recognition as sr
import pyjokes
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
r = sr.Recognizer()
user_jokes = "Set a range in number..."
print(user_jokes)
engine.say(user_jokes)
engine.runAndWait()
with sr.Microphone() as source:
user_jokes_rec = r.listen(source, timeout = 2)
user_jokes_X = r.recognize_google(user_jokes_rec, language='en-US')
if user_jokes_X is None:
user_jokes_X = int(input("Set a range for jokes... "))
for x in range(user_jokes_X):
user_jo = pyjokes.get_joke()
print(user_jo)
engine.say(user_jo)
engine.runAndWait()
In this code, the if condition should satisfy, the value of user_jokes_X is empty or none and user manually inputs a range?
Upvotes: 0
Views: 251
Reputation: 54
You could try as such: except sr.UnknownValueError as e
in the exception shown below since it throws UnknownValueError due to no voice input:
try:
with sr.Microphone() as source:
user_jokes_rec = r.listen(source)
user_jokes_X = r.recognize_google(user_jokes_rec, language='en-US')
except sr.UnknownValueError as e:
user_jokes_X = int(input("Set a range for jokes... "))
`
Upvotes: 1
Reputation: 23
You can just toss the program in a try block like so:
import pyttsx3
import speech_recognition as sr
import pyjokes
engine = pyttsx3.init()
voices = engine.getProperty('voices')
r = sr.Recognizer()
user_jokes = "Set a range in number..."
print(user_jokes)
engine.say(user_jokes)
engine.runAndWait()
try:
with sr.Microphone() as source:
user_jokes_rec = r.listen(source, timeout = 2)
user_jokes_X = r.recognize_google(user_jokes_rec, language='en-US')
except:
user_jokes_X = int(input("Set a range for jokes... "))
for x in range(user_jokes_X):
user_jo = pyjokes.get_joke()
print(user_jo)
engine.say(user_jo)
engine.runAndWait()
Let me know if this solves your problem.
Upvotes: 1