Evilnapsis

Programming, Hacking and More

Desktop Development

Reconocimiento de Voz a Texto con C# .NET

La plataforma .NET nos brinda una solución para reconocer voz, obtener valor en texto y podemos hacer programas controlados por voz.

En este articulo vamos a ver el uso básico de la librería System.Speech.Recognition para leer datos de entrada desde el micrófono de la computadora y que un programa en C# .NET reconozca nuestras palabras y obtenga el resultado en texto.

Codigo

Primero debemos usar la referencia, recordemos que esta referencia la vamos a agregar desde la librería de ensamblados existentes del sistema.

[code language=”csharp”]

using System.Speech.Recognition;

[/code]

Después vamos a inicializar los valores para empezar con el reconocimiento.

[code language=”csharp”]

SpeechRecognitionEngine reco = new SpeechRecognitionEngine();
Grammar gra = new DictationGrammar();
reco.LoadGrammar(gra);

[/code]

Con esto creamos un Motor de Reconocimiento de Voz y le cargamos un Grammar tipo DictationGrammar. Ya estamos listo para empezar a leer datos.

[code language=”csharp”]

try
{
reco.SetInputToDefaultAudioDevice();
RecognitionResult res = reco.Recognize();
textBox1.Text = res.Text;
}
catch (InvalidOperationException ex){
MessageBox.Show("No se puede reconocer los datos de entrada.");
}catch(NullReferenceException ex)
{
textBox1.Text = "[Sin Resultados]";
}
finally
{
reco.UnloadAllGrammars();
}

[/code]

En este ultimo trozo de código usamos un try-catch, donde los datos del try son las lineas que se ejecutaran y después algunas excepciones.

Con la linea reco.SetInputToDefaultAudioDevice() asignamos como entrada de audio el dispositivo por defecto, es decir el micrófono de la computadora.

Con esta linea RecognitionResult res = reco.Recognize(), se hace el reconocimiento con reco.Recognize() y se devuelve el resultado a la variable res tipo RecognitionResult.

Después asignamos en valor de res.Result en el textInput1.

Los siguientes catch son para cuando no se pueda reconocer o leer los datos de entrada y cuando no exista ningún resultado para reconocer.

Por ultimo con el finally cerramos el RecognitionEngine y liberamos los procesos asociados.

Descargar

Les dejo un proyecto en Visual Studio donde pueden ver la implementacion del código.

A continuación el link de descarga.

Link: https://drive.google.com/file/d/1Q22FWogTLTv3HpZFjwkNtjoUoZ8Ulo6C/view?usp=sharing

Conclusión

Es posible hacer programas controlados con la voz después de obtener el resultado del reconocimiento, usando if podemos comparar con un grupo de opciones.

Con un poco de construcción también seria posible usar parámetros.

Como podemos ver hasta aquí es relativamente fácil, y a partir de aquí ustedes pueden dar el uso que quieran.

Agustin Ramos

Desarrollador de Software

Leave a Reply