语音识别安全循环中的错误

时间:2019-08-18 22:50:43

标签: python speech-recognition speech-to-text pocketsphinx

我正在使用PocketSphinx语音转文本引擎来执行某些任务(我认为添加不重要)。

我希望它在说某些单词时做出反应(确实如此),但是,我想创建一种“安全循环”,将程序放入一个只有当我说时才能退出的循环另一个特定的单词,以防万一它不小心接了我说最初的单词并在我不想要的时候执行了操作。不过,我在循环时遇到了麻烦。循环在函数的末尾,但是它是一个循环函数,因此该函数将被连续调用,直到我将其物理关闭为止。

def listen(): #Definition of listen() function.
    wait = 0
    print ("Listening!")
    for word in speech:
        word_string = str(word)
        if (word_string == "START"): #Listens for the word "Start."
            print("Primary Function Executed.")
        if (word_string == "REST"): #Listens for the word "Rest."
            print ("In loop")
            wait = 1
            while (wait == 1): #Safety loop.
                for cap in speech:
                    cap_string = str(cap)
                    if (cap_string == "OKAY"):
                        listen()

因此,我尝试了此循环(最后8行),而没有将变量“ wait”重新分配为值“ 1”。但是,它只是忽略了循环,我可以说“开始”或“休息”,并且只要说出单词,它将执行这两个功能,这是我不希望的。我想说“ rest”进入循环,然后说“ okay”退出循环,但是当我说“ rest”时,我得到另一个窗口(这是Visual Studios 2019 btw),称为Break Mode,并且它说

  

“没有运行兼容的代码。所选的调试引擎不支持在当前线程上执行的任何代码(例如,仅正在执行本机运行时代码)。”

还有另一个标题为“未处理的异常”的窗口,显示为

  

“ Ad ___ enter__returned-1”。

我知道问题出在循环,因为如果我忽略该循环,它会平稳运行,并且还会显示“ In loop”,因此我知道“ if”语句也可以正常运行。

1 个答案:

答案 0 :(得分:0)

  

Ad ___ enter__returned-1

是解决问题的关键。它告诉您Pocketsphinx引擎由于某种原因崩溃了。您可以在日志中找到更多详细信息(默认情况下应转到stderr)。