
- Boton Pronuntiation: Nos permite ajustar la pronunciación
de un modo similar al caso de la salida de audio que veíamos
antes pero ahora para la entrada. El funcionamiento es diferente
al caso anterior, en este caso escribimos la palabra queremos
modificar/añadir/borrar y hacemos clic en el botón de Siguiente,
en la nueva pantalla podemos pasar a configurar los fonemas
que compondrán la palabra y almacenarla en el diccionario
de manera que podemos hacer uso de ella posteriormente. Hay
que señalar que cuando hacemos cambios en los fonemas de una
palabra y grabamos los cambios se nos pide si queremos notificar
a Microsoft (figura) de estos cambios para que los tenga en
cuenta en futuras versiones del producto.



- Botón Adjust Microphone Settings: Desde este botón accedemos
al asistente para configurar el micrófono que veíamos en el
punto 3.1 sobre la instalación y configuración de los asistentes.
Para finalizar con el estudio del Speech recordar
que dentro del editor del ADK todos estos elementos quedan reflejados
por la aparición de un curioso personaje llamado Merlin, que
es la representación "física" de todo lo que estamos viendo
y que será el encargado de hablar los contenidos de las aplicaciones
que desarrollemos y de entender lo que digamos al sistema, en
la figura vemos a este curioso elemento:

