1

我正在尝试使用 system.speech 让语音识别在 Windows Server 2008 上工作。

  1. 我在 Vista 上构建了一个使用 System.Speech.Recognition (SAPI 5.4) 的控制台应用程序。在这台机器上工作得很好。

  2. 试图在 Windows Server 2008 x86 机器上安装/执行它。它有.NET 3.5。不走运...抛出错误--经调查,发现2008默认没有安装任何识别器。

  3. 安装了新的语音平台服务器运行时英语语言文件语音 SDK。这些都是大约一个月前发布的。据我了解,运行时包含与 WinServer 2008 兼容的识别器。

  4. 尝试再次运行我的应用程序,但仍然没有找到识别器。

我可以看到有一个识别器 dll 安装在:C:\Program Files (x86)\Common Files\microsoft shared\Speech\SR\v10.1\spsreng.dll

我究竟做错了什么?:)

4

2 回答 2

4

您需要使用 Microsoft.Speech.Recognition 才能使用 Speech Platform Server;System.Speech.Recognition 需要桌面识别引擎,该引擎在 Windows Server 上不可用。

服务器和桌面识别引擎是完全独立的。

于 2010-07-29T18:52:14.863 回答
1

假设您有一台工作机器可以复制,则可以让 System.Speech.Recognition 在 Windows Server 2008 上工作。我尝试了一堆不起作用的不同方法,然后尝试了一些可行的可怕步骤。我不确定其中哪些是必要的,但最后一组步骤肯定是必要的。

以下是无效的列表,但可能是有效的先决条件:

  1. 通过此链接安装 Microsoft Speech Platform Runtime https://www.microsoft.com/en-us/download/details.aspx?id=27225
  2. 从这里安装英语-美国语言包 MSSpeech_SR_en-US_TELE.msi https://www.microsoft.com/en-us/download/details.aspx?id=27224
  3. 从此处安装“Microsoft Speech Platform - Server Runtime Languages (Version 10.1)”,LangPacks\MSSpeech_SR_en-US_TELE.msi 文件:https ://www.microsoft.com/en-us/download/details.aspx?id=3971
  4. 使用以下说明安装了“桌面体验”功能:
    1. 启动服务器管理器(在开始菜单上,单击服务器管理)。
    2. 在详细信息窗格中,找到功能摘要区域,然后单击添加功能。
    3. 在添加功能向导中,单击以选中桌面体验复选框,然后单击下一步。
    4. 单击安装。
    5. 安装桌面体验功能后,单击关闭退出添加功能向导,然后单击是重新启动计算机。

这些都不起作用,所以我们最终基本上使用以下改编自 https://groups.google.com/forum/#!topic/microsoft.public.speech_tech.sdk/YV_OcL0Boh0的过程手动安装必要的文件和注册表设置

这需要一台工作机器(我的 Windows 7 机器)从中复制文件和注册表设置。在下面的说明中,我试图安装一个我知道在我的机器上工作的特定识别器 MS-1033-80-DESK。如果您使用不同的识别器,您可能需要不同的步骤。您可以使用 SpeechRecognitionEngine.InstalledRecognizers() API 在您的机器上查看已安装的识别器。

  1. 在不覆盖现有文件的情况下(仅在出现提示时添加丢失的文件),将文件从您的工作 C:\Windows\Speech 文件夹复制到服务器的文件夹。您可能需要获得服务器上文件夹的所有权并授予自己添加文件夹和文件的权限。
  2. 在不覆盖现有文件的情况下(仅在出现提示时添加丢失的文件),将文件从您的工作 C:\Windows\System32\Speech 复制到服务器的文件夹。您可能需要再次授予自己权限。
  3. 最后一步非常痛苦。您需要将所有相关的注册表设置复制到服务器。我只从 HKEY_LOCAL_MACHINE 和 HKEY_CLASSES_ROOT 主文件夹复制了注册表设置。我通过在注册表中搜索与以下相关的条目创建了我粘贴在下面的 .reg 文件:MS-1033-80-DESK、{DAC9F469-0C67-4643-9258-87EC128C5941}、spsreng、spsrx、srloc(HKEY_LOCAL_MACHINE\ 中的条目除外COMPONENTS\DerivedData\Components 不包括)这些是识别器的名称、识别引擎的类 ID 以及与识别器相关的 dll。我不知道您是否可以使用我的注册表设置,或者您是否必须创建自己的注册表设置。我在服务器上创建并导入注册表的注册表文件在这里: https ://pastebin.com/4w05SbbY

Stackoverflow 不会让我发布没有代码的 pastebin 链接,而且我的链接太大了直接包含在这里,所以

fakeCode = 1;
于 2018-02-28T21:28:13.653 回答