Search code examples
c#.netvisual-studio-2017windows-10text-to-speech

SpeechSynthesizer doesn't get all installed voices 3


I have added many voices using "Add language" under region and language. These appear under Text-to-speech in Speech. (I am using Windows 10)

I want to use these in my app with the SpeechSynthesizer class in System.Speech.Synthesis.

When listing the available voices in my application only a handful of those actually available are shown:

static void Main()
{
    SpeechSynthesizer speech = new SpeechSynthesizer();

    ReadOnlyCollection<InstalledVoice> voices = speech.GetInstalledVoices();
    if (File.Exists("available_voices.txt"))
    {
        File.WriteAllText("available_voices.txt", string.Empty);
    }
    using (StreamWriter sw = File.AppendText("available_voices.txt"))
    {
        foreach (InstalledVoice voice in voices)
        {                 
            sw.WriteLine(voice.VoiceInfo.Name);                           
        }
    }
}

Looking in available_voices.txt only these voices are listed:

Microsoft David Desktop
Microsoft Hazel Desktop
Microsoft Zira Desktop
Microsoft Irina Desktop

But looking under Text-to-speech in the setttings there are many more, like Microsoft George and Microsoft Mark.

The accepted answer here: SpeechSynthesizer doesn't get all installed voices suggest changing the platform to x86. I tried this but i am not seeing any change.

This answer: SpeechSynthesizer doesn't get all installed voices 2 suggest using .NET v4.5 because of a bug in System.Speech.Synthesis. I targeted .NET Framework 4.5 but i can still only retrieve 4 voices.

None of the answers in the questions i linked helped me solve my problem, so i am asking again. Any help is appretiated.


Solution

  • I solved it by installing voices from another source and getting Microsoft Speech Platform - Runtime (Version 11)

    The available voices can be found on microsofts website (click on the red download button and the voices should be listed)