windows-10 - Windows 10 TTS 语音未显示?

标签 windows-10 text-to-speech

我安装了一些带有语音选项的英语语言包(美国、英国和加拿大),我可以在 Windows 10 设置 -> 语音中访问它们,但它们没有显示在控制面板中可用的文本到语音选项中,我不能使用应用程序的声音!

我可以使用默认声音,即 David 和 Zira!

知道如何使用其他声音吗?

最佳答案

我设法通过修改 Windows 注册表解决了这个问题。就我而言,在 Windows 10 下,我使用 TTS 包安装了德语,它安装了女性语音(WinRT 和 SAPI)和男性语音(仅限 WinRT)。我需要用 C# 制作一个使用男性声音的桌面(不是通用应用程序)程序,但它不能通过 SAPI 获得。所以我做了这个“hack”并且令人惊讶地立即工作(Windows 10 版本 1803)。适用于 32 位和 64 位程序( native 或 WOW)。

在 Windows 8+ 中有两个语音合成编程接口(interface)(如 Eric Brown 所解释的)。但在研究了 Windows 注册表和其中引用的几个文件后,我注意到两个 API 使用相同的数据文件,因此我将 WinRT API 中注册的德国男性声音的注册表项复制到相应的 SAPI 部分。

以下是详细说明:

  • 打开“regedit.exe”。
  • 导航到 key

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens



    在那里,您会发现每个 WinRT 语音都在其自己的 key 下注册。在我的案例中,德国男声被称为 MSTTS_V110_deDE_StefanM .
  • 最简单的方法是右键单击语音键 (MSTTS_V110_deDE_StefanM),然后从上下文菜单中选择 导出 将整个语音结构保存到文件中(如果您想在另一台计算机上执行此操作,稍后您可以轻松地将所有这些步骤复制到几次单击中)。
  • 使用记事本或类似工具打开导出的文件。在那里你会发现两条关键路径。两者都将引用 key Speech_OneCore .您所要做的就是将两个引用从 Speech_OneCore 更改为 演讲 .
  • 删除名为 的属性的整行SayAsSupport ,SAPI 不需要它。
  • 保存您的文件。修改后应该如下所示(特别注意关键路径):

  • .
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSTTS_V110_deDE_StefanM]
    @="Microsoft Stefan - German (Germany)"
    "407"="Microsoft Stefan - German (Germany)"
    "CLSID"="{179F3D56-1B0B-42B2-A962-59B7EF59FE1B}"
    "LangDataPath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,\
      00,70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,\
      65,00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,\
      00,5c,00,64,00,65,00,2d,00,44,00,45,00,5c,00,4d,00,53,00,54,00,54,00,53,00,\
      4c,00,6f,00,63,00,64,00,65,00,44,00,45,00,2e,00,64,00,61,00,74,00,00,00
    "VoicePath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,00,\
      70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,65,\
      00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,00,\
      5c,00,64,00,65,00,2d,00,44,00,45,00,5c,00,4d,00,31,00,30,00,33,00,31,00,53,\
      00,74,00,65,00,66,00,61,00,6e,00,00,00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSTTS_V110_deDE_StefanM\Attributes]
    "Age"="Adult"
    "DataVersion"="11.0.2013.1022"
    "Gender"="Male"
    "Language"="407"
    "Name"="Microsoft Stefan"
    "SharedPronunciation"=""
    "Vendor"="Microsoft"
    "Version"="11.0"
    
  • 通过双击文件嵌入您创建的注册表项。

  • 完毕!但请注意,这将通过 SAPI 将语音提供给 32 位版本的 Windows 10 下的 32 位程序,或提供给 64 位版本的 Windows 10 下的 64 位程序。如果您想从 32位程序在 64 位版本的 Windows 10 下,则需要在 下嵌入相应的 key WOW6432节点 .为此,只需为您已编辑的文件制作一个额外副本,并将其命名为“my_voice_WOW.reg”。编辑这个新副本,现在在两个键路径中,在键 之间插入另一个名为“WOW6432Node”的键软件 微软 .保存您的文件并嵌入它,这应该会在 WOW 树节点中创建相应的键。您的 WOW 文件应如下所示(特别注意关键路径):
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Speech\Voices\Tokens\MSTTS_V110_deDE_StefanM]
    @="Microsoft Stefan - German (Germany)"
    "407"="Microsoft Stefan - German (Germany)"
    "CLSID"="{179F3D56-1B0B-42B2-A962-59B7EF59FE1B}"
    "LangDataPath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,\
      00,70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,\
      65,00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,\
      00,5c,00,64,00,65,00,2d,00,44,00,45,00,5c,00,4d,00,53,00,54,00,54,00,53,00,\
      4c,00,6f,00,63,00,64,00,65,00,44,00,45,00,2e,00,64,00,61,00,74,00,00,00
    "VoicePath"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,00,\
      70,00,65,00,65,00,63,00,68,00,5f,00,4f,00,6e,00,65,00,43,00,6f,00,72,00,65,\
      00,5c,00,45,00,6e,00,67,00,69,00,6e,00,65,00,73,00,5c,00,54,00,54,00,53,00,\
      5c,00,64,00,65,00,2d,00,44,00,45,00,5c,00,4d,00,31,00,30,00,33,00,31,00,53,\
      00,74,00,65,00,66,00,61,00,6e,00,00,00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Speech\Voices\Tokens\MSTTS_V110_deDE_StefanM\Attributes]
    "Age"="Adult"
    "DataVersion"="11.0.2013.1022"
    "Gender"="Male"
    "Language"="407"
    "Name"="Microsoft Stefan"
    "SharedPronunciation"=""
    "Vendor"="Microsoft"
    "Version"="11.0"
    

    希望这可以帮助。

    关于windows-10 - Windows 10 TTS 语音未显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40406719/

    相关文章:

    node.js - 将 Socket.io-redis 作为适配器添加到 Socket.io 实例时出现错误

    c++ - 我无法让 SHGetFileInfo 返回图标位置

    c++ - 如何以编程方式禁用 Windows 10 中的 Wi-fi 感知?

    powershell - 如何在 Windows 10 的 cmd 中保留多个空格作为 powershell 的字符串参数

    c# - 为应用程序中的所有文本框选择 TextBox 中的所有文本

    java - Android 文本转语音功能无法在设备上运行

    iPhone - 用于文本转语音功能的 API

    c# - 语音合成器文本到语音作为输入,即通过麦克风

    Java 文字转语音我无法让它说话

    python - 如何在Pygame中检查混音器系统是否已初始化?