在.NET中有两个类似的用于语音识别的命名空间和程序集,我正在尝试了解它们之间的区别,以及何时使用其中一个是合适的。
有来自程序集System.Speech的System.Speech.Recognition (在System.Speech.dll中)。System.Speech.dll是.NET框架类库3.0及更高版本中的核心DLL
还有来自程序集Microsoft.Speech的Microsoft.Speech.Recognition (在microsoft.speech.dll中)。Microsoft.Speech.dll是UCMA2.0SDK的一部分
我发现这些文档令人困惑,我有以下问题:
System.Speech.Recognition说它是用于“Windows桌面语音技术”的,这是否意味着它不能用于服务器操作系统或不能用于大规模应用程序?
UCMA2.0 Speech SDK ( http://msdn.microsoft.com/en-us/library/dd266409%28v=office.13%29.aspx )表示,它需要Microsoft Office Communications Server2007 R2作为先决条件。然而,我在会议上被告知,如果我不需要在线状态和工作流等OCS功能,我可以在没有OCS的情况下使用UCMA 2.0 Speech API。这是真的吗?
如果我正在为服务器应用程序构建一个简单的识别应用程序(假设我想自动转录语音邮件),并且我不需要OCS的功能,那么这两个API之间有什么区别?
发布于 2010-06-06 10:39:04
简而言之,Microsoft.Speech.Recognition使用服务器版的SAPI,而System.Speech.Recognition使用桌面版的SAPI。
API基本相同,但底层引擎不同。通常,服务器引擎设计为接受命令和控制应用程序的电话质量音频;桌面引擎设计为接受命令和控制应用程序以及听写应用程序的更高质量音频。
您可以在服务器操作系统上使用System.Speech.Recognition,但它的可伸缩性不如Microsoft.Speech.Recognition。
不同之处在于,服务器引擎不需要训练,可以处理质量较低的音频,但识别质量低于桌面引擎。
发布于 2010-06-08 23:50:12
我发现Eric’s answer真的很有帮助,我只是想添加一些我发现的更多细节。
可以使用System.Speech.Recognition对桌面识别器进行编程。产品附带SAPI和台式机识别器:
服务器附带SAPI,但没有识别器:
桌面识别器也已在office等产品中提供。
可以使用Microsoft.Speech.Recognition对服务器识别器进行编程。产品附带服务器识别器:
服务器语音服务器(各种versions)
Microsoft Server Speech Platform 10.2版本的完整软件开发工具包可以在http://www.microsoft.com/downloads/en/details.aspx?FamilyID=1b1604d3-4f66-4241-9a21-90a294a5c9a4上找到。语音引擎是免费下载的。版本11现已在http://www.microsoft.com/download/en/details.aspx?id=27226上提供。
有关Microsoft Speech Platform SDK 11的信息和下载,请访问:
http://www.microsoft.com/en-us/download/details.aspx?id=27226
桌面识别器设计为运行inproc或共享。共享识别器在使用语音命令控制任何打开的应用程序的桌面上非常有用。服务器识别器只能运行inproc。当单个应用程序使用识别器或者需要识别wav文件或音频流时(共享识别器不能处理音频文件,只能处理来自输入设备的音频),可以使用Inproc识别器。
只有桌面语音识别器包含听写语法(系统提供的用于自由文本听写的语法)。在Microsoft.Speech命名空间中,类System.Speech.Recognition.DictationGrammar没有补充。
您可以使用API来查询并确定已安装的重定向程序
System.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers()
我发现我还可以通过查看注册表项来查看安装了哪些识别器:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Recognizers\Tokens
桌面识别器:
-更新
正如在Microsoft Speech Recognition - what reference do I have to add?中所讨论的,Microsoft.Speech也是用于Kinect识别器的应用编程接口。这在MSDN文章http://msdn.microsoft.com/en-us/library/hh855387.aspx中有说明。
发布于 2010-10-02 03:02:27
以下是语音库(MS Server Speech Platform)的链接:
Microsoft Server Speech Platform 10.1 Released (SR and TTS in 26 languages)
https://stackoverflow.com/questions/2977338
复制相似问题