Search code examples
c#speechsynthesizer

how I can change the voice synthesizer gender and age in C#?


I would like to change the gender and age of the voice of System.Speech in c#. For example, a girl of 10 years but can not find any simple example to help me adjust the parameters.


Solution

  • First, check which voices you have installed by enumerating the GetInstalledVoices method of the SpeechSynthesizer class, and then use SelectVoiceByHints to select one of them:

    using (SpeechSynthesizer synthesizer = new SpeechSynthesizer())
    {
        // show installed voices
        foreach (var v in synthesizer.GetInstalledVoices().Select(v => v.VoiceInfo))
        {
            Console.WriteLine("Name:{0}, Gender:{1}, Age:{2}",
              v.Description, v.Gender, v.Age);
        }
    
        // select male senior (if it exists)
        synthesizer.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Senior);
    
        // select audio device
        synthesizer.SetOutputToDefaultAudioDevice();
    
        // build and speak a prompt
        PromptBuilder builder = new PromptBuilder();
        builder.AppendText("Found this on Stack Overflow.");
        synthesizer.Speak(builder);
    }