问题描述
我尝试在python3上创建语音助手
这是我的功能说(使用pyttsx):
def speak(what):
print("Gosha: " + what)
speak_engine.say( what )
speak_engine.runAndWait()
speak_engine.stop()
在主体上可以正常工作,但是在 execute_cmd 函数中,在说函数之后,我的代码卡住了。 execute_cmd 的一部分:
def execute_cmd(cmd,voice):
global finished
finished = False
#import debug
if cmd == 'ctime':
Now = datetime.datetime.Now()
hours = str(Now.hour)
minutes = str(Now.minute)
if (Now.minute < 10): minutes = '0' + minutes
speak("Now " + hours + ":" + minutes)
finished = True
完成永远不会正确
这发生在函数中的任何地方
请帮助我
(对不起,我来自俄罗斯)
UPD:我调试了代码并注意到,我的代码卡在 speak_engine.runAndWait()
上我知道,很多人都有相同的问题,但是他们的解决方案并没有帮助我
解决方法
我不确定我是否理解您的问题。代码被“卡住”是什么意思?因为您说过finished
变量永远不会是False
,所以我假设代码一直运行并且不会卡住。我最好的猜测是您的代码根本不会发出声音。
如果是这样,我可以想象是由于先前的循环仍处于活动状态。因此,也许尝试将以下内容添加到您的talk()函数中:
ef speak(what):
print("Gosha: " + what)
try:
speak_engine.endLoop()
except Exception as e:
pass
speak_engine.say( what )
speak_engine.runAndWait()
speak_engine.stop()