Dia 3: Speech API

Estándar

En WP8 los usuarios pueden interactuar con su aplicacion utilizando el habla, Hay 3 componentes de voz que se pueden integrar en nuestras aplicaciones: Los comandos de voz, Reconocimiento de voz Y de texto a voz (TTS) dejo una imagen que muestra lo mencionado.

 

Texto a Voz

De primera vamos a trabajar con el texto a voz. Donde en WP7 anteriormente teníamos que usar la API de voz Bing si queríamos traducir una frase en sonido, En WP8 esta API es parte de la API en WP.

Donde vamos a crear un proyecto para poner y lo primero que vamos hacer es añadir la capacidad de reconocimiento de voz en WMAppManifest.xml en la pestaña de capacidades.

Sin título

 

Luego de hacer esta acción vamos añadir un botón en nuestro MainPage y añadimos las siguientes lineas de código para el evento click del boton:

private async void Button_Click(object sender, RoutedEventArgs e)
{
SpeechSynthesizer synth = new SpeechSynthesizer();

await synth.SpeakTextAsync(“Hola esto es una prueba”);
}

Como veras solo necesitamos 2 lineas de códigos, donde al ejecutar nuestra aplicación quedaría funcionando. Tenga en cuenta que el metodo SpeakTextAsync del SpeechSynthesizer es asíncrona. Y listo!! no hay nada mas! Pero también podemos cambiar el idioma de la voz y texto (cabe señalar que esto resultara si tienes la voz instalada en el dispositivo) En esta ocasión pondemos  una voz masculina y en ingles, Donde cambiaremos el texto a ingles y seleccionaremos el lenguaje de la voz a ingles quedando de esta forma:

SpeechSynthesizer synth = new SpeechSynthesizer();
VoiceInformation vi = InstalledVoices.All.Where(v => v.Language == “en-US” && v.Gender == VoiceGender.Male).FirstOrDefault();
synth.SetVoice(vi);
await synth.SpeakTextAsync(“Hi my name is carlos”);

Voz a texto

El texto a voz donde ya hablamos en el párrafo anterior anda muy bien pero la conversión de voz a texto es aun mas fácil de implementar. Antes de empezar a tirar codigos añadiremos otra capacidad la cual es del microfono para que podamos capturar los sonidos. Simplemente nos dirigimos nuevamente a WMAppManifest.xml y tildamos ID_CAP_MICROPHONE ya teniendo la capacidad activada podemos empezar agregar código para el reconocimiento de voz. Añadimos otro botón cual le preguntaremos de como se encuentra y 1 TexBlock. Nos quedaría así :

SpeechRecognizerUI Sr = new SpeechRecognizerUI();
Sr.Settings.ListenText = “Hola, Como te llamas?”;
Sr.Settings.ExampleText = “Mi nombre es Carlos”;
SpeechRecognitionUIResult result = await Sr.RecognizeWithUIAsync();
if (result.ResultStatus == SpeechRecognitionUIStatus.Succeeded)
{
TxtEstado.Text = result.RecognitionResult.Text;

}

El objeto SpeechRecognizerUi tiene ajustes de algunas propiedasdes tales como ListenText es el texto que se muestra como titulo en el cuadro de expresion, La siguiente Propiedad es el ExampleText. Aqui se puede añadir un ejemplo de la respuesta. Despues de en la propiedad ReadoutEnabled la ponemos en True para que el teléfono hable el texto nuevamente. La ultima propiedad es la ShowConfirmation que muestra la linea hablada de texto como un texto en la pantalla.  Ya teniendo esto nos vamos al metodo RecognizeWithUIAsync para activar el reconocimiento de voz.

1 2

 

 

En algunos cosos de uso se desea que el usuario elija algunas opciones en lugar de solo texto libre. Esto es realmente facil de implementar con la clase SpeechRecognizerUI. Añadiremos otro boton y otro TextBlock.  Quedando de esta forma :

SpeechRecognizerUI sr = new SpeechRecognizerUI();
sr.Settings.ListenText = “Que clase de musica elijes?”;
sr.Settings.ExampleText = “Rap , Clasico , Metal”;
sr.Settings.ReadoutEnabled = true;
sr.Settings.ShowConfirmation = true;

sr.Recognizer.Grammars.AddGrammarFromList(“answer”, new string[] { “Rap”, “Clasico”, “Metal”});

SpeechRecognitionUIResult result = await sr.RecognizeWithUIAsync();
if (result.ResultStatus == SpeechRecognitionUIStatus.Succeeded)
{
Txt2.Text = result.RecognitionResult.Text;

}

Al ejecutar la aplicación y seleccionar esta opción solo aceptara la música existente que se encuentra dentro del la lista.

 

Comando de voz

El ultimo tema de hoy es los comandos de voz. Con los comandos de voz podemos iniciar nuestra aplicacion con la tarea especifica o ejecutar una tarea cuando ya esta dentro de nuestra aplicacion. Comando de voz siempre consta de 3 partes. El nombre de la aplicación para que el sistema sepa que aplicación es. la segunda es el nombre del comando y la tercera es una frase que es un tipo de parametro que se puede añadir a su comando.

Para activar los comandos de voz nosotros tendremos que agregar un archivo XML que contiene los comandoz de voz.

Sin título

Ya teniendo esto agregado veremos que tiene algunos comandos y frases de ejemplos. Vamos a estar cambiando y añadiendo comandos para iniciar la aplicación buscador de hands?

 

Lo primero que vamos hacer es agregar los comandos al archivo VCD es el CommandPrefix. Esta es la palabra que el sistema operativo utilizara para encontrar nuestra aplicacion. Despues de eso vamos añadir un comando. Este comando necesita un elemento ListenFor donde le decimos al sistema que texto escuche. También puedes agregar una frase a este comando como lo hicimos nosotros.

 

<VoiceCommands xmlns=”http://schemas.microsoft.com/voicecommands/1.0″&gt;
<CommandSet xml:lang=”es-es”>
<CommandPrefix>Carlos</CommandPrefix>
<Example> ayudame a buscar hands </Example>

<Command Name=”Hans”>
<Example> ayudame a buscar hands </Example>
<ListenFor> ayudame a buscar hands </ListenFor>
<ListenFor> iniciando buscador </ListenFor>
<Feedback> Buscando Hands… </Feedback>
<Navigate />
</Command>
</CommandSet>
</VoiceCommands>

 

Ya teniendo esto listo tenemos que registrar nuestro VCD para que el sistema lo reconozca. tienes que jacer esto una vez cuando la aplicacion se ejecutra por primera vez, pero por ahora solo voy a agregar el constructor a nuestro MainPage

private async System.Threading.Tasks.Task InitializeVoiceCommands()
{
await VoiceCommandService.InstallCommandSetsFromFileAsync(new Uri(“ms-appx:///VoiceCommandDefinition1.xml”));
}

Es todo lo que necesitamos hacer para iniciar nuestra aplicacion usando nuestra voz puedes activar el reconocimiento de voz manteniendo pulsado el boton por unos segundos, apretas el signo de interrogacion que ira a la nueva pagina con la explicacion con los comandos disponibles, la primera pagina se describe los comandos del sistema. si delizas hacia la derecha obtendras una vision general de todas las aplicaiones que admiten los comandos de voz. Nuestra aplicacion esta en la lista. Al hacer clic en esta aplicacion veremos una lista de comandos disponibles para nuestra aplicacion:

1 2

 

Ahora estamos listos con esta API! como siempre dejo el codigo de ejemplo para que lo revisen descargalo aqui!!😀

 

 

 

 

 

 

2 comentarios en “Dia 3: Speech API

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s