【问题标题】:How to use speech recognition to get voice input from user?如何使用语音识别来获取用户的语音输入?
【发布时间】:2022-08-02 19:19:33
【问题描述】:
enter code here

sr = s.Recognizer()
print(\'\'\' listening...
speak the first card\'\'\')

with s.Microphone() as m:
    audio = sr.listen(m)
    query = sr.recognize_google(audio, language=\'eng-in\')

first_card = input(\"Enter the first card: \")
second_card = input(\"Enter the second card: \")
third_card = input(\"Enter the third card: \")
fourth_card = input(\"Enter the fourth card: \")
print(\"the upnext cards are\", fourth_card, third_card, second_card, first_card)

我希望用户语音输入第一张卡,第二张卡等等,而不是用键盘输入它们。

    标签: python input speech-recognition


    【解决方案1】:

    如果您将以下内容放在一个while循环中(完整代码请参见答案的末尾),您可以通过将每次附加到列表中来获得所需次数的用户语音输入。

    with s.Microphone() as m:
        audio = sr.listen(m)
        query = sr.recognize_google(audio)
        cards.append(query) #where cards is the list of user inputted cards
    

    请注意,有时会出现无法识别的输入,这就是为什么下面的示例使用一个计数器,当我们成功识别语音输入时会递增(如果我们到达“尝试”部分的末尾,我们知道输入已经认可)。

    显然,有时这不会准确识别语音输入,您可以向用户展示什么是“查询”并让他们确认这是正确的/允许他们重试(尽管在我的测试中语音输入一直非常准确) .

    import speech_recognition as s
    
    cards = []
    numberOfCards = 4
    
    validInputs = 0
    
    while validInputs < numberOfCards: 
        sr = s.Recognizer()
        with s.Microphone() as m:
            print("Speak for card", (validInputs + 1), ":")
            audio = sr.listen(m)
    
        try:
            query = sr.recognize_google(audio)
            print("card", (calidInputs + 1), ":", query)
            cards.append(query)
            validInputs += 1
        except s.UnknownValueError:
            print("unknown input, please try again")
        except s.RequestError as e:
            print("couldn't get results from Google Speech Recognition service; {0}".format(e))
    
    print("the upnext cards are", cards[3], cards[2], cards[1], cards[0])
    

    运行它将输出:

    Speak for card 1:
    card 1: red
    Speak for card 2:
    card 2: green
    Speak for card 3:
    card 3: blue
    Speak for card 4:
    card 4: yellow
    the upnext cards are yellow blue green red
    >>> 
    

    我相信这就是您想要实现的目标:)

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多