用蜻蜓阻止Windows语音识别识别计算机音频?

2024-05-16 10:06:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用DragonflyforPython为Windows的辅助功能应用程序制作一个原型。令人沮丧的是,Windows语音识别(WSR)可以识别来自计算机的音频,这对我来说是一个巨大的问题,因为它可以识别由自己的引擎生成的语音。例如,使用speak

e = dragonfly.get_engine()
e.speak("Welcome. What can I do for you today? Please say a command.")

WSR以其无穷的智慧,从计算机扬声器中听到"Please say",并将其解释为"Yes"。我已经改变了提示的措辞,但这与原型的许多部分都存在一致的问题。我也不希望将我的提示改为"Affirmative"而忘记{},因为这似乎与accessible相反。在

我的简单响应类如下所示:

^{pr2}$

我对禁用或规避这个不需要的“特性”的各种方法持开放态度。我试过使用不同的上下文,但是^{} documentation对它的用法不是很清楚。我也尝试过设置一个speaking属性来防止这种情况发生,但似乎不起作用。这是对speaking属性的测试:

class SingleWordResponse(CompoundRule):
    spec = "<word>"
    extras = [Choice("word", {"no":0, "yes":1, "ready":1, "okay":1,"repeat":2})]
    speaking = False
    def _process_recognition(self, node, extras):
        if self.speaking == False:
            print "command recognized"
            #process command
        #otherwise do nothing

我在e.speak()调用之前立即将SingleWordResponse.speaking设置为True,然后紧接着将其设置为False,但没有用。在


Tags: false属性windows计算机语音do原型command
1条回答
网友
1楼 · 发布于 2024-05-16 10:06:44

一个可能的解决方案是规则.禁用()和规则.启用(). 这至少可以阻止你的规则在你不想被认可的时候被认可。在

但是,它不处理WSR从speak()函数识别自己的语音。也就是说,当您使用speak()函数时,仍然会得到随机的文本插入。我以为你可能有麦克风质量问题,所以我测试了你的代码,我把我的扬声器音量调高或关小。似乎你是正确的,尽管你称这是一个WSR的问题:我仍然有问题,即使没有扬声器。在

顺便说一句,出于各种原因,我不想建议“投入更多的钱”解决方案,但是Dragon与Natlink+Dragonfly自然不会有这种反馈问题(至少WindowsXP/7上的DNS版本11/12,没有在其他地方测试)。WSR只是不够聪明。在

相关问题 更多 >