10/1/2007 0:05
El Bruno
System.Speech, Hello World pero al reves
Buenas,
retomando un poco un tema que nunca empecé me gustaría mostrar como con 40 lineas de código, utilizando .Net 3.0 podemos crear una aplicacion que aproveche las capacidades de reconocimiento y sintetización de voz de la librería System.Speech.
Este pequeño formulario de Visual Basic.Net ejemplifica bastante bien el funcionamiento de una aplicación muy simple:
1 Public Class Form1
2
3 Private WithEvents engSR As New System.Speech.Recognition.SpeechRecognizer
4 Private WithEvents engSS As New System.Speech.Synthesis.SpeechSynthesizer
5
6 Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
7
8 ' creo los comandos con los que voy a trabajar
9 Dim itemHW As New Speech.Recognition.SrgsGrammar.SrgsItem("Hello World")
10 Dim itemBW As New Speech.Recognition.SrgsGrammar.SrgsItem("Bye World")
11
12 ' creo la regla con los comandos que tengo q incorporar
13 Dim rule As New Speech.Recognition.SrgsGrammar.SrgsRule("Comandos", _
14 New Speech.Recognition.SrgsGrammar.SrgsOneOf(itemHW, itemBW))
15
16 ' creo el documento de ejemplo
17 Dim doc As New Speech.Recognition.SrgsGrammar.SrgsDocument
18
19 ' agrego la regla y la pongo como regla por defecto
20 doc.Rules.Add(rule)
21 doc.Root = rule
22
23 ' cargo la gramatica de la aplicacion
24 engSR.LoadGrammar(New Speech.Recognition.Grammar(doc))
25
26 End Sub
27
28 Private Sub engSR_SpeechRecognized(ByVal sender As Object, ByVal e As System.Speech.Recognition.SpeechRecognizedEventArgs) Handles engSR.SpeechRecognized
29
30 engSS.SpeakAsync(e.Result.Text)
31
32 End Sub
33
34 End Class
35
El primer paso, es agregar la referencia a System.Speech y como se puede ver en las lineas 3 y 4, hemos creado 2 objetos para trabajar con el reconocimiento (engSR) y sintetización (engSS) de voz.
A continuación en el click de un boton llamado btnStart; creamos los comandos y la gramatica que será la base para rel reconocimiento de voz de nuestra aplicación. Creamos 2 comandos simples "Hello World" y "Bye World" (líneas 9 y 10); que luego agregamos a una regla llamada Comandos y que es agregada a un documento. Un detalle interesante a tener en cuenta es que siempre es necesario especificar cual es la regla raiz en cada documento.
A continuacion cargamos una nueva gramática en el engine para el reconocimiento de voz (linea 24) y listo !!! nuestra aplicación ya está preparada para reconocer los comandos Hello World y Bye World y en cada uno de estos casos se disparará el evento SpeechRecognized (linea 28) donde el sintetizador de voz creará una agradable voz a partir del texto que se haya reconocido ...
Mas simple imposible ¿no?
Saludos
El Bruno
PD: por las dudas, las referencias en Msdn son
Archivado en: Visual Studio,Windows Vista
Comparte este post: