Comment puis-je changer le genre et l'âge du synthétiseur vocal en C#?

je voudrais changer le sexe et l'âge de la voix de l' System.Speech en c#. Par exemple, une fille de 10 ans mais ne peut pas trouver d'exemple simple pour m'aider à ajuster les paramètres.

19
demandé sur demonplus 2012-06-04 16:35:24

5 réponses

tout d'abord, vérifiez quelles voix vous avez installées en énumérant les GetInstalledVoices méthode de l' SpeechSynthesizer classe, et ensuite utiliser SelectVoiceByHints pour sélectionner l'un d'eux:

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);
}
19
répondu Groo 2012-06-04 12:50:14
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
                }       
         }
    }
  • ce sera un meilleur choix d'utiliser "SpeakAsync" car lorsque la fonction "Speak" exécute / exécute aucune autre fonction ne fonctionnera jusqu'à ce qu'elle finisse son travail (personnellement recommandé)

Change VoiceGender

Changement De VoiceAge

1
répondu Pran 2015-02-17 15:15:41

tout d'abord, vous devez intialiser le discours de référence en utilisant la référence add.

puis créer un gestionnaire d'événements pour le speak commencé alors vous pouvez éditer les paramètres à l'intérieur de ce gestionnaire.

dans le gestionnaire est où vous pouvez changer la voix et l'âge en utilisant le

synthesizer.SelectVoiceByHints(VoiceGender.Male , VoiceAge.Adult);
1
répondu Draxy07 2015-03-16 10:34:19

cet âge et ce sexe ne sont en fait d'aucune utilité. Si vous avez beaucoup de voix installées dans vos fenêtres, alors vous pouvez appeler des voix spécifiques par ces paramètres. Sinon, il s'agit tout simplement faux!

0
répondu Razib Ali 2014-10-26 21:32:33