如何获取和使用完整的安装的文本到语音语言列表?

时间:2018-12-16 17:25:50

标签: c# .net speech-synthesis

Windows 10语音合成中确实发生了一些奇怪的事情。

首先,即使Windows在Metro和Classic控制面板中显示的安装语言也不同。

Metro应用程序显示5种已安装的语言,而经典控制面板仅显示3种。

我需要使用 Microsoft Pavel 语言,但是我的应用程序根本看不到它!

SpeechSynthesizer ss = new SpeechSynthesizer();
var installed_voices = ss.GetInstalledVoices();

for (int i = 0; i < installed_voices.Count; i++)
    Console.WriteLine(GetVoiceInfoDesc(installed_voices[i].VoiceInfo));

static string GetVoiceInfoDesc(VoiceInfo vi)
{
    return vi.AdditionalInfo["Name"] + " (ID = " + vi.AdditionalInfo["Language"] + ", " + vi.AdditionalInfo["Age"] + ", " + vi.AdditionalInfo["Gender"] + ", " + vi.Culture + ")";
}

上面的代码仅显示3种已安装的语言。

此外,当我使用

ss.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Adult, 0, CultureInfo.CreateSpecificCulture("ru-RU"));

我仍然听到 Irina 是女性的声音。

我测试了 Pavel 的声音,它确实已经安装好并且可以说些什么。

我使用.net 4.0 C#。 有什么想法吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,尝试了多种解决方案,但没有一个起作用。我的要求是不要在Windows 10中找到特定的声音,因此我寻找其他资源并找到了this

我尝试安装其中的一些,但我的应用程序将其识别为已安装,并且可以正常工作。也许您可以在那里找到一些适合您需求的声音。祝你好运!

答案 1 :(得分:0)

由于某种未知原因,某些语言的问题只能在Metro应用中使用,而无法通过SAPI看到。

我们可以通过更改注册表来解决此问题。

这是我从Internet某个地方获取的Windows 10 x64 Pavel语音的修复示例:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices\Tokens\MSTTS_V110_ruRU_PavelM]
@="Microsoft Pavel Mobile - Russian (Russia)"
"419"="Microsoft Pavel Mobile - Russian (Russia)"
"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,72,00,75,00,2d,00,52,00,55,00,5c,00,4d,00,53,00,54,00,54,00,53,00,\
  4c,00,6f,00,63,00,72,00,75,00,52,00,55,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,72,00,75,00,2d,00,52,00,55,00,5c,00,4d,00,31,00,30,00,34,00,39,00,50,\
  00,61,00,76,00,65,00,6c,00,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices\Tokens\MSTTS_V110_ruRU_PavelM\Attributes]
"Age"="Adult"
"DataVersion"="11.0.2013.1022"
"Gender"="Male"
"Language"="419"
"Name"="Microsoft Pavel Mobile"
"SharedPronunciation"=""
"Vendor"="Microsoft"
"Version"="11.0"

自述说:“感谢Nonna Lavrukhina”。