Как получить и использовать полный список установленных языков для преобразования текста в речь?

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

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

В приложении Metro отображается 5 установленных языков, а в классической панели управления - только 3.

Мне нужно использовать язык Microsoft Павел, но мое приложение его просто не видит!

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"));

Я по-прежнему слышу женский голос Ирина.

Я тестировал голос Павел, он действительно установлен и что-то говорит.

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

Как получить и использовать полный список установленных языков для преобразования текста в речь?

вы пробовали это с повышенным разрешением?

Derviş Kayımbaşıoğlu 16.12.2018 18:28

@Simonare - Да ...

Kosmo零 16.12.2018 18:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
426
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Проблема в том, что некоторые языки по неизвестной причине могут использоваться только в приложениях для метро и не могут быть обнаружены через 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"

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

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

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

Может ты ссылку дал не ту? Это для Microsoft Speech Platform - Runtime Languages (Version 11) .

Kosmo零 22.12.2018 07:55

@Kosmos, если вы нажмете кнопку загрузки и прокрутите вниз, вы увидите, какие языки доступны для загрузки. Например MSSpeech_TTS_ru-RU_Elena.msi

Tagor 22.12.2018 14:08

Другие вопросы по теме