2

我制作了一个应用程序,它使用 SpeechRecognizer 类来设置简单的语法并识别简单的单词。

当我在 Win7 上运行它时,我注意到两件事。

1)我第一次启动应用程序时,语音识别栏(thingy)出现,但我的应用程序的 UI 没有显示(它正在运行,正如我在任务管理器中看到的那样)。当我第二次启动应用程序时(在杀死第一个实例之后)它正常显示(Windows 语音识别工具栏已经运行)。

2)当我第二次说出我在我的应用程序中识别的单词之一时,它不会触发事件 - 相反 - 它会选择我的应用程序上的文本,我在列表框中打印出已识别单词的历史记录。

注意:当我从主屏幕中删除历史列表框时,它按预期工作。显然,Win7 会首先尝试在我的 UI 中找到这个词,而当它找不到它时 - 只有这样它才会触发我的编程事件......??

这两个问题对我来说似乎都很奇怪。

有关该应用程序的更多信息:它是一个用 C# 编写的 VS2008/.NET 3.0 WPF 应用程序。该应用程序允许用户编辑用于发送 Midi 命令的设置组(补丁)。每个补丁都标有一个短语。当该短语被说出(被应用程序识别)时,所有配置的 Midi 命令都将发送到输出。用户调用的补丁历史记录在应用程序主屏幕的“历史记录”列表中。

我希望有人可以帮助我。任何建议都非常受欢迎。

谢谢,马克·雅可比

4

2 回答 2

3

我认为您正在使用共享语音识别器(SpeechRecognizer)。当您实例化 SpeechRecognizer 时,您将获得一个可以由其他应用程序共享的识别器,通常用于构建应用程序以控制在桌面上运行的窗口和应用程序。

听起来您想使用自己的私有识别引擎(SpeechRecognitionEngine)。所以实例化一个 SpeechRecognitionEngine 代替。

请参阅http://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognizer(v=vs.90).aspx

System.Speech.Recognition 和 Microsoft.Speech.Recognition 有什么区别?禁用内置语音识别命令?也可能有一些有用的信息。

于 2011-03-14T20:53:23.037 回答
0

我得到了它的工作,谢谢!

使用 SpeechRecognizer 和 SpeechRecognitionEngine 的主要区别是:

  • 使用 InstalledRecognizers 中的 RecognizerInfo 构造 SpeechRecognitionEngine。
  • 调用 SetInputToXxxx 方法之一
  • 调用 RecognizeAsync(RecognizeMode.Multiple) 来模拟 SpeechRecognizer (SpeechRecognized) 事件。
  • 调用 RecognizeCancel/Stop 退出。

希望能帮助到你。

于 2011-03-16T09:36:57.447 回答