Reconocimiento de voz en Windows C#

Estos artículos tienen el fin de poder ayudarte en tus inicios de programación, que sea una comprensión fácil y divertida para poder diseñar tu propia aplicación como un asistente virtual.

Comencemos!!

En este articulo hablare sobre el reconocimiento de voz añadido desde el sistema operativo Windows Vista. conocer un poco mas y despejarte todas tu dudas. Haa! se me olvidaba, no dejes de comentar los errores que salga a la hora de compilar (simular tu programa) , ya que haré todo lo posible en responderlas, ya que de ahí se aprende mucho. Con una foto me ayudarías mas!!

La aplicación con  la cual vamos a trabajar es el Visual Studio 2010 en adelante, recomiendo tener siempre el mas actualizado.

A este inicio recomiendo ya tener unas nociones de programación C#, algo básico, también tener tu Visual Studio instalado, actualizado y cracke… a bueno ya tu veras como lo activas je.

Para empezar a programar ya nuestra primera aplicación necesitaremos esta librería o namespace ( ya alguien hiso el trabajo difícil en el algoritmo de reconocer y emular la voz)  Speech.dll , con esta librería podemos reconocer voces y también emularlas.

Todo la programación que se brindara estará hecho en Visual Studio con programación C# y con la tecnología WPF, ya que aparte de programar, seguro querrás que tu aplicación se vea bien por fuera verdad?/

Creamos nuestro proyecto.

 

create project avjarvis

En la parte derecha en la pestaña explorador de soluciones, nos vamos a referencias, clic derecho y agregamos referencias.

referencias avjarvis

Y en ensamblados buscamos la libreria System.Speech.

System speech

Listo,  hemos referido nuestra libreria, ahora si podemos iniciar la programación.

Comenzamos asignando los namespaces.


using System.Speech.Recognition; // Para el reconocimiento de voz
using System.Speech.Synthesis; // Para la emulacion de voz

Seguidamente configuramos la opciones de reconocedor, para eso creare una función la cual llamare.


public partial class MainWindow : Window
{
SpeechRecognitionEngine reconocedor = new SpeechRecognitionEngine();
string _speech;
public MainWindow()
{
InitializeComponent();
}
void loadCfgRec() // Configuracion del reconocimiento
{
reconocedor.LoadGrammar(new DictationGrammar()); // carga todas la gramaticas de windows
reconocedor.SetInputToDefaultAudioDevice(); // el programa usara el microfono predeterminado por el sistema
reconocedor.SpeechRecognized += Reconocedor_SpeechRecognized; // evento que se ejecutara al reconocer
reconocedor.RecognizeAsync(RecognizeMode.Multiple);// iniciamos el reconocimiento.
}
private void Reconocedor_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
_speech = e.Result.Text; // aqui la variable _speech tomara la palabra reconocida.
// aqui el codigo aejecutar al reconover
}
}

No quiero que te pierdas, así que hablare un poco que fue lo que hise acá.

  • Cree el objeto “reconocedor” la cual se comunicara con el sistema windows.
  • Crees una variable “_speech” tipo string donde almacenare la palabra reconocida.
  • De ahi cree una funicion “void loadCfgRec” la cual configura y pone en marca el reconocimiento, la cual he comentado cada linea de codigo dentro de la funcion, si quieres mas detalles dejame ahi en los comentarios.
  • al crear el código de llamada “reconocedor.SpeechRecognized += Reconocedor_SpeechRecognized” automáticamente de crear un evento la cual puedes ver que esta la ultima función.
  • dentro del evento, esta la variable “_speech” que toma el valor de la palabra reconocida.

aun no funciona verdad!, ya que no hemos ejecutado la función  “void loadCfgRec()”, la cual haremos a continuación.

cree un un Textbox  de nombre “txt_out_rec” donde se mostrara la palabra reconocida.

llamando a la función “void loadCfgRec” y mostrando la palabra reconocida en el textbox el resultado seria.

reconociento de voz

y el código final seria:


public partial class MainWindow : Window
{
SpeechRecognitionEngine reconocedor = new SpeechRecognitionEngine();
string _speech;
public MainWindow()
{
InitializeComponent();
loadCfgRec(); // llama a la funcion creada
}
void loadCfgRec() // Configuracion del reconocimiento
{
reconocedor.LoadGrammar(new DictationGrammar()); // carga todas la gramaticas de windows
reconocedor.SetInputToDefaultAudioDevice(); // el programa usara el microfono predeterminado por el sistema
reconocedor.SpeechRecognized += Reconocedor_SpeechRecognized; // evento que se ejecutara al reconocer
reconocedor.RecognizeAsync(RecognizeMode.Multiple);// iniciamos el reconocimiento.
}
private void Reconocedor_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
_speech = e.Result.Text; // aqui la variable _speech tomara la palabra reconocida.
txt_out_rec.Text = _speech; // muestra la palabra reconocida en el texbox
// aqui el codigo aejecutar al reconover
}
}

puedes descargar el código AQUÍ!




comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *