Bob*_*Bob 8 c# speech-recognition windows-services
所以我有一个使用system.speech识别引擎实现语音识别的Windows服务.当我启动服务时,我的语音识别代码运行良好,但没有语音事件识别出来.奇怪的是,如果我运行完全相同的代码,但在控制台或WPF应用程序中,语音识别的事件触发工作正常.
我已经在我的服务进程中附加了一个调试器,以检查幕后发生了什么.似乎语音识别引擎正确加载语法,将其模式设置为连续收听,并正确设置语音识别事件.没有异常被抛出,所以我不太清楚这里有什么问题.有任何想法吗?
您正在使用麦克风或处理 WAV 文件吗?如果您尝试使用默认音频设备,我不确定音频管道将如何在服务中工作。如果您尝试从音频文件或流进行转换,请确保您使用的是 InProc 识别器。
\n\n如果您正在创建服务器应用程序,您可能应该考虑使用 Microsoft.Speech API 和服务器识别器。请参阅System.Speech.Recognition 和 Microsoft.Speech.Recognition 之间有什么区别?和 Microsoft 语音平台 SDK - http://www.microsoft.com/en-us/download/details.aspx?id=27226
\n\n如果您尝试在前台没有应用程序的情况下进行连续识别,我相信共享识别器可能能够支持您的需求。Windows 7 和 Vista 中附带的 Microsoft 桌面识别器可以在两种模式下工作:进程内或共享。共享识别器在桌面上非常有用,其中使用语音命令来控制任何打开的应用程序。在 System.Speech 中,您可以使用SpeechRecognizer访问共享桌面识别器,或使用SpeechRecognitionEngine为您的应用程序提供专用的进程内识别器。即使您的应用程序不在前台,您也可以使用共享识别器为您的应用程序提供持续识别。
\n\n几年前,在http://msdn.microsoft.com/en-us/magazine/cc163663.aspx上发表了一篇非常好的文章。这可能是迄今为止我发现的最好的介绍性文章。它说:
\n\n\n\n...识别引擎可以在另一个名为 SAPISVR.EXE 的进程中实例化。这提供了一个可由多个应用程序同时使用的共享识别引擎。这种设计有很多好处。\n 首先,识别器通常比合成器需要更多的运行时资源,共享识别器是减少开销的有效方法。其次,Windows Vista 的内置语音功能也使用共享识别器。因此,使用共享识别器的应用可以受益于系统的麦克风和反馈 UI。无需编写额外的代码,也无需用户学习新的 UI。SAPI 5.3 的新增功能
\n
归档时间: |
|
查看次数: |
2802 次 |
最近记录: |