我目前正在编写一个人工智能程序,接收来自Dragon的输入(使用Natlink),处理它,并返回一个口头输出。我想出了一个接收方GrammarBase,它捕获了巨龙的所有输入,并将其发送给我的解析器。
class Receiver(GrammarBase):
gramSpec = """ <start> exported = {emptyList}; """
def initialize(self):
self.load(self.gramSpec, allResults = 1)
self.activateAll()
def gotResultsObject(self, recogType, resObj):
if recogType == 'reject':
inpt, self.best_guess = [], []
else:
inpt = extract_words(resObj)
inpt = process_input(inpt) # Forms a list of possible interpretations
self.best_guess = resObj.getWords(0)
self.send_input(inpt)
def send_input(self, inpt):
send = send_to_parser(inpt) # Sends first possible interpretation to parser
try:
while True:
send.next() # Sends the next possible interpretation if the first is rejected
except StopIteration: # If all interpretations are rejected, try sending the input to Dragon
try:
recognitionMimic(parse(self.best_guess))
except MimicFailed: # If that fails too, execute all_failed
all_failed()此代码按预期工作,但存在以下几个问题:
()时,会弹出一个消息框,说明Python解释器正在等待输入。(为了美观和方便)是否有可能(为了美观和方便)阻止消息框的出现,而在用户暂停之后终止语音收集过程?
谢谢!
发布于 2012-01-03 16:34:35
关于您的第一个问题,DNS使用了"Open .“作为内部命令解决过程的一部分的话语。这意味着DNS解析语音并在natlink有机会之前执行命令。唯一解决这个问题的方法就是把话语从“开放.”“触发”在您的natlink语法中(或者对DNS除了“触发器”之外没有使用的其他语句)。
一些natlink开发人员在speechcomputing.com工作。你可能会在那里得到更好的回应。
祝好运!
https://stackoverflow.com/questions/8686607
复制相似问题