Я пытаюсь изменить 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: Протестировано на другом ПК, и программа работает как положено.
SelectVoiceByHints()
не будет выдавать никаких исключений или выдавать предупреждения, если выбранный голос не установлен, вместо этого он сохранит женский голос по умолчанию. - person Keyur PATEL   schedule 27.06.2017Adult
, поэтому вы можете попробоватьsynth.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Adult);
и, возможно, добавитьsynth.Volume = 100;
на всякий случай. - person Keyur PATEL   schedule 28.06.2017synth.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