WPF
- Usando os recursos do Microsoft .NET Speech (C#)
Neste artigo eu vou falar um pouco mais sobre a tecnologia Text-to-Speech (recurso que sintetiza voz a partir de um texto). Este recurso estava presente desde as primeiras versões do Visual Basic e existem diversas bibliotecas de terceiros no mercado que podem ser usadas para tratar o recurso de texto para voz e também o do reconhecimento de voz.
|
|
Quero apresentar neste artigo a nova classe System.Speech que passou a vir incorporada com a plataforma .NET a partir da versão 3.0. Agora você tem ao seu dispor uma classe com recursos de reconhecimento e síntese de voz que quando usada em conjunto com o Microsoft Speech SDK 5.1 permite a criação de aplicações muito interessantes.
O recursos necessários para acompanhar este artigo são:
Usando a classe System.Speech para síntese de voz com WPF
Abra o Visual C# 2010 Express Edition e crie um novo projeto do tipo WPF Application com o nome fala_WPF;
![]() |
A próxima tarefa é incluir uma referência a classe System.Speech. Para isso clique com o botão sobre o nome do projeto e selecione Add Reference;
A seguir na janela Add Reference , abra a aba .NET e selecione System.Speech clicando no botão OK;
![]() |
Em seguida vamos criar uma interface bem simples que nos permita digitar um texto em uma caixa de texto , controlar o volume e a velocidade , falar o texto, data , a hora e o nome que no caso é o Microsoft Ana Para isso vamos usar os seguintes controles a partir da ToolBox:
Veja abaixo como ficou o leiaute da interface criada:
![]() |
Vamos agora definir o código usando os recursos da classe System.Speech. No arquivo MainWindow.xaml.cs inclua a referência ao namespace Speech.Synthesis;
using
System.Speech.Synthesis;A primeira que vamos fazer é declarar no início do do arquivo code-behind MainWindow.xaml.cs uma instância do objeto Speech chamado aqui de speaker;
SpeechSynthesizer
speaker = new SpeechSynthesizer();A classe System.Speech.Synthesis.Speechsynthesizer possui as propriedades e método que permitem sintetizar em voz humana uma string usando a linguagem padrão e a voz do sistema operacional. No meu caso estou usando o Windows 7 e a voz padrão é a voz da Microsoft Ana. Se estiver usando o Windows XP a voz usada será a Microsoft Sam.
Para sintetizar a voz do texto digitado usamos o seguinte código no evento Click do botão - Falar Texto:
private void btnFalarTexto_Click(object sender, RoutedEventArgs e)
{
if (!txtTexto.Text.Equals(string.Empty))
{
speaker.SpeakAsync(txtTexto.Text);
}
else
{
MessageBox.Show("Informe o texto para falar.");
}
}
|
Este código usa o método SpeakAsync da classe Speechsynthesizer para reproduzir o texto digitado usando a voz padrão Microsoft Ana. Os valores para a velocidade e o volume foram definidos no evento ValueChanged dos controles Sliders conforme o código abaixo:
private void sldVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) {
speaker.Volume = (int)sldVolume.Value; } private void sldVelocidade_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) {
speaker.Rate = (int)sldVelocidade.Value; } |
O código para falar a data , a hora e o nome estão no evento Click dos respectivos controles Button conforme abaixo:
private void btnFalarData_Click(object sender, RoutedEventArgs e) {
speaker.SpeakAsync("Today is " + DateTime.Now.ToShortDateString());
} private void btnFalarHora_Click(object sender, RoutedEventArgs e) {
speaker.SpeakAsync("The time is " + DateTime.Now.ToShortTimeString());
} private void btnFalarNome_Click(object sender, RoutedEventArgs e) {
speaker.SpeakAsync("My name is " + speaker.Voice.Name);
}
|
Executando o projeto iremos obter o seguinte resultado:
![]() |
Um detalhe: o texto esta em inglês pois não há ainda um pacote para a língua portuguesa.
Obs: Veja o meu outro artigo sobre o assunto: VB .NET - Usando os recursos do Microsoft .NET Speech
Pegue o projeto completo aqui:
Fala_WPF.zip
Eu sei á penas WPF, mas eu gosto...![]()
Referências: