【问题标题】:Windows Server 2008 : Speech Runtime - What am I missing?Windows Server 2008:语音运行时 - 我缺少什么?
【发布时间】:2010-07-29 13:13:23
【问题描述】:

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

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

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

  3. 安装了新的Speech Platform Server RuntimeEnglish language fileSpeech SDK。这些都是大约一个月前发布的。据我了解,运行时包含与 WinServer 2008 兼容的识别器。

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

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

我做错了什么? :)

【问题讨论】:

标签: windows-server-2008 speech-recognition sapi


【解决方案1】:

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

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

【讨论】:

  • 啊哈!谢谢你 - 这是有道理的。后续问题:我尝试添加Microsoft.Speech作为参考,但在列表中的任何地方都找不到...如何添加?
  • 找到了!!!我需要包含 Microsoft.Speech.dll,它位于 C:\Program Files (x86)\Microsoft Speech Platform SDK\Assembly 中。非常感谢您的回答。
【解决方案2】:

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

这里列出了一些不起作用的东西,但可能是起作用的先决条件:

  1. 从此链接https://www.microsoft.com/en-us/download/details.aspx?id=27225 安装了 Microsoft Speech Platform Runtime
  2. 从此处https://www.microsoft.com/en-us/download/details.aspx?id=27224 安装英语-美国语言包 MSSpeech_SR_en-US_TELE.msi
  3. 已安装“Microsoft 语音平台 - 服务器运行时语言(版本 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;

【讨论】:

    猜你喜欢
    • 2011-01-04
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多