SpeechSynthesizer 无法获取所有已安装的语音

问题描述 投票:0回答:4

我在我的 Windows 7 64 位操作系统中安装了新的 32 位 Scansoft 语音 (Jennifer),以便能够在我正在开发的一个 .NET 应用程序中使用。

问题是当我调用该方法时:

   List<string> allInstalledVoices = new SpeechSynthesizer().GetInstalledVoices();

我只收到一种返回的语音,即默认的 Microsoft Anna 语音。但我可以在其他文本转语音应用程序中看到所有已安装的语音。

c# .net speech-recognition text-to-speech
4个回答
4
投票

我发现问题所在了。事实证明,当将项目编译到“Any CPU”(使用Visual Studio 2008)时,就会出现问题。但换成x86后,这个问题就不再出现了。


2
投票

我在验证这一点时遇到了麻烦,但我相信 Scansoft 的 Jennifer 语音是符合 SAPI 4.0 的语音;托管语音 API 仅适用于 SAPI 5.1 兼容语音。


2
投票

Windows 最近的更新意味着针对此问题发布的答案不再有效。

新的修复是:

注册表位置中列出的语音文件...

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\(filename)]

...全部需要复制到新位置:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\(filename)]

请注意“属性”子文件夹,即

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\(filename)\Attributes]

还需要复制到新位置并进行编辑,以便正确反映其引用的语音文件的名称和路径。


0
投票

解决此问题的方法是修改注册表。我成功了,谢谢

© www.soinside.com 2019 - 2024. All rights reserved.