0

所以我正在写一个小工具来做语音识别。我刚开始使用 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 一样执行?

谢谢,

伊恩

4

1 回答 1

0

你确定这是XP?您所描述的行为听起来就像您正在运行 Windows 语音识别,它仅在 Vista 及更高版本上运行。

您需要一个进程内识别器 ( SpInProcRecoContext ),而不是共享识别器。这需要一些初始化工作(您需要附加引擎和音频源)。我在我的博客上写了一些关于此的内容,但我使用了本机 API 来完成它。

最后,XP上的SR引擎确实不如Vista及以上版本的SR引擎。毕竟,XP SR 引擎已有十多年的历史了。

于 2013-02-01T18:32:29.607 回答