Olá amigos! Neste artigo vou contar um pouco sobre a tecnologia de voz, e mostrar como fazer a sua aplicação falar.
Programa que vamos fazer
Clique aqui para dar download no código fonte.
Conhecendo um pouco do Speech.
Fazer uma aplicação falar não é algo tão recente. Lembro que minhas primeiras linhas com o Delphi (há uns bons anos atrás) já tinham um recurso de texto para voz, com uma biblioteca, ainda na versão alfa. A fala era muito estranha, e precisava ser em inglês para sair algo razoável. Tinha ainda um recurso de comando por voz, em que era necessário gastar por volta de 45 minutos repetindo frases exibidas na tela, para o computador poder “mapear” a sua fala, e depois executar os comandos que você programou.
Hoje em dia esta tecnologia melhorou bastante, mas ainda, a meu ver, não atingiu seu potencial. Há inúmeras bibliotecas que permite recursos de texto para voz (text-to-speech) e comando de voz, como por exemplo, o Speech SDK da Microsoft. O Framework do .NET, a partir da versão 3.0, ganhou uma camada de Speech. Hoje já é possível ter recursos de voz com PDAs, Celulares, Tablet PCs, Carros, Casas, Robôs e muito mais.
Assim como o XHTML, a W3C (órgão de padronização web) criou padrões para as TAGs suportadas por sistemas de Speech de mais de 70 fabricantes, incluindo a Microsoft, como o SALT, uma extensão do HMTL. O VXML (VoiceXML), um XML dedicado a sistemas que tratam aplicações de voz. Como exemplo, abaixo vemos um código HMTL, e outro VXHML
Exemplo de HTML:
<html>
<body>
<img src=”imasters.jpg”/>
</body>
</html>
Exemplo de VXHML:
<vxml version=”2.0″>
<form>
<block>
<prompt> Imasters </prompt>
</block>
</form>
</vxml>
Existem também servidores dedicados a operações voz, utilizado muito em atendimento ao consumidor. A Microsoft têm, por exemplo, o Microsoft Speech Server 2004 R2.
Exemplo e vantagens de aplicações que podem usar voz.
- Auxílio para deficientes visual
- E-learning
- Leitor de Texto em Geral
- Suporte para aplicativos móbiles
- Segurança
- Suporte
- Call Center
- Integração com PDAs
- Reconhecimento de comandos via voz
- Suporte a disléxicos.
- Controle de equipamentos a longa distância, em campo.
- Operações cirúrgicas
- Aplicações cujo acesso é via telefone
- Muito outros…
Conhecendo o System.Speech.Recognition, do .net Framework
Este namespace possuí algoritmos que reconhecem palavras e frases em uma entrada de áudio, e suporta padrões como o SRGS (W3C Speech Recognition Grammar Specification). Vamos supor que você queira desenvolver um programa que, via comando de voz, abra outras aplicações como o MS-Word, ou até o site do imasters.
Para que seja possível, é iniciado um processo de reconhecimento de voz, que te retornando a gramática que foi reconhecida. Esta gramática então é comparada com as frases já cadastradas e pode executar o comando correto para abrir a aplicação desejada. A SRGS possibilita o uso de duas sintaxes, uma baseada no XML, e outra, menos utilizada, o Backus-Naur form (BNF).
Vamos analizar um exemplo de código, ele não faz parte do código disponível para download, mas achei interessante colocar, para entendermos um pouco do funcionamento do System.Speech.Recognition.
''' <summary>
''' Função que verifica minha lista de programas, e
''' </summary>
''' <param name="dsProgramas">
''' Data Set, de lista de programas, que pode vir de um XML, banco de dados...
''' </param>
''' <param name="info"></param>
''' <returns></returns>
''' <remarks>
''' Por exemplo, quando alguém fala "Abrir programa [nome do programa]"
''' O "Abrir programa" é Fixo, e [nome do programa] varia.
''' </remarks>
Private Function abrirPrograma(ByVal dsProgramas As System.Data.DataSet(), ByVal ParamArray info As Integer()) As Grammar
' Lista que contem todos meus programas cadastrados (onde você quiser, XML, banco de cados...)
Dim listaDePrograma As New Choices()
Dim drPrograma As Data.DataRow
For Each drPrograma In dsProgramas.table(0).rows
' Adiciono o programa, como uma opção
listaDePrograma.Add(drPrograma("Programa"))
Next
' Aqui eu compilo minha fala "FIXA" com o que o usuário quer falar.
Dim oMinhaFala As New GrammarBuilder("Abrir programa")
oMinhaFala.Append(listaDePrograma)
Dim oFala As New Grammar(builder1)
oFala.Name = "Abrir programa" ' nome da fala
If info.Length >= 1 Then
oFala.Priority = info(0)
End If
' Retorno a minha fala.
Return oFala
End Function
Pré-requisitos
Este artigo foi montado nas configurações abaixo. Não foi testado em outros ambientes.
- Framework 3.5 com VB.net
- Visual Studio 2005.
Mãos a obra
Clique aqui para dar download no projeto de exemplo.
Para iniciarmos, abra o Visual Studio, e crie um projeto Desktop.
Adicione os controles, conforme as figura.
Clique com o botão direito em cima da aplicação em seguida em ‘add reference’
Depois adicione o objeto ‘Microsoft Speech Object Library’
Monte a tela conforme imagem abaixo

Agora, no evento do botão “falar”, adicione o código.
''' <summary>
''' Click do botão salvar
''' </summary>
Private Sub btnFalar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFalar.Click
Dim oSpeech As New SpeechLib.SpVoice
Dim oVoz As New SpeechLib.SpObjectTokenCategory
Dim sMensagem As String = String.Empty
' Recebo a mensagem
sMensagem = txtMensagem.Text
' Trato minha mensagem
If String.IsNullOrEmpty(sMensagem) Then
txtMensagem.Text = "Olaaa! Tudo bem?"
End If
' Determino a velocidade
oSpeech.Rate = Velocidade.Value
' Determino o volume
oSpeech.Volume = Volume.Value
' Falo
oSpeech.Speak(sMensagem, SpeechLib.SpeechVoiceSpeakFlags.SVSFDefault)
' Espero acabar
oSpeech.WaitUntilDone(oSpeech.SynchronousSpeakTimeout)
End Sub
Links
Speech Technologies
http://www.microsoft.com/speech/speech2007/default.mspx
System.Speech
http://msdn2.microsoft.com/en-us/library/system.speech.recognition.aspx
VXML
Norma (Speech Recognition Grammar Specification Version 1.0)
http://www.w3.org/TR/speech-grammar/
Considerações finais
O poder da voz com os sistemas não atingiu ainda sua potencialidade, e cada vez mais ganha mais espaço e novos recursos. Ao fazer um sistema, foque em todas as pessoas que possam utilizá-lo, a usabilidade é um fator que deve estar presente em todos os sistemas, e a voz pode ser um grande auxílio.
Cabe a todos nós descobrir novos usos para esta poderosa ferramenta.
Clique aqui para dar download no código fonte.
Espero que tenha gostado! Forte Abraço.







