gpt4 book ai didi

python - 将 Dragon NaturallySpeaking 的所有输入重定向到 Python? (使用 Natlink)

转载 作者:太空狗 更新时间:2023-10-30 00:11:52 24 4
gpt4 key购买 nike

我目前正在编写一个 AI 程序,它接收来自 Dragon NaturallySpeaking(使用 Natlink)的输入,对其进行处理,然后返回语音输出。我能够想出一个 Receiver GrammarBase 来捕获来自 Dragon 的所有输入并将其发送到我的解析器。

    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()

此代码按预期工作,但存在几个问题:

  1. Dragon 在将输入发送到我的程序之前对其进行处理。例如,如果我说“打开谷歌浏览器。”,它会打开谷歌浏览器,然后将输入发送到 Python。有没有办法在不先处理输入的情况下将输入发送到 Python?

  2. 当我调用 waitForSpeech() 时,会弹出一个消息框,说明 Python 解释器正在等待输入。是否可以(为了美观和方便)阻止显示消息框,而是在用户明显停顿后终止语音收集过程?

谢谢!

最佳答案

关于您的第一个问题,事实证明 DNS 使用“Open ...”语句作为其内部命令解析过程的一部分。这意味着 DNS 在 natlink 有机会之前解析语音并执行命令方式。解决此问题的唯一方法是在您的 natlink 语法中将话语从“Open ...”更改为“Trigger ...”(或者更改为 DNS 除了“Trigger”之外未使用的其他话语)。

一些 natlink 开发人员在 speechcomputing.com 闲逛。你可能会在那里得到更好的回应。

祝你好运!

关于python - 将 Dragon NaturallySpeaking 的所有输入重定向到 Python? (使用 Natlink),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8686607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com