как я могу изменить пол и возраст синтезатора голоса в C#?

Я хотел бы изменить пол и возраст голоса System.Speech в C#. Например, девочка 10 лет но не может найти ни одного простого примера, чтобы помочь мне настроить параметры.

5 ответов


во-первых, проверьте, какие голоса вы установили, перечислив GetInstalledVoices метод SpeechSynthesizer класс, а затем используйте SelectVoiceByHints, чтобы выбрать один из них:

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);
}


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis; // first import this package

    namespace textToSpeech
    {
        public partial class home : Form
        {
            public string s = "pran"; // storing string (pran) to s

            private void home_Load(object sender, EventArgs e)
                {
                    speech(s); // calling the function with a string argument
                }

            private void speech(string args) // defining the function which will accept a string parameter
                {
                    SpeechSynthesizer synthesizer = new SpeechSynthesizer();
                    synthesizer.SelectVoiceByHints(VoiceGender.Male , VoiceAge.Adult); // to change VoiceGender and VoiceAge check out those links below
                    synthesizer.Volume = 100;  // (0 - 100)
                    synthesizer.Rate = 0;     // (-10 - 10)
                    // Synchronous
                    synthesizer.Speak("Now I'm speaking, no other function'll work");
                    // Asynchronous
                    synthesizer.SpeakAsync("Welcome" + args); // here args = pran
                }       
         }
    }
  • будет лучше использовать "SpeakAsync", потому что, когда функция "Speak" выполняется/работает, ни одна из других функций не будет работать, пока она не завершит свою работу (лично рекомендуется)

Изменить VoiceGender
Изменить VoiceAge


сначала вам нужно intialise ссылочную речь, используя ссылку add.

затем создайте обработчик событий для запущенной речи, затем вы можете редактировать параметры внутри этого обработчика.

в обработчике, где вы можете изменить голос и возраст, используя

synthesizer.SelectVoiceByHints(VoiceGender.Male , VoiceAge.Adult);

эти возраст и пол фактически бесполезны. Если в вашем windows установлено много голосов, вы можете вызывать определенные голоса по этим параметрам. В противном случае, это просто подделка!