Как получить и использовать полный список установленных языков преобразования текста в речь? - PullRequest
0 голосов
/ 16 декабря 2018

В синтезе речи в Windows 10 происходит что-то действительно странное.

Прежде всего, даже Windows отображает различное количество установленных языков на панелях метро и классических панелях управления.

Приложение 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"));

, я все равно получаю Ирина женский голос.

Iпротестировал голос Pavel , он действительно установлен и что-то говорит.

Я использую .net 4.0 C #.Есть идеи, что здесь происходит?

enter image description here

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

У меня была та же проблема, и я попробовал несколько решений, но ни одно из них не сработало.Моим требованием было не иметь конкретных голосов, найденных в Windows 10, поэтому я искал другие ресурсы и нашел этот .

Я попытался установить некоторые из них, и мое приложение распознает их как установленные, и они работают как положено.Может быть, вы найдете там голоса, которые соответствуют вашим потребностям.Удачи!

0 голосов
/ 17 декабря 2018

Проблема в том, что некоторые языки по неизвестной причине могут быть использованы только в приложениях метро и не могут быть видны через SAPI.

Мы можем исправить это, изменив реестр.

Это пример исправления для голоса Павла в Windows 10 x64, который я взял где-то в Интернете:

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"

Ридм говорит: «Спасибо Нонне Лаврухиной».

...