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.