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: ,
Comparte este post:

# re: System.Speech, Hello World pero al reves

Tuesday, September 02, 2008 5:57 AM by sektor

Hola, el codigo me da el siguiente error, qué puede ser???

The language for the grammar does not match the language of the speech recognizer.

Saludos

# [VS2008] Ejemplo de Text To Speach en 8 líneas

Monday, September 22, 2008 8:42 PM by El Bruno

Buenas, hoy me preguntaron si tenía algún ejemplo simple de utilización de las tecnologías de TextToSpeech

# [VS2008] Ejemplo de Text To Speach en 8 líneas

Monday, September 22, 2008 8:42 PM by El Bruno

Buenas, hoy me preguntaron si tenía algún ejemplo simple de utilización de las tecnologías de TextToSpeech

# [VS2008] Ejemplo de Text To Speach en 8 líneas

Monday, September 22, 2008 8:43 PM by El Bruno

Buenas, hoy me preguntaron si tenía algún ejemplo simple de utilización de las tecnologías de TextToSpeech

# [VS2008] Ejemplo de Text To Speach en 8 líneas

Monday, September 22, 2008 8:43 PM by El Bruno

Buenas, hoy me preguntaron si tenía algún ejemplo simple de utilización de las tecnologías de TextToSpeech

# re: System.Speech, Hello World pero al reves

Thursday, March 25, 2010 6:30 PM by Manuel

A mi me da el mismo error:

The language for the grammar does not match the language of the speech recognizer.

# re: System.Speech, Hello World pero al reves

Monday, August 09, 2010 9:43 PM by Alexisce

hola justo lo q andaba buscando por casualidad hay un lugar en tu site donde proporciones la fuente para poder descargar , es q tratando de compilarlo parece q esta dando problemas

# re: System.Speech, Hello World pero al reves

Tuesday, September 14, 2010 5:47 PM by miguel

Hola "El Bruno", muy interesante tu ejemplo el cual interpreto como que es "Text to Speech", como seria el manejo de clases para hacer un ejemplo "Speech to Text"??

Gracias y saludos,

# re: System.Speech, Hello World pero al reves

Monday, June 06, 2011 2:35 AM by Maritza

Excelenteeeeeeeeeeee!!! mejor imposible!!!!