martes, 31 de julio de 2007

Vuelta de vacaciones

He estado dos semanas de vacaciones y ya he vuelto. Ahora toca retomar el asunto del avatar, concretamente intentar hacerlo hablar.

Para ello voy a utilizar librerías comerciales de Loquendo, disponibles para varias plataformas. El Dpto. de la Universidad me ha proporcionado la forma de descargar una versión de evaluación.

Por cierto, he mirado en el expediente la nota que me han puesto en la línea de investigación y ha sido un 9'5, así que muy bien :-)

lunes, 9 de julio de 2007

Documentación entregada

Finalmente no pude terminar la documentación para entregarla el viernes y la he acabado de escribir durante el fin de semana. Ya se la he mandado por mail a la profesora en PDF.

Después de dos semanas de documentación intensiva (entre esta Línea y la otra), ahora llega la calma.

martes, 3 de julio de 2007

Documentación de fin de curso

Iba a continuar mirando lo del Text to Speech, bien probando a recompilar la librería Flite o probando una versión de evaluación de Loquendo, pero estamos ya en julio y se aproxima la fecha de entrega de actas (el día 11). Tengo que ir ya redactando el informe de lo que he estado haciendo, y dejar esto de momento para seguir después, si procede.

La extensión en páginas es libre y también el formato, menos mal, porque las plantillas tipo artículo a dos columnas son muy feas. Ya tengo pensada la estructura, que será la típica: Introducción, estado del arte, elección de herramientas, proceso de desarrollo, trabajos similares, conclusiones y bibliografía.

A ver si lo tengo para el final de esta semana o como muy tarde para el lunes 9.

lunes, 18 de junio de 2007

Interrupción

Estos últimos días apenas he podido dedicar un par de horas a trabajar en la línea de investigación. Han operado a mi hermano pequeño de peritonitis y me he pasado todo este tiempo en el hospital con él.


El impulso final que le faltaba al trabajo tendrá que posponerse, o quedarse tal como está.

miércoles, 30 de mayo de 2007

A vueltas con SAPI

Me han recomendado que para hacer hablar al avatar prueba con SAPI, la librería de Microsoft para síntesis y reconocimiento de voz. Llevo varios días con ello y mis avances son pocos. Se hace dificil encontrar información sobre SAPI para PocketPC/Windows Mobile/Windows CE porque casi todo lo que encuentro se refiere a las plataformas de escritorio y de servidor.

Por otro lado, según lo que voy encontrando "parece" que los entornos de programación donde se usa son Visual Studio 2003 y Visual Studio .NET. Sobre el Embedded Visual C++ que venía utilizando hasta ahora no he encontrado nada.

Mucho me temo que hay un conflicto en ciernes: Si utilizo el eVC me funcionará la librería de OpenGL-ES pero no la SAPI. Si utilizo Visual Studio pasará lo contrario. Temo que tenga que volver a los problemas que ya tuve al principio de este trabajo.

Mientras tanto estoy descargando e instalando SDKs variados, a ver si acierto con el que necestio, porque hay tantos productos de Microsoft con nombres parecidos que ya no se cuál es cuál.

lunes, 21 de mayo de 2007

Intentado hablar

He buscado la forma de hacer hablar al avatar, y más en general a la PDA sobre la que estoy haciendo el desarrollo.

Por un lado, existen las librería SAPI de Microsoft, pero no tengo claro que me vayan a servir, ya que son "demasiado modernas" para el entorno que estoy usando.

He encontrado también Flite, que es una implementación ligera de un conocido programa de sintésis de voz llamado Festival. Hay disponible una versión precompilada para PocketPC y la he instalado en el mío para probarla. Es un ejecutable que al lanzarlo muestra una ventana donde se puede escribir un texto, y a continuación la PDA lo "habla" por el altavoz, hablando eso sí muy robóticamente y con la fonética del inglés norteamericano.

El programa puede ejecutarse pasándole como parámetros de la línea de comandos la frase que se desea decir. Podría hacer una prueba quick-and-dirty ejecutando desde el programa del avatar el Flite con las frases que quiero oir, aunque solo funcionará en una PDA "de verdad", porque para que funcionara en el emulador el programa tendría que estar compilado para x86 en lugar de para ARM

Algo tan aparentemente sencillo como ejecutar un programa (el Flite) desde otro programa (el del avatar) se ha convertido en una tarea imposible. En las ayudas del Embedded Visual C no he encontrado cómo hacerlo. Las funciones de C que se usan habitualmente para esa tarea, como exec(...), execve(...) o incluso popen(...) o system(...) no están disponibles en este entorno.

Lo malo es que no he encontrado ninguna forma de hacerlo, ninguna, ni bonita ni fea, y he estado toda una tarde con ese "detalle". De paso me he enterado que el emulador que viene con el Visual Studio 2005 sí que es un emulador real de ARM, y se le pueden instalar binarios que funcionarán, como (quizás) el Flite. Lástima que tuviera que abandonarlo porque no funcionaba la librería Vincent Mobile.

martes, 15 de mayo de 2007

Primera aproximación

He hecho una primera prueba para ver qué tal queda la animación. Disponía de varios ficheros del modelo con la boca en posiciones diferentes, y simplemente he programado que se carguen todos (son siete) y luego se muestren de forma aleatoria durante el tiempo suficiente para que no vaya ni muy deprisea ni muy lento.

Queda bastante bien. No se hace ningún cálculo, en lugar de eso se ocupa memoria aunque no demasiada: La estructura de datos tiene un tamaño de unos 160 kb, así que los siete más la imagen del programa (unos 75 kb) no llegan a 1 megabyte.

La primera prueba ha sido hacer mover solo la boca de la cabeza, pero quedaba muy frío. Después he introducido un pequeño movimiento de uno o dos grados hacia los lados y hacia arriba/abajo, para que al hablar produjera un movimiento como de "cabeceo". Quedaba menos rígido pero entonces a reaparecido el problema de los polígonos que no se pintan bien cuando hay mucha concentración en una zona, provocando un efecto muy feo.

Lo siguiente que probaré será el habla, y juntarlo con esta animación. Si consigo las dos cosas, me dedicaré a refinarlo y hacerlo más elegante.