我安装了一些带有语音选项的英语语言包(美国、英国和加拿大),我可以在 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 部分。
以下是详细说明:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens
在那里,您会发现每个 WinRT 语音都在其自己的 key 下注册。在我的案例中,德国男声被称为 MSTTS_V110_deDE_StefanM .
.
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/