【问题标题】:How to manually take user input if user doesn't give voice input in python3如果用户没有在python3中提供语音输入,如何手动获取用户输入
【发布时间】:2020-02-05 18:58:00
【问题描述】:

我正在使用 Python3 的 pyttsx3 和 speech_recognition 包来获取用户的语音输入。但是如果用户没有给出任何语音输入,超时后用户必须手动输入怎么办?请帮我解决这个问题!

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的值为空或无,用户手动输入范围?

【问题讨论】:

    标签: python python-3.x voice-recognition


    【解决方案1】:

    您可以像这样将程序扔到 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()
    

    如果这能解决您的问题,请告诉我。

    【讨论】:

      【解决方案2】:

      您可以这样尝试:except sr.UnknownValueError as e 在下面显示的异常中,因为它会由于没有语音输入而引发 UnknownValueError:

      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... "))
      

      `

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-02
        • 2015-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多