I am unable to get all the INSTALLED voices for a multi-lingual Text-to-Speech solution, although all installed languages are showing up. I know similar questions have been asked before but there don't seem to be any answers even yet except for some registry tweaks. The code is as under:
foreach (InputLanguage lang in InputLanguage.InstalledInputLanguages)
{
txtText.AppendText(Environment.NewLine + Environment.NewLine + lang.Culture.EnglishName);
using (SpeechSynthesizer synthesizer = new SpeechSynthesizer())
{
var voiceCollection = synthesizer.GetInstalledVoices(new CultureInfo(lang.Culture.Name));
foreach (InstalledVoice voice in voiceCollection)
{
VoiceInfo info = voice.VoiceInfo;
txtText.AppendText(Environment.NewLine + "Name: " + info.Name);
txtText.AppendText(Environment.NewLine + "Gender: " + info.Gender);
txtText.AppendText(Environment.NewLine + "Culture: " + info.Culture + Environment.NewLine);
}
}
}