4.- EL LENGUAJE VoxML
VoxML está basado en XML y se puede decir que
es una variante del voiceXML (Voice eXtensible Markup Language)
y sus especificaciones las dirige el VoiceXML Forum creado por
AT&T, IBM, Motorola y Lucent Technologies.), y su objetivo es
el de proporcionar a los desarrolladores de aplicaciones móviles
una herramienta para crear aplicaciones cuya elemento fundamental
de trabajo sea la voz, de modo que la navegación, la entrada
de datos e incluso la salida se basen en este elemento.
Como en cualquier otro lenguaje de programación
cada vez que iniciamos un nuevo proyecto debemos de seguir una
serie de pasos que nos permitan determinar de un modo u otro
el esquema básico que nuestra aplicación tendrá, este aspecto
es algo que todo programador sabe de su importancia ya que resulta
fundamental para hacer un código estable y reutilizable en un
futuro, es por tanto que el punto de partida de estudio de VoxML
debe ser este mismo punto: la manera en la que las aplicaciones
de voz deben de diseñarse para obtener el resultado esperado.
En este caso hay una serie de preguntas que debemos
de hacernos y que posteriormente trataremos de identificar en
un ejemplo que desarrollaremos poco a poco, entre otras cuestiones
tenemos que identificar lo siguiente:
- Tipo de servicio que estamos desarrollando o que queremos
desarrollar.
- Los datos que disponemos en el sistema actualmente si existen
por su puesto.
- El conjunto mínimo de entradas requeridas por el usuario.
- Las salidas que el sistema debe devolver.
- Tiempo aceptable de respuesta del sistema.
- Identificar el mejor método de dialogo con el usuario en
función de sus características, es decir, orientar el sistema
hacia el usuario final que al fin y al cabo es el que va a
tener que utilizarlo.
Otro aspecto fundamental en el desarrollo de las
aplicaciones en VoxML y que nos ayudara en la codificación es
escribir el diagrama de estado de la aplicación, en el cual
se determina las distintas situaciones por las cuales puede
evolucionar nuestro programa de manera que indiquemos los estados,
transiciones, validaciones de entrada en definitiva al hacer
este diagrama obtendremos lo que se puede pasar a denominar
Secuencia de Dialogo con el usuario. :
4.1.- DIALOGS Y STEPS
Los elementos fundamentales que componen una
aplicación escrita en VoxML son solamente dos al igual que sucede
en WML, si en éste los dos elementos básicos son las barajas
y las cartas, en VoxML son el DIALOG y el STEP, que proporcionan
la estructura elemental a cualquier aplicación.
Como sucede con el tag <WML> con DIALOG
definimos el alcance del documento (aplicación) VoxML de tal
modo que cualquier otro elemento que incluyamos dentro de nuestro
documento estará delimitado por los tags<DIALOG>
. Por otra parte el elemento STEP nos va a definir
un estado de nuestra aplicación de igual modo que el elemento
CARD nos define una pantalla en WML. Este estado siempre representa
un dialogo interactivo entre la aplicación y el usuario y siempre
la navegación va a producirse entre diferentes STEP como resultado
de las respuestas del usuario a las preguntas que plantee el
programa. En el siguiente ejemplo tenéis el esqueleto que presentaría
una aplicación VoxML típica
<?xml version="1.0"?>
<DIALOG>
<STEP NAME="init">
<!-Codigo del Step --> </STEP>
</DIALOG>
Como podéis ver por el fragmento de código anterior
la estructura es muy parecida a la de WML, aunque cambia un
poco la definición del tipo de documento XML siendo un poco
más abreviada pero es una línea obligatoria que no podemos omitir.
Por otra parte los comentarios en el código del programa siguen
la sintaxis de siempre por lo que no tenemos que aprender en
este apartado nada nuevo. Como sucede en otros lenguajes como
HTML o WML los tags que tenemos pueden variar su comportamiento
por la inclusión dentro de la etiqueta de modificadores (atributos)
particulares para cada tipo de etiqueta, los cuales siempre
presentan una sintaxis muy similar a la siguiente:
<TAG Atributo=Valor> Elementos dentro
del TAG </TAG>
En VoxML hemos dicho que los elementos fundamentales
son el DIALOG y el STEP, pues bien siempre que una aplicación
comienza su ejecución el terminal comienza la ejecución por
aquel STEP cuyo modificador NAME tiene el valor de "init" (en
minúsculas siempre), este modificador NAME se utiliza para asignar
un nombre lógico a los distintos STEP que forman parte de nuestro
documento VoxML. Es importante señalar que no importa el lugar
que ocupe el STEP init dentro del código, puede ser el primero
que aparezca o el último pero siempre debe de aparecer.
El tag DIALOG solo tiene un atributo que debemos
conocer, es el BARGEIN el cual puede tomar dos valores "Y" o
"N", y su finalidad es la de interrumpir la lectura de los elementos
del STEP en caso que el usuario diga algo (valor "Y").
En el caso del STEP además del atributo NAME que
veíamos antes tenemos otro muy interesante ya que nos permite
agrupar conjuntos de STEP dentro de una misma clase (esto lo
veremos más adelante cuando veamos el tag CLASS) este tag es
el denominado PARENT y nos va a servir para indicar a que clase
(CLASS) pertenece un STEP determinado.
4.2.- PROMPT, HELP E INPUT
Otros elementos básicos que van a formar parte
de las aplicaciones VoxML en un alto porcentaje, son los tags
PROMPT, HELP e INPUT que vamos a ver a continuación y que ya
nos permitirán elaborar un pequeño ejemplo ilustrativo de todo
lo que hemos visto hasta este momento.
· PROMPT: Este elemento se utiliza para definir el
contenido que se presentará al usuario cuando entra dentro
de un STEP determinado. La sintaxis de este tag es la siguiente:
El texto que introduzcamos entre los dos tags
va a ser leído por el Speech (recordar que este elemento se
representara en el ADK como Merlin). No obstante la lectura
que el Speech va a realizar puede modificarse por diferentes
elementos del lenguaje VoxML que veremos un poco más adelante
como son los tags EMP, PROS, AUDIO etc.
· HELP: Es otro elemento que vamos a utilizar para
definir el contenido de un STEP y que junto con PROMPT servirán
de guía al usuario para el manejo de la aplicación. El tag
HELP se ejecuta siempre que el usuario pide ayuda al sistema
bien diciendo "Help" o en alguna frase que contenga dicha
palabra como por ejemplo "I need Help" o frases similares.
Si no definimos un HELP para un STEP determinado el sistema
utiliza uno por defecto que consiste en parar la ejecución
del PROMPT que se este leyendo en ese momento y a continuación
emitir el mensaje: "No help is available" (No hay ayuda disponible),
es por tanto aconsejable definir los distintos niveles de
ayuda que cada STEP pueda necesitar a fin de facilitar al
usuario el uso de la aplicación. La sintaxis básica de HELP
es la siguiente:
Los atributos más interesantes de HELP son ORDINAL
que indica el mensaje que debe de usarse en repetidas llamadas
a HELP por parte del usuario, no hay limite en el número que
puede indicarse a ORDINAL. Por otro lado tenemos a REPROMPT
que puede tomar dos valores Y o N y que sirve para indicar que
el mensaje de ayuda debe ser el contenido del PROMPT del STEP
en el que nos encontramos, el valor por defecto para este atributo
es N.
Un ejemplo de HELP para clarificar sus posibilidades
lo vemos a continuación:
<STEP NAME='Ayuda">
<HELP REPROMPT="Y">We hear the prompt
again</HELP>
<HELP ORDINAL="2">Second help message
</HELP>
<HELP ORDINAL="3">Third help message</HELP>
</STEP>
· INPUT: Este tag tiene una misión muy importante
dentro de VoxML ya que sirve para definir las entradas que
un usuario puede dar al sistema. Los elementos INPUT solo
se pueden encontrar dentro de los tags STEP y nunca fuera
de ellos. Hay diferentes tipos de tags INPUT que varían en
función del tipo de entrada que se espere del usuario, es
decir, no es lo mismo una entrada de una texto que de un valor
numérico o de una fecha, en el cuadro tenéis todos los tipos
de INPUT que pueden definirse en VoxML. Para indicar que una
entrada es de un tipo o de otro tenemos el atributo TYPE en
el que indicamos uno de los valores del cuadro.
|
Tipos de INPUT en VoxML
- DATE : El usuario va a introducir una fecha al sistema
- DIGITS : El usuario va a introducir dígitos al sistema
del 0 al 9, por ejemplo cuando marcamos el PIN del móvil.
- HIDDEN : Se utiliza para asignar un valor a una variable
en VoxML sin intervención por parte del usuario.
- MONEY : El usuario va a introducir una cantidad monetaria
- NONE : Se utiliza en unión con el tag NEXT para indicar
la siguiente localización a la que debe de ir la ejecución
del programa
- NUMBER : El usuario va introducir un numero, VoxML
reconoce en este caso cantidades no negativas y enteras
de hasta 24 dígitos.
- OPTIONLIST: Se utiliza para indicar un conjunto de
posibles opciones de las cuales el usuario debe de elegir
una. - PHONE : El usuario va introducir un número de teléfono
- TIME : El usuario va introducir una hora
- YORN : Se utiliza para recoger respuestas del usuario
del tipo "Yes" o "No"
|
Dentro del tag INPUT existe un atributo muy importante
que es el atributo NEXT que sirve para indicar el siguiente
STEP a ejecutar cuando el usuario diga la opción correspondiente
al INPUT.
4.3.- OTROS ELEMENTOS DEL LENGUAJE VOXML
Aparte de los tags que veíamos en el punto anterior
existen otros elementos que conviene conocer para usarlos en
nuestros desarrollos:
· BREAK: Se utiliza para insertar una pausa dentro
del texto que se esta presentando al usuario. Contiene un
atributo llamado MSECS que indica los milisegundos que se
deben de hacer de pausa. Otra manera de hacer esto mismo es
mediante el atributo SIZE que puede tomar cualquiera de los
siguientes valores NONE (sin pausa), SMALL (pausa pequeña),
MEDIUM (pausa media) o LARGE (pausa grande).
· ACK: Se utiliza como mecanismo para proporcionar
una doble validación de los datos que el usuario introduce
en el sistema sin el elemento ACK tendríamos que crear dos
STEP distintos uno para recoger la primera entrada y el otro
para validarla, por tanto el uso de ACK es para ahorrar este
tipo de construcciones.
Por ejemplo:
<STEP NAME="TiposCoche">
<PROMPT> What car do you have? </PROMPT>
<INPUT NAME="Tipos" TYPE=OPTIONLIST NEXT="#OtroStep"
<OPTION VALUE="Ford">Ford</OPTION>
<OPTION VALUE="Daewoo">Daewoo</OPTION>
<OPTION VALUE="Renault">Renault</OPTION>
</INPUT>
<ACK CONFIRM="YORN">Your car is:<VALUE
NAME="Tipos"/> Is correct?</ACK> </STEP>
Este tag admite el atributo CONFIRM cuyo único valor puede
ser YORN (es decir, "Yes" o "No" como respuesta por parte
del usuario)
· EMP: Sirve para modificar la entonación (enfatizar)
un determinado texto que va a ser leído por el Speech. Contiene
un único atributo llamado LEVEL que sirve para indicar dicho
nivel de entonación y cuyos valores son los siguientes: NONE
(sin entonación), REDUCED (entonación baja), MODERATE (entonación
media) y STRONG (entonación fuerte).
Las palabras "will be" sería pronunciadas con un énfasis
mucho mayor que el resto de la frase.
· PROS: Al igual que sucede con EMP con este tag podemos
cambiar los parámetros del texto que el Speech emite, concretamente
podemos modificar el volumen, las palabras por minuto así
como la frecuencia, para hacer esto disponemos de los siguientes
atributos RATE (indica la frecuencia de palabras por minuto
(135 es normal y 300 muy rápido), VOL (volumen entre 0.0 que
indica el silencio y 1.0 que es el volumen más alto), PITCH
y RANGE sirven para modificar el timbre de la voz y el tono.
En el caso del PITCH una voz femenina se encuentra entre los
140 y 280 hz y la de un hombre entre 70 y 140 Hz, para el
RANGE tenemos que las mujeres estan por encima de los 80 Hz
y los hombres entre 40-80 Hz.
· AUDIO: Es otro de los elementos interesantes de
VoxML y sirve para que en vez de obtener como resultado por
parte del sistema la lectura del texto incluido en una tag
PROMPT, obtengamos como salida el contenido de un fichero
de voz (.wav o .voc). Es una posibilidad muy interesante ya
que podemos tener fragmentos de noticias o cualquier otro
tipo de información en un fichero de este tipo y podemos oírlo
en su estado original sin necesidad de tener que hacer nada
más con él.
Un ejemplo lo tenemos en el siguiente código:
<PROMPT>
And the president says:
<AUDIO SRC="http://localhost/president.wav></AUDIO>
</PROMPT>
El atributo SRC sirve para indicar la localización del fichero
dentro del servidor.
· GOODBYE: Este tag sirve para indicar que debe de
suceder cuando el usuario dice "GoodBye" o "Bye" en el sistema.
Generalmente cuando se dice esta palabra se fuerza a la finalización
de la ejecución del DIALOG y de la sesión del usuario, sin
embargo si hacemos el uso de este tag podemos modificar el
comportamiento por defecto del sistema. El tag GOODBYE presenta
dos atributos a saber: ORDINAL que indica la secuencia de
acción a ejecutar por cada "Goodbye" que el usuario dice en
el sistema y REPROMPT con el significado que ya hemos visto,
es decir si vale 'Y' al el texto del tag GOODBYE se corresponderá
con el del PROMPT del tag y si vale 'N' podemos añadir nosotros
un texto adicional. En el siguiente ejemplo de GOODBYE se
nos pide nuestro PIN, si decimos "Goodbye" la primera vez
se nos muestra un mensaje en el que se nos avisa que si volvemos
a decir adiós abandonaremos la aplicación, fijaros en el uso
del atributo ORDINAL para marcar el orden en el que se ejecutarán
los distintos tags:
<STEP NAME="PIN">>
<PROMPT>Enter your PIN number</PROMPT>
<INPUT TYPE="DIGITS" NAME="InsertDigit">
<GOODBYE ORDINAL="1" REPROMPT="N">Say goodbye
to exit or enter your PIN number</GOODBYE>
<GOODBYE ORDINAL="2" NEXT="#hangup">Operation
abort by the user. Nice day </GOODBYE> </STEP>
· CANCEL: Sirve para definir que debe suceder cuando
el usuario envia una petición de cancelación sobre el STEP
que actualmente se está procesando. Si no se define un CANCEL
para un determinado STEP se utiliza uno por defecto que finaliza
el PROMPT que actualmente se está leyendo y pasa a procesar
los distintos INPUT que haya definidos para el STEP en cuestión.
Para invocar a CANCEL el usuario solo debe de decir "Cancel"
o "I would like cancel" o frases similares. CANCEL lleva asociado
el atributo NEXT que indica el STEP que debe ejecutarse al
producirse el CANCEL.
· CASE y SWITCH: Estos dos tags se utilizan para controlar
el flujo de la aplicación en función de las variables internas
de VoxML. La sintaxis es muy similar que en otros lenguajes
de programación y queda reflejada en el siguiente ejemplo:
<SWITCH FIELD="Marca">
<CASE VALUE="Ford" NEXT="Ford">
<CASE VALUE="Daewoo" NEXT="Daewoo">
</SWITCH>
En función del valor que tome la variable Marca
el flujo del programa seguirá por el STEP Ford en caso de que
Marca="Ford" o por el STEP Daewoo en caso de que la Marca="Daewoo".
· CLASS: Sirve para definir conjuntos de elementos
que pueden ser reutilizados dentro del contexto de un mismo
DIALOG. La ventaja de las clases estriba en que pueden ser
heredadas por otros STEP y por otros CLASS que definamos posteriormente.
Para poder heredar los CLASS que hayamos definido disponemos
del atributo PARENT que dentro del STEP o de los CLASS sirven
para indicar el elemento del que heredan. Elementos típicos
que se heredan desde clases son los tag HELP, CANCEL etc.
A continuación tenemos un ejemplo:
<CLASS NAME="simple">
<HELP> Your choices are <OPTIONS/>
</HELP>
</CLASS>
<STEP NAME="Peliculas" PARENT="simple">
<PROMPT> Please choose a film.
</PROMPT>
<INPUT NAME="films" TYPE="OPTIONLIST">
<OPTION NEXT="#film1"> LA Confidential </OPTION>
<OPTION NEXT="#film2"> Independence Day
</OPTION>
</INPUT>
</STEP>
<STEP NAME="Libros" PARENT="simple">
<PROMPT> Please choose a book.
</PROMPT>
<INPUT NAME="books" TYPE="OPTIONLIST">
<OPTION NEXT="#book1"> IT
</OPTION>
<OPTION NEXT="#book2"> Wars and Peace
</OPTION>
</INPUT>
</STEP>
Si os fijais en el ejemplo anterior tenemos una
clase llamada "simple" que es la clase padre para los dos STEP
"Peliculas" y "Libros" ambos heredan el HELP de la clase simple
y en caso de que pidamos ayuda obtendremos el mensaje de"Your
choises are: ".
4.4.- UN EJEMPLO COMPLETO DE VOXML
En este momento tenemos todos los elementos necesarios
para elaborar una aplicación en VoxML completa, en este caso
vamos a hacer una aplicación que nos va a servir para informarnos
sobre los distintos modelos de coches de los que hay en un catalogo,
para ello vamos a movernos por las distintas secciones que componen
nuestro pequeño concesionario virtual y vamos a elegir aquel
coche que nos interese para ver sus características básicas.
Si recordáis decíamos antes que el primer paso
para elaborar una aplicación de voz es determinar la secuencia
de dialogo de la aplicación, en este caso podemos determinar
que es la siguiente:

Por simplificar no hemos incluido más que tres
marcas de coches y en cada marca solo dos modelos, si nos fijamos
la secuencia de ordenes que el sistema debe de ir interpretando
y devolviendo es muy sencilla: después del saludo inicial se
nos pregunta por el tipo de marca que queremos consultar para
una vez introducida nuestra selección volver a preguntar por
el modelo de la marca en cuestión. Al elegirlo el sistema nos
describirá las características de dicho modelo. En nuestro caso
el siguiente paso será volver a la pantalla de saludo o bien
abandonar la aplicación pero el ejemplo es lo suficientemente
abierto como para enlazarlo con otra tecnología (por ejemplo
ASP) y permitir comunicación con base de datos y poder elaborar
un sistema de compra de vehículos automatizado totalmente y
a través del móvil (aunque seguro que a todos nos gustara primero
ver el coche in situ).
Siguiendo con el desarrollo de la aplicación vamos
a explicar brevemente como deberíamos de preparar el ADK para
iniciar una aplicación en VoxML. Cuando vimos el ADK en el artículo
anterior comentamos que la estructura que debían de seguir nuestros
trabajos en WML se basaban en el concepto de proyecto, esta
política sigue siendo válida para VoxML, por lo que para hacer
uso de este ejemplo lo primero que debemos de hacer es crear
un nuevo proyecto, seleccionando su nombre y carpeta donde se
almacenará el código que elaboremos y seleccionar como tipo
de proyecto VoxML (ver figura), de esta manera el propio ADK
nos elaborará un esqueleto básico con el cual podemos comenzar
(ver figura)


La versión 1.1 no nos muestra resaltado los distintos
tags de los que consta VoxML (la versión 2.0 si lo hace) pero
podemos chequear la sintaxis del programa si nos vamos a la
opción de menú Tools/Check Sintax. Una vez que el programa este
terminado y libre de errores no olvideis poner el UIS en modo
VoxML ya que sino no podremos acceder a la aplicación, para
hacer esto lo único que hay que hacer es seleccionar VoxML dentro
de las Settings del UIS.
El código de la aplicación es el que tenéis a
continuación, fijaros en la utilización de los elementos que
describimos antes como están usados dentro del programa a fin
de que todo quede mucho más claro:
<?xml version="1.0"?>
<DIALOG>
<CLASS NAME="help_generic">
<HELP> Your possibles choices are
<OPTIONS/>. </HELP>
</CLASS>
<STEP NAME="init" PARENT="help_generic">
<PROMPT> Welcome to cars demo program.
Choose a car, or say Main Menu to return to the main menu. </PROMPT>
<INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#bmw"> bmw </OPTION>
<OPTION NEXT="#volvo"> volvo </OPTION>
<OPTION NEXT="#mercedes"> mercedes
</OPTION>
<OPTION NEXT="top.vml#top"> main
menu </OPTION>
</INPUT>
</STEP>
<STEP NAME="bmw" PARENT="help_generic">
<PROMPT> What is your favorite model
five serie or seven serie </PROMPT> <INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#five"> five serie
</OPTION>
<OPTION NEXT="#seven"> seven serie
</OPTION>
</INPUT>
</STEP>
<STEP NAME="five" PARENT="help_generic">
<PROMPT> This serie has tree models
520, 530 and 540. The price is over seven millions of pesetas
and drive one of this cars its a pleasure for the senses
<BREAK SIZE="LARGE"/> </PROMPT>
<INPUT TYPE="NONE" NEXT="#init"/>
</STEP>
<STEP NAME="seven" PARENT="help_generic">
<PROMPT> Seven serie it is the most
luxury BWM. This car is excellent for long travells. <BREAK
SIZE="LARGE"/>
</PROMPT>
<INPUT TYPE="NONE" NEXT="#init"/>
</STEP>
<STEP NAME="volvo" PARENT="help_generic">
<PROMPT> What is your favorite model
S serie or C serie </PROMPT> <INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#S"> S serie </OPTION>
<OPTION NEXT="#C"> C serie </OPTION>
</INPUT>
</STEP>
<STEP NAME="S" PARENT="help_generic">
<PROMPT> The most important model
in this serie is the S40 model. With near two meters of with
this car is one of the most security cars in its category.
<BREAK SIZE="LARGE"/> </PROMPT>
<INPUT TYPE="NONE" NEXT="#init"/>
</STEP>
<STEP NAME="C" PARENT="help_generic">
<PROMPT> The C serie has cars for
people that like velocity. The car more important is Volvo C70,
a coupe car with a monster in its engine.
<BREAK SIZE="LARGE"/>
</PROMPT>
<INPUT TYPE="NONE" NEXT="#init"/>
</STEP>
<STEP NAME="mercedes" PARENT="help_generic">
<PROMPT> What is your favorite model
S serie or C serie
</PROMPT>
<INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#SM"> S serie </OPTION>
<OPTION NEXT="#CM"> C serie </OPTION>
</INPUT>
</STEP>
<STEP NAME="SM" PARENT="help_generic">
<PROMPT> This is the best serie
from Mercedes, a good car in security, elegance, is a car for
special people.
<BREAK SIZE="LARGE"/>
</PROMPT>
<INPUT TYPE="NONE" NEXT="#init"/>
</STEP>
<STEP NAME="CM" PARENT="help_generic">
<PROMPT> The C serie is a great
car for all people likes drive a Mercedes. A good choice for
a new car. a coupe car with a monster in its engine.
<BREAK SIZE="LARGE"/>
</PROMPT>
<INPUT TYPE="NONE" NEXT="#init"/>
</STEP>
</DIALOG>
En el ADK la aplicación presenta un aspecto similar
al siguiente (figura):

Como podéis ver por las pantallas anteriores Merlin
en primer lugar nos da la bienvenida y nos indica que seleccionemos
el tipo de modelo del que queremos obtener información. Si pedimos
ayuda en cualquier momento se nos indicará en función del STEP
en el que nos encontremos las opciones que tenemos disponibles.
En el ADK tenéis en el UIS (User Interface Simulator) en la
parte inferior la posibilidad de seleccionar las diferentes
respuestas que podemos dar a Merlin si no queremos hacer uso
del micrófono.

5.- CONCLUSIONES
Poco a poco vamos analizando las tecnologías más
vanguardistas que dentro del mundo WAP van apareciendo y a las
que el desarrollador de aplicaciones móviles no puede dejar
indiferente, si en el artículo sobre ASP indicábamos la importancia
de las páginas interactivas y dinámicas como parte fundamental
para un desarrollo de calidad en este artículo hemos demostrado
que dicha afirmación es aun más cierta cuando nos ponemos a
desarrollar para un "elemento" tan flexible como es la voz humana,
el uso de esta tecnología no hace sino demostrarnos que el futuro
de Internet y de las aplicaciones informáticas en general que
ya estamos viviendo van a estar muy ligadas a los móviles. Como
siempre espero que este artículo os haya servido para introduciros
dentro de la tecnología de voz y finalizo como siempre recordando
que el trabajo duro comienza en el momento mismo en que acabáis
de leer estas líneas con vuestra investigación y vuestro esfuerzo
diario. Y nada más de momento, pronto volveremos al ataque con
otro interesante tema.
Santiago Marquez Solis
Envía el artículo a un amigo: