Невозможно изменить VoiceGender объекта SpeechSynthesizer

Я пытаюсь изменить VoiceGender объекта SpeechSynthesizer:

SpeechSynthesizer synth = new SpeechSynthesizer();
synth.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Adult);
synth.Speak("Hello! Why is the voice still female?");

Программа компилируется и работает без ошибок, но голос женский.

РЕДАКТИРОВАТЬ: я проверил установленные голоса с помощью:

foreach (var v in synth.GetInstalledVoices().Select(v => v.VoiceInfo))
{
    Console.WriteLine("Name:{0}, Gender:{1}, Age:{2}",
    v.Description, v.Gender, v.Age);
}

Что вернуло следующее:

Name:Microsoft Hazel Desktop - English (Great Britain), Gender:Female, Age:Adult
Name:Microsoft David Desktop - English (United States), Gender:Male, Age:Adult
Name:Microsoft Zira Desktop - English (United States), Gender:Female, Age:Adult

РЕДАКТИРОВАТЬ2: Протестировано на другом ПК, и программа работает как положено.


person Necvetanov    schedule 27.06.2017    source источник
comment
Ответ здесь может помочь вам, в основном у вас может не быть установлен мужской голос, и вам может потребоваться сначала его получить. SelectVoiceByHints() не будет выдавать никаких исключений или выдавать предупреждения, если выбранный голос не установлен, вместо этого он сохранит женский голос по умолчанию.   -  person Keyur PATEL    schedule 27.06.2017
comment
@KeyurPATEL Кажется, у меня установлен 1 мужской голос.   -  person Necvetanov    schedule 27.06.2017
comment
Возраст Adult, поэтому вы можете попробовать synth.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Adult); и, возможно, добавить synth.Volume = 100; на всякий случай.   -  person Keyur PATEL    schedule 28.06.2017
comment
@KeyurPATEL Я попробовал, и результат тот же.   -  person Necvetanov    schedule 28.06.2017
comment
Не уверен, почему он ведет себя таким образом, возможно, вы могли бы попробовать synth.SelectVoice("Microsoft David Desktop - English (United States)"); или что-то вроде synth.SelectVoice(synth.GetInstalledVoices().FirstOrDefault(v => v.VoiceInfo.Gender == VoiceGender.Male && v.VoiceInfo.Age == VoiceAge.Adult).Select(v => v.VoiceInfo.Name)).   -  person Keyur PATEL    schedule 29.06.2017