【问题标题】:How can i make the python to wait till i complete speaking?我怎样才能让蟒蛇等到我说完?
【发布时间】:2015-06-20 06:09:22
【问题描述】:

我正在编写一个程序来识别来自麦克风的语音,并且代码将相应地进行处理。我为此目的编写的代码如下。

import speech_recognition as sr
import webbrowser
import pyttsx
from time import sleep

engine = pyttsx.init()
engine.setProperty('rate', 70)
r = sr.Recognizer()

def recognize(audio):
    try:
        return r.recognize(audio)
    except LookupError, e:
        print e
    return ''
with sr.Microphone() as source:
    while True:
        engine.say("Hi How can i help you ?")
        sleep(0.15)
        print "Start Speaking"
        audio = r.listen(source)
        words = recognize(audio)
        print("You said " + words)
        if words == "Facebook":
            engine.say("Shall i open the Facebook page for you ?")
            engine.runAndWait()
            audio = r.listen(source)
            words = recognize(audio)
            if words == "Yes":
                webbrowser.open('https://www.facebook.com')
        elif words == "stop":
            break

在这里我也尝试过睡眠,但在引擎说话之前,我可以看到文本开始说话被打印出来。除了睡眠之外,有没有什么好的方法可以捕捉麦克风中的语音并等到说些什么或长时间沉默?

【问题讨论】:

  • 你为什么要使用 sleep ?这没有用,您必须为r.listen(source) 返回的audio 设置一个阈值,如果audio 大于阈值,那么您正在说话,否则就是长时间的沉默。
  • Cory.. 你能告诉我如何设置阈值吗?
  • 没有直接的假设,因此高度取决于 @987654325 @返回的值,您需要进行一些试验并分析各种高度的语音样本的输出,然后选择适当的。 跨度>
  • 但是在这里我需要等到引擎完成后说“嗨,我有什么可以帮助你的吗?”

标签: python python-2.7 speech-recognition pyttsx


【解决方案1】:

这个方法:

        engine.runAndWait()

等待语音完成。您不仅需要在engine.say("Shall i open the Facebook page for you ?") 之后使用它,还需要在engine.say("Hi How can i help you ?") 之后使用它 而不是sleep

【讨论】:

    猜你喜欢
    • 2020-03-25
    • 2011-12-14
    • 2016-05-19
    • 2023-01-08
    • 2021-05-11
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多