我只是在Python中创建一个聊天机器人。它运行良好,但我想将pyttsx添加到此聊天机器人,以便它可以说出它的输出。 我的代码是
import aiml
import sys
import pyttsx
engine = pyttsx.init()
# Create a Kernel object.
kern = aiml.Kernel()
brainLoaded = False
forceReload = False
while not brainLoaded:
if forceReload or (len(sys.argv) >= 2 and sys.argv[1] == "reload"):
kern.bootstrap(learnFiles="std-startup.xml", commands="load aiml b")
brainLoaded = True
kern.saveBrain("standard.brn")
else:
try:
kern.bootstrap(brainFile = "standard.brn")
brainLoaded = True
except:
forceReload = True
print "\nINTERACTIVE MODE (ctrl-c to exit)"
while(True):
hea = kern.respond(raw_input("> "))
print hea
engine.say (hea)
engine.runAndWait()
当我运行此代码时,我听不到任何声音,但我可以看到终端上的聊天。我也想让它说出回应。我做错了什么?
答案 0 :(得分:0)
engine.runAndWait在while(True):循环之外,因此在循环中断之前不太可能播放。
如果将其移动到循环中,并且声音不稳定,请测试以下代码:
tblUsers
我对pyttsx的经验是需要输入少量文本,否则文本会被中断。我不确定为什么会这样,但是自己截断句子并说几句话应该适合你的目的:
import pyttsx
engine = pyttsx.init()
engine.say("Oh, hello!")
但是你需要解析文本并以保持消息完整的方式截断它。