我在我的 Windows 7 64 位操作系统中安装了新的 32 位 Scansoft 语音 (Jennifer),以便能够在我正在开发的一个 .NET 应用程序中使用。
问题是当我调用该方法时:
List<string> allInstalledVoices = new SpeechSynthesizer().GetInstalledVoices();
我只收到一种返回的语音,即默认的 Microsoft Anna 语音。但我可以在其他文本转语音应用程序中看到所有已安装的语音。
我发现问题所在了。事实证明,当将项目编译到“Any CPU”(使用Visual Studio 2008)时,就会出现问题。但换成x86后,这个问题就不再出现了。
我在验证这一点时遇到了麻烦,但我相信 Scansoft 的 Jennifer 语音是符合 SAPI 4.0 的语音;托管语音 API 仅适用于 SAPI 5.1 兼容语音。
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]
还需要复制到新位置并进行编辑,以便正确反映其引用的语音文件的名称和路径。
解决此问题的方法是修改注册表。我成功了,谢谢