Windows Phone 8

Speech APIs {Usando el Text to Speech} #WP8


En este pequeño tutorial conoceremos una de las Speech APIs que el SDK de Windows Phone 8 nos provee, la de Text to Speech, o lo que es igual a obtener un sonido a partir de un texto escrito.

NOTA: En WP7 teníamos la posibilidad de utilizar TTS (Text to Speech) mediante el uso de Bing Speech API, la cual era una opción muy limitada, además de que necesitaba una conexión a internet (para poder conectar con los servicios de Bing).

Empecemos desde 0 creando una nueva App:

Lo primero que haremos antes de continuar será añadir la capacidad de Reconocimiento de Voz (ID_CAP_SPEECH_RECOGNITION). Para esto dentro de la carpeta Properties encontraremos el archivo WMAppManifest.xml.
Lo abrimos y nos dirigimos a la pestaña de Capacidades:

Ahora es tiempo de hacer la parte grafica o visual con la que el usuario interactuara. En nuestro archivo MainPage.xaml agreguemos un TextBox donde se pueda escribir un texto, el cual será leído, junto a este un botón que provocara la lectura del mismo. Y para que exista un plus, añadiremos también la posibilidad de elegir la voz (masculina o femenina).
Así quedara nuestro Grid principal ya con los elementos antes mencionados:

Añadamos el evento Clic al botón:

<Button Content=”Leer” HorizontalAlignment=”Left” Width=”450″ Click=”Leer_Click” />

Después agreguemos el siguiente namespace en el code-behind (MainPage.xaml.cs) para trabajar con la API Speech.

using Windows.Phone.Speech.Synthesis;

Ahora agreguemos la lógica al evento que acabamos de crear.

private
async
void Leer_Click (object sender, RoutedEventArgs e)
{
if (string.IsNullOrEmpty(inputTextBox.Text))
MessageBox.Show(“Introduce algun texto a leer”);
else
{
try{

SpeechSynthesizer synth = new
SpeechSynthesizer();

var voices = InstalledVoices.All.Where(v => v.Language == “es-ES”).OrderByDescending(v => v.Gender);

VoiceGender gender = VoiceGender.Male;

if (rbHombre.IsChecked == true)

gender = VoiceGender.Male;

else

gender = VoiceGender.Female;

synth.SetVoice(voices.Where(v => v.Gender == gender).FirstOrDefault());

await synth.SpeakTextAsync(inputTextBox.Text);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

}

¿Qué fue lo que se agregó?
Bueno lo primero que realizamos fue instanciar un objeto de tipo SpeechSynthesizer, después con LINQ seleccionamos el conjunto de sintetizadores españoles de la clase InstalledVoices.
Utilizamos los CheckBox para determinar el género elegido para la voz, después establecimos el sintetizador elegido utilizando el método SetVoice y ya por ultimo llamamos al método SpeakTextAsync que recibe el parámetro del texto para sintetizar a voz.

Así luce nuestra App:

Pueden descargar el ejemplo de este tutorial a continuación.

 

 

 

Mas Información:
Channel 9: Windows Phone 8: Using the Speech API
Windows Phone Dev Center: Text-to-Speech (TTS) for Windows Phone

Hasta la próxima!
Happy Coding!

Anuncios

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

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