所以我正在写一个小工具来做语音识别。我刚开始使用SAPI 5.4,并使用SRGS xml文件来设置语法。它运行得非常好。我的所有命令都很容易被识别。然而,我试图让这个东西在XP上运行,但我遇到了麻烦。我使用以下代码来读入我现有的xml文件:
listener = New SpSharedRecoContext()
AddHandler listener.Recognition, AddressOf Handle_Speech
Dim grammar As ISpeechRecoGrammar
grammar = listener.CreateGrammar()
grammar.CmdLoadFromFile(Utilities.INI.ConfigPath & "\Voice_Commands.xml")
grammar.CmdSetRuleIdState(0, SpeechRuleState.SGDSActive)然而,SAPI 5.1在识别命令方面的性能要比5.4差得多。首先,它会启动一个你必须打开的外部监听应用程序(我想这还不算太糟)。但我认为主要的问题是,当我说话时,监听器将开始进行操作系统操作(打开文件夹等);因此,显然它监听的不仅仅是我预定义的一组命令。
有人知道如何让SAPI 5.1像5.4那样运行吗?
谢谢,
伊恩
发布于 2013-02-02 02:32:30
您确定这是XP吗?你描述的行为听起来像是在运行Windows语音识别,它只在Vista或更高版本上运行。
您需要进程内识别器(SpInProcRecoContext),而不是共享识别器。这需要一些工作来初始化(你需要附加一个引擎和音频源)。我在我的blog上写了一点,但我使用了原生API来完成。
最后,XP上的SR引擎确实不如Vista及更高版本中的SR引擎好。毕竟,XP SR引擎已经有十多年的历史了。
https://stackoverflow.com/questions/14370387
复制相似问题