Speech – Fazendo o computador falar

6 08 2010

Cara essa me surpriendeu. Eu não fazia ideia que o framework tinha essa feature.

Mas em fim, a partir do framework 3.0 temos uma dll chamada System.Speech.dll e uma de suas funções é, acredite, falar um texto que e passado por parâmetro a um metodo.

Bem, vejamos como fica, temos uma classe no namespace System.Speech.Synthesis chamada SpeechSynthesizer que tem um metodo chamado Speak que recebe uma string como parametro e fala a string Oo. \o/ … muito massa ^^ … pena que fala em ingles, até da pra mudar a linguegem selecionando o Voice com o metodo SelectVoice() mas o voice tem de estar instalado.

Pra testar voce pode criar um projeto Console Application, adicionar a dll no projeto e colocar o codigo a seguir no metodo Main

        static void Main(string[] args)
        {
            SpeechSynthesizer synth = new System.Speech.Synthesis.SpeechSynthesizer();
            string str = "Hello";
            do
            {
                str = Console.ReadLine();
                if (str == "/?")
                {
                    Console.WriteLine("");
                    Console.WriteLine("    /rate={Velocidade da fala}");
                    Console.WriteLine("    /volume={Volume da fala}");
                    Console.WriteLine("    {texto a ser falado} /save={Caminho completo do arquivo .wav a ser criado e salvo com a fala}");
                    Console.WriteLine("");
                    continue;
                }
                else if (str.Contains("/rate="))
                {
                    int rate;
                    if (Int32.TryParse(str.Replace("/rate=", ""), out rate))
                    {
                        synth.Rate = rate;
                        Console.WriteLine("    rate=" + synth.Rate);
                    }
                    continue;
                }
                else if (str.Contains("/volume="))
                {
                    int volume;
                    if (Int32.TryParse(str.Replace("/volume=", ""), out volume))
                    {
                        synth.Volume = volume;
                        Console.WriteLine("    volume=" + synth.Volume);
                    }
                    continue;
                }
                else if (str.Contains("/save="))
                {
                    string text = str.Split(new string[] { "/save=" }, StringSplitOptions.None)[0];
                    string path = str.Split(new string[] { "/save=" }, StringSplitOptions.None)[1];
                    if (File.Exists(path))
                    {
                        synth.SetOutputToWaveFile(path);
                        synth.Speak(text);
                        synth.SetOutputToDefaultAudioDevice();
                        Console.WriteLine("    " + text + " save=" + path);
                    }
                    continue;
                }

                var voices = synth.GetInstalledVoices();
                synth.Speak(str);
            } while (str.ToUpper() != "exit".ToUpper());
        }

Com a aplicação rodando, pra ver as opções digite /?

Nele voce pode configurar o volume e a rate (velocidade da voz).

Tem tambem uma aplicação em windows form que voce pode usar pra testar.

para baixar a aplicação windows form clique aqui.

para baixar a aplicação console que eu criei clique aqui.

Anúncios

Ações

Information

One response

6 08 2010
Artigos da semana « Fernando Ottoboni

[…] Speech – Fazendo o computador falar […]

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: