【发布时间】:2019-08-18 22:50:43
【问题描述】:
我正在使用 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”。但是,它只是忽略了循环,我可以说“开始”或“休息”,只要说出这些话,它就会执行这两个功能,这是我不想要的。我想说“休息”进入循环,然后“好的”退出循环,但是当我说“休息”时,我得到另一个窗口(这是视觉工作室 2019 顺便说一句),称为中断模式,并且它说
“没有兼容的代码在运行。选定的调试引擎不支持在当前线程上执行的任何代码(例如,只有本机运行时代码正在执行)。”
还有另一个窗口,标题为“异常未处理”,内容如下:
“Ad___enter__returned-1”。
我知道问题出在循环,因为如果我忽略循环,它会运行顺利,并且还会打印“In loop”,所以我知道“if”语句也可以正常运行。
【问题讨论】:
标签: python speech-recognition speech-to-text pocketsphinx