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

20

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

Ваш Ответ

5   ответов
20

Во-первых, проверьте, какие голоса вы установили, перечислив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);
}
Error: User Rate Limit Exceeded Pablo Gonzalez
Error: User Rate Limit Exceeded Pablo Gonzalez
Error: User Rate Limit ExceededThis MSDN pageError: User Rate Limit Exceeded
0

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

1
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
                }       
         }
    }
  • It'll be better choice to use "SpeakAsync" because when "Speak" function is executing/running none of other function will work until it finishes it's work (personally recommended)

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

3

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

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

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

synthesizer.SelectVoiceByHints(VoiceGender.Male , VoiceAge.Adult);
11
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededStackOverFlowError: User Rate Limit ExceededLIKEError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Pablo Gonzalez

Похожие вопросы