Windows7上语音识别C#WPF应用程序的两个问题

时间:2011-03-14 08:37:57

标签: c# windows-7 c#-3.0 speech-recognition system.speech.recognition

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

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

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

2)当我第二次说出我在我的应用程序中识别出的一个词时,它不会触发事件 - 而是 - 它会在我的应用程序中选择我在列表框中打印出的历史记录公认的话语。

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

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

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

我希望有人可以帮助我。任何建议都是最受欢迎的。

感谢名单, Marc Jacobi

2 个答案:

答案 0 :(得分:3)

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

听起来你想使用自己的私人识别引擎(SpeechRecognitionEngine)。因此,实例化一个SpeechRecognitionEngine。

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

What is the difference between System.Speech.Recognition and Microsoft.Speech.Recognition?Disable built-in speech recognition commands?也可能有一些有用的信息。

答案 1 :(得分:0)

我得到了它的工作,而不是!

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

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

希望它有所帮助。