Panda Antivirus – Error 400
20/05/2010Reconocimiento de Voz – Configurar Windows 7 (1)
20/05/2010C#.Net: Texto a Voz.
A lo largo de nuestro ciclo de aprendizaje de la programación, muchos hemos aprendido a mostrar información en consola y luego en ventanas…
¿Pero alguna vez pensaste en que además de consola y ventanas, ambas con texto e imágenes, también podrías usar voz?
Y no se vale que grabes el sonido y luego lo reproduzcas para cada acción…
Vamos a aprender a hacer que nuestra aplicación aproveche las características de voz que incluye Windows.
Para este ejemplo utilicé Windows Vista, pero lo probé posteiormente en Windows Xp y funcionó correctamente.
La diferencia está en la voz, en Windows Xp se utiliza la voz Microsoft Sam, y en Windows Vista se utiliza la voz Microsoft Anna.
Requisitos previos:
- Sistema operativo: Microsoft Windows Vista/XP
- Lenguaje de programación: CSharp == C#
- IDE de programación: Microsoft Visual C# 2008 Express (VisualStudio 2008 Professional o Team System)
- Microsoft .NET Framework 3.0 o superior.
Ejemplo Básico:
Creamos nuestro proyecto, puede ser de Windows Forms, WPF o de consola.
Agregamos la referencia a System.Speech.
En la clase donde realizaremos las tareas haremos un using indicando el namespace: System.Speech.Synthesis;
Y ahora a divertirnos un poco…
Para un ejemplo sencillo:
Creamos un objeto de tipo SpeechSynthesizer:
SpeechSynthesizer ss = new SpeechSynthesizer();
Ahora ya estás a solo una línea de código de escuchar hablar a tu aplicación:
ss.Speak(”Hi! I’m your application…”);
Al objeto SpeechSynthesizer le llamamos el método Speak, y le indicamos el texto con las palabras que queremos escuchar… ¿Olvidé decir que en inglés?…Leí que Windows Vista Ultimate incluye más idiomas para el Texto a Voz, puedes comprobarlo buscando “Texto a voz” desde el menú de inicio…
Ahora sólo queda ejecutar nuestra aplicación y listo…
Ejemplo Avanzado:
El ejemplo anterior era el ejemplo básico… pero podemos hacer algo más elaborado usando el objeto PromptBuilder y PromptStyle, que nos permite definir algunas características de la voz que utilizará el SpeechSynthesizer …
A continuación un ejemplo con sus respectivos comentarios:
//Creamos nuestro objeto de tipo SpeechSynthesizer
//(Despues de haber agregado las referencias correpondientes)
SpeechSynthesizer speaker = new SpeechSynthesizer();
//Creamos un Objeto de tipo PromptBuilder
//Que nos permitirá crear una especie de guión para el texto a voz…
PromptBuilder guion = new PromptBuilder();
//Agregamos una porción de texto, que no será escuchado aún,
//pues por ahora sólo estamos formando el guión…
guion.AppendText(”This is a normal voice…”);
//El texto anterior será pronunciado de forma normal,
//como cuando usamos sólo el método Speak y le indicamos el texto…
//Si queremos cambiar el estilo de la voz,
//utilizamos un objeto de tipo PromptStyle,
//para aplicar algunos cambios a nuestro guión (PromptBuilder)
PromptStyle myStyle = new PromptStyle();
//Así que empezamos a definir el estilo de voz:
//La propiedad Rate del PromptStyle nos sirve para
//establcer la velocidad de la voz, que puede ser:
//PromptRate.ExtraFast
//PromptRate.ExtraSlow;
//PromptRate.Fast;
//PromptRate.Medium;
//PromptRate.NotSet;
//PromptRate.Slow;
//En este caso utilizamos una voz Fast…
myStyle.Rate = PromptRate.Fast;
//Ahora definimos el tono de voz:
//PromptEmphasis.Moderate;
//PromptEmphasis.None;
//PromptEmphasis.NotSet;
//PromptEmphasis.Reduced;
//PromptEmphasis.Strong;
myStyle.Emphasis = PromptEmphasis.Strong;
//Hasta ahora sólo hemos definido el estilo,
//pero no lo hemos aplicado…
//Así que le decimos al guión que empiece a aplicar el
//estilo utilizando el método StartStyle del PromptBuilder:
guion.StartStyle(myStyle);
//Así el texto que agreguemos a partir de a inicialización anterior,
//tendrá el estilo que creamos:
guion.AppendText(”But This is my strong style…”);
//Cuando deseemos cambiar de estilo debemos finalizar la
//aplicación del estilo, utilizando el método EndStyle del PromptBuilder:
guion.EndStyle();
//El siguiente texto ya no estará afectado por el estilo
//que definimos anteriormente:
guion.AppendText(”This is my normal voice again…”);
//Bien, hasta aquí creamos y aplicamos nuestro estilo al guión,
//así que sólo queda decirle a nuestro SpeechSynthesizer qué debe decir:
//En vez de pasarle como argumentos una cadena de texto,
//usamos el PromptBuilder(al que hemos denominado guión para
//entenderlo mejor):
speaker.Speak(guion);
//Al hacer la llamada anterior hemos de escuchar la voz según
//lo que le indicamos con el PromptBuilder y el PromptStyle.
Espero que les halla gustado y que lo prueben…
Hasta la próxima…
Blogbliografia: RinconProgramación