Как вручную принять пользовательский ввод, если пользователь не дает голосовой ввод в python3 - PullRequest
0 голосов
/ 05 февраля 2020

Я использую пакеты pyttsx3 и speech_recognition для Python3, чтобы принять голосовой ввод пользователя. Но что, если пользователь не вводит голосовой ввод, а по истечении времени ожидания пользователь должен вводить вручную? Пожалуйста, помогите мне с этим!

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()

В этом коде условие if должно удовлетворять, значение user_jokes_X пусто или отсутствует, и пользователь вручную вводит диапазон?

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете просто бросить программу в блок try следующим образом:

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()

Дайте мне знать, если это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...