【问题标题】:How to use all voices available?如何使用所有可用的声音?
【发布时间】:2018-04-02 16:25:48
【问题描述】:

我正在使用这个命令来列出可用的声音

private static SpeechSynthesizer sprecher;

...

sprecher = new SpeechSynthesizer();

...

private static List<VoiceInfo> GetInstalledVoices()
{
    var listOfVoiceInfo = from voice
                          in sprecher.GetInstalledVoices()
                          select voice.VoiceInfo;

    return listOfVoiceInfo.ToList<VoiceInfo>();
}

我只有 4 种不同的声音(Hedda、Hazel、David 和 Zira),但 windows 本身显示了更多的扬声器。

因此我只得到“-Desktop”-声音。如何通过 c# 访问其他扬声器?

【问题讨论】:

  • 我删除了我的答案,因为我无法让它在本地工作,我尝试做这里提到的注册表副本:social.msdn.microsoft.com/Forums/en-US/…
  • @hellyale 你说对了。使用这个注册表副本我解决了它。也许你需要像我一样导出它?将Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices 的整个Token 目录导出到文件中。将文件中的每个HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens 替换为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens 并运行文件(我删除了我之前已经拥有的声音)。将 CPU 更改为 x64。享受吧。
  • 好的,我将取消删除并添加这些详细信息。

标签: c# windows-10 speechsynthesizer


【解决方案1】:

编辑 2:OP 通过使用导出而不是命令行复制使其工作

将 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices 的整个 Token Directory 导出到文件。将文件中的每个 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens 替换为 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens 并运行文件(我删除了之前已经拥有的声音)。

following thread 上,一位 MSDN 用户 A.Kelany 提出了类似的问题,他从 GetInstalledVoices 方法中只得到了两个声音。

他说他可以通过以下方式解决这个问题:

通过执行以下操作,我设法让它在测试项目中工作: 我打开注册表,发现有一个节点: 引用: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices

其中包含出现在应用程序 GetInstalledVoices 方法中的声音

还有另一个节点:

引用: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices

包含所有声音,包括没有出现在上述方法中的声音,

所以我将其中一个声音从第二个节点复制到了第一个节点 并且成功了!

他还表示在此更改后他无法在Any CPU 上构建,必须将构建类型更改为x64

【讨论】:

  • Wow6432Node 是 32 位注册表项在 64 位窗口上的位置。您需要复制它们才能在任何 CPU 上正常工作。只需按照将 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Speech_OneCore\Voices 条目导出到 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices 的相同过程即可。
  • 部分声音没有出现,但改成 x64 已修复问题
猜你喜欢
  • 2017-01-16
  • 2012-12-12
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多