web-dev-qa-db-fra.com

comment puis-je changer le genre et l'âge du synthétiseur de voix en C #?

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

20
Pablo Gonzalez

Commencez par vérifier quelles voix vous avez installées en énumérant la méthode GetInstalledVoices de la SpeechSynthesizer class, puis utilisez SelectVoiceByHints pour en sélectionner une:

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
Groo

vous devez d’abord initialiser le discours de référence à l’aide de la référence add.

créez ensuite un gestionnaire d’événements pour le cycle lancé, puis modifiez les paramètres à l’intérieur de ce gestionnaire.

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

synthesizer.SelectVoiceByHints(VoiceGender.Male , VoiceAge.Adult);
2
Draxy07
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" est en cours d'exécution, aucune autre fonction ne fonctionnera jusqu'à ce qu'elle ait terminé son travail (personnellement recommandé

Changer VoiceGender
Change VoiceAge

1
Pran

Ces âge et sexe ne sont d'aucune utilité. Si de nombreuses voix sont installées dans vos fenêtres, vous pouvez appeler des voix spécifiques à l'aide de ces paramètres. Sinon, c'est tout simplement faux!

0
Razib Ali