Texto hablado (text-to-speech) en Windows Phone 8

Como muchos de uds ya saben, puedes utilizar texto hablado (por sus siglas en inglés TTS – Text to Speech) en Windows Phone desde cualquier aplicación que desarrollemos; o bien desde el botón de búsqueda en el teléfono.

Hace poco en un proyecto que estuvimos trabajando; Marce implementó esto en el producto y me quedé un poco con la duda de como hacerlo y pues aproveché esto para escribir un breve post sobre esta tecnología del teléfono.

Hablame de tú

Para utilizar TTS en versiones anteriores de WP (como 7.1) tenias que utilizar algún producto de terceros. Uno de los más usados y creo que más convenientes es el de Bing; aquí les dejo un ejemplo de como utilizarlo directo desde The CodeProject.

En la nueva version de Windows Phone ya dentro de la plataforma (seguramente utilizando el mismo API de Bing) pero mucho más robusto y mucho más sencillo de usar. Además de que ya no suena tan robótico como en algunas versiones de TTS que hay en el mercado. Otra cosa interesante es que no requiere conectarse al internet (a diferencia del ejemplo que les dejé en el párrafo anterior) que requiere conexión cada vez que se necesita hacer uso del API.

Speech features

Echalo a andar

Es súper sencillo. Primero tenemos que asegurarnos que esta el nombre de espacio y mandar a ejecutar el segmento de código. Puedes mandarle un string normal o un SSML (Speech Synthesis Markup Language) para darle énfasis o diferentes interacciones al texto saliente del teléfono.

Checate el siguiente Hola Mundo:

private async void HelloWorldButton_Click(object sender, RoutedEventArgs e)
{
var synthesizer = new SpeechSynthesizer();
await synthesizer.SpeakTextAsync(«Hola mundo!»);
}

Puedes cambiarle las voces y lenguajes utilizando el método SetVoice en el SpeechSynthesizer() o directamente utilizando SSML.

Chequen la documentación completa de TTS aquí.

Preséntame a todas

Para saber cuales son las voces instaladas en tu teléfono se utiliza el objeto InstalledVoices. Dicho objeto regresa una enumeración con todas las voces y lenguajes que se encuentran instaladas en el teléfono para poder utilizarlas mediante programación … por ejemplo si gustas que tu usuario pueda escuchar cierto texto en cierto lenguaje.

private async void AllVoicesButton_Click(object sender, RoutedEventArgs e)
{
foreach (var voice in InstalledVoices.All)
{
Debug.WriteLine(voice.DisplayName + «, » +
voice.Language + «, » +
voice.Gender );

using (var synth = new SpeechSynthesizer())
{
synth.SetVoice(voice);
await synth.SpeakTextAsync(«Soy la voz » + voice.DisplayName + «.»);
}
}
}

Como pueden ver es muy sencillo incorporar esta funcionalidad dentro de tus aplicaciones de Windows Phone 8.  Estoy investigando un poco de reconocimiento de voz para incorporarlo en tus aplicaciones … espero poderles compartir más información a ese respecto pronto.

Cheers!


Comentarios

Deja una respuesta