VB 2005 - Parla VB.NET Parla


TTS ou Text-to-Speech é o processo no qual um texto digitado é transformado em um discurso audível.  Em meu artigo ASP.NET  2.0 - Fazendo a sua página falar mostrei como fazer com que texto fosse transformado em áudio em páginas ASP.NET. Vou fazer a mesma coisa para uma aplicação VB.NET usando os recursos do TTS usando o engine da Microsoft para língua portuguesa.

Talvez essa não seja a forma mais elegante de alcançar este objetivo mas é a mais prática que encontrei e pode ser feita em alguns minutos.

Você vai precisar ter instalado os seguintes componentes:

Os módulos para ativar a fala se encontram disponíveis nos seguintes endereços:

Página de download da Microsoft: http://www.microsoft.com/msagent/downloads/user.asp
 

Após instalar os componentes inicie um novo projeto no VB 2005 Express Edition chamado parla_VBNET_parla ou algum outro nome sugestivo.

Em seguida vamos ter que incluir a referência ao componente Microsoft Direct Text-To-Speech. Este é um componente COM portanto clique com o botão direito do mouse sobre o nome do projeto na janela Solution Explorer e selecione a opção Add Reference.. Selecionando a seguir a aba COM na janela Add Reference e escolhendo o componente citado, clicando por fim no botão OK.

Inclua no formulário padrão , form1.vb , um componente ComboBox (cboVoz) , um componente TextTBox  Multiline (txtTexto) e um Button (btnFala) conforme o leiaute abaixo.(Veja na figura a referência incluída no projeto)

Vamos ao código do projeto.

- A primeira coisa a fazer é declarar o namespace referente ao biblioteca TTS que foi incluído como referência no projeto:

Imports ACTIVEVOICEPROJECTLib

Se você for na janela Solution Explorer e expandir o item  References e em seguida clicar na referência ACTIVEVOICEPROJECTLib , poderá ver os métodos e propriedades deste namespace. Na figura destaquei o método Speak(string) que recebe uma string e produz um som.

Perceba que teremos que criar um objeto da classe DirectSS.

Vamos então criar uma instância para a classe DirectSS :

Dim voz As New DirectSS

A seguir no evento Load do formulário inclua o código abaixo:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


Dim
i As
Integer

Dim tipoVoz As String


For
i = 1 To voz.CountEngines

    tipoVoz = voz.ModeName(i)

    cboVoz.Items.Add(tipoVoz)

Next

 

cboVoz.SelectedIndex = 0

 

End Sub

Este código apenas irá preencher a ComboBox com as vozes disponíveis na biblioteca TTS para língua Portuguesa. Executando o código você irá obter:

Observe que são exibidos dois tipos de vozes :

Uma feminina e outra masculina que podemos escolher para produzir a vocalização do texto que será digitado na caixa de texto.

Vamos agora incluir o código no evento SelectedIndexChange de forma a selecionar o tipo de voz que será usado na vocalização conforme a seleção do usuário:

Private Sub cboVoz_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboVoz.SelectedIndexChanged


voz.CurrentMode = cboVoz.SelectedIndex + 1


If
(voz.Gender(voz.CurrentMode) = 1)
Then

     voz.LipType = 0

Else

      voz.LipType = 1

End If

End Sub

Finalmente no evento Click do botão de comando - Parla VB.NET  -  iremos usar o método Speak() passando o texto que foi digitado para vocalização:

Private Sub btnFala_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFala.Click


If
txtTexto.Text = String.Empty
Then

     voz.Speak(txtTexto.Text)

Else

     MsgBox("Informe algum texto para vocalização...")

End If

End Sub

Executando o projeto você pode selecionar uma das vozes, digitar qualquer texto e ouvir o resultado...

Pegue o projeto completo aqui:  parla_VBNET_parla.zip

Eu sei é apenas VB.NET , mas eu gosto...