Framework .NET / C# – La synthèse vocale

La synthèse vocale est une voix artificielle obtenue grâce à un logiciel qui transforme un texte en sons audibles et compréhensibles. Le Framework .NET propose un assembly nommé System.Speech permettant de réaliser des synthèses vocales, dans les applications développées avec le Framework .NET. Ainsi une application peut afficher et lire des messages.
La procédure de mise en œuvre est très simple :

  • Ajouter une référence vers l’assembly System.Speech.dll du Framework .NET
  • Instancier la classe System.Speech.Synthesis.SpeechSynthesizer
  • Appeler sur cette instance la méthode Speak en passant en paramètre le texte à énoncer

Dans l’exemple ci-dessous, si l’utilisateur valide sans avoir saisi de texte, alors le message « Veuillez saisir un message » est énoncé. Si du texte est saisi, alors ce texte est énoncé :

class Program
{
    static void Main(string[] args)
    {
        // Variables locales.
        string messageAnnonce, saisieText;
        SpeechSynthesizer speechSynthesizer;

        try
        {
            do
            {
                // Initialisation.
                Console.Clear();
                messageAnnonce = "Veuillez saisir un message";
                speechSynthesizer = new SpeechSynthesizer();

                // IHM.
                Console.Write($"{messageAnnonce} : ");
                saisieText = Console.ReadLine();

                if (saisieText == string.Empty)
                {
                    // Lecture du message d'annonce.
                    speechSynthesizer.Speak(messageAnnonce);
                }
            }
            while (saisieText == string.Empty);

            // Lecture du texte saisi.
            speechSynthesizer.Speak(saisieText);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Erreur : {ex.Message}");
        }            
        finally
        {
            Console.Write($"{Environment.NewLine}Veuillez appuyer sur [Entrée] pour fermer la fenêtre ...");
            Console.ReadKey();
        }
    }
}

About: James RAVAILLE

Travaillant avec la plateforme Microsoft .NET depuis 2002, j’alterne les missions de formation et d’ingénierie avec cette plateforme. J’écris ce blog pour transmettre mes connaissances à tout développeur, qu’il soit débutant ou expérimenté.