UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS … · al ingresar a la sala de cine, el que le...
Transcript of UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS … · al ingresar a la sala de cine, el que le...
INTEGRACIÓN DE PERSONAS NO VIDENTES AL CINE A TRAVÉ S DE DISPOSITIVOS MÓVILES
MEMORIA PARA OPTAR AL TÍTULO DE INGENIERO CIVIL EN COMPUTACIÓN
GUSTAVO RAFAEL GARCÍA GÁRATE
PROFESOR GUÍA: JAIME HERNAN SANCHEZ ILABACA
MIEMBROS DE LA COMISIÓN: ALEJANDRO HEVIA ANGULO
NELSON ANTRANIG BALOIAN TATARYAN
SANTIAGO DE CHILE 2007
UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN
2
RESUMEN
El cine es una expresión cultural orientada generalmente a entretener a un
público vidente, capaz de disfrutar la recepción de estímulos tanto visibles como
audibles. Por esto, es poco frecuente ver a una persona ciega en una sala de cine.
Si bien es cierto, se ha trabajado constantemente en la adaptación de películas
de cine para gente no vidente en todo el mundo, pero las soluciones alcanzadas
entregan una nueva versión de una película, distinta a la original, con la inclusión de
relatos complementarios (en algunos casos), apta para un público con discapacidad
visual, pero poco grata para personas videntes, formando así cintas exclusivas para
ciegos.
El objetivo de este trabajo es realizar un sistema que rompa esta
segmentación, integrando a personas no videntes a una sala de cine y poder así,
compartir de un filme simultáneamente con gente dotada de visión, reforzando la falta
de estímulos visibles con relatos descriptivos de manera individual.
Para lograr esto, se facilitará un dispositivo móvil a cada espectador no vidente
al ingresar a la sala de cine, el que le describirá, por medio de un audífono, las
escenas gráficas de una película (situaciones, gestos, locaciones, personajes
involucrados en las escenas, etc), dándole la flexibilidad de decidir cuanto apoyo
desee recibir, dependiendo de la capacidad de concentración e imaginación que tenga
el usuario.
La descripción de las escenas gráficas estará contenida en un archivo
denominado “guión descriptivo”, el cual presenta un formato específico y está
almacenado en un portal web, donde se permite aportar con la creación de nuevos
guiones descriptivos a cualquier persona.
3
TABLA DE CONTENIDOS 1 INTRODUCCIÓN ....................................................................................... 7 2 MARCO TEÓRICO..................................................................................... 9
2.1 Trabajos anteriores.......................................................................... 9 2.2 El Cine y la discapacidad visual .................................................... 12 2.3 Sintetizadores de Voz.................................................................... 14
3 MOTIVACIÓN........................................................................................... 15 4 JUSTIFICACIÓN ...................................................................................... 16
4.1 Sincronización ............................................................................... 16 4.2 Formato del guión.......................................................................... 16 4.3 Origen del archivo ......................................................................... 17 4.4 Dependencia del archivo ............................................................... 17 4.5 Graduación de la pista de audio descripción ................................. 17
5 OBJETIVOS ............................................................................................. 19
5.1 Objetivo General............................................................................ 19 5.2 Objetivos Específicos .................................................................... 19
6 METODOLOGÍA....................................................................................... 20
6.1 Estudio de Factibilidad .................................................................. 20 6.1.1 Factibilidad de usuarios.................................................... 20 6.1.2 Factibilidad de recursos ................................................... 21
6.2 Hello World .................................................................................... 21 6.3 Estudio del dispositivo a utilizar..................................................... 22 6.4 Diseño del sistema ........................................................................ 22 6.5 Estudio de Sincronización ............................................................. 23 6.6 Análisis de velocidad de conexión................................................. 23 6.7 Análisis y toma de requisitos ......................................................... 24 6.8 Implementación de la aplicación.................................................... 24 6.9 Desarrollo del Portal web del sistema ........................................... 24 6.10 Pruebas con usuarios finales y correcciones:................................ 24
7 TRABAJO REALIZADO ........................................................................... 26
7.1 Diseño ........................................................................................... 26 7.1.1 Descripción general ......................................................... 27 7.1.2 IntegraFilm Web............................................................... 28 7.1.3 IntegraFilm Server............................................................ 39 7.1.4 IntegraFilm Client ............................................................. 43
7.2 Implementación ............................................................................. 49 7.2.1 IntegraFilm Client ............................................................. 51 7.2.2 IntegraFilm Server............................................................ 65 7.2.3 IntegraFilm Web............................................................... 74
7.3 Pruebas de usuario ....................................................................... 77
4
8 INSTALACIÓN Y EJECUCIÓN DE INTEGRAFILM ................................. 83 8.1 Requisitos técnicos........................................................................ 83 8.2 Instalación de IntegraFilm.............................................................. 83 8.3 Ejecución de IntegraFilm ............................................................... 84
9 DISCUSIONES GENERALES.................................................................. 85
9.1 Diseño de Interfaz IntegraFilm Client ............................................ 85 9.2 Diseño lógico del sistema.............................................................. 87 9.3 Protocolo de comunicación Cliente-Servidor ................................. 88
10 CONCLUSIONES..................................................................................... 90
10.1 Posibles mejoras futuras ............................................................... 91 10.1.1 Optimización de uso de red.............................................. 91 10.1.2 Creación de guiones ........................................................ 92 10.1.3 Comunidad de guionistas................................................. 92 10.1.4 Multi Salas........................................................................ 92 10.1.5 Indicador de locaciones.................................................... 93
11 REFERENCIAS........................................................................................ 95 12 ANEXOS .................................................................................................. 97
12.1 Encuesta realizada en pruebas de usuario.................................... 97 12.2 Ejemplo de Guión descriptivo ........................................................ 99
5
ÍNDICE DE ILUSTRACIONES
Ilustración 1: Resumen de arquitectura e interacción de IntegraFilm............... 26 Ilustración 2: IntegraFilm Web. Casos de uso.................................................. 29 Ilustración 3: IntegraFilm Web. Página de inicio [visita] ................................... 31 Ilustración 4: IntegraFilm Web. Catálogo de guiones [visita] ............................ 32 Ilustración 5: IntegraFilm Web. Aportes [visita] ................................................ 34 Ilustración 6: IntegraFilm Web. Visualización del guión procesado [visita]....... 35 Ilustración 7: IntegraFilm Web. Contacto [visita] ............................................. 36 Ilustración 8: IntegraFilm Web. Catálogo de guiones [administrador] .............. 37 Ilustración 9: IntegraFilm Web. Edición de un guión [administrador]................ 38 Ilustración 10: IntegraFilm Web. Noticias [administrador] ................................ 39 Ilustración 11: IntegraFilm Server. Casos de uso............................................. 40 Ilustración 12: IntegraFilm Server..................................................................... 41 Ilustración 13: IntegraFilm Server. Durante la ejecución .................................. 43 Ilustración 14: IntegraFilm Client. Casos de uso .............................................. 43 Ilustración 15: IntegraFilm Client. Interfaz ........................................................ 46 Ilustración 16: IntegraFilm Client. Confirmación de cierre de aplicación .......... 47 Ilustración 17: Formato SRT............................................................................. 54 Ilustración 18: Formato de guión de IntegraFilm .............................................. 54 Ilustración 19: IntegraFilm Client. Clase Script.cs, lista enlazada. ................... 56 Ilustración 20: IntegraFilm. Multicast para publicar IP del Servidor .................. 59 Ilustración 21: IntegraFilm Client. Vista de Procesos ....................................... 61 Ilustración 22: Estudio de sincronización de aplicación con reproductor DV-CAM ................................................................................................................. 66 Ilustración 23: Catálogo de películas................................................................ 68 Ilustración 24: IntegraFilm Server. Vista de Procesos...................................... 69 Ilustración 25: Pruebas de usuario del sistema IntegraFilm en sala de Micro Cine de la Cineteca Nacional del Centro Cultural Palacio La Moneda............. 79 Ilustración 26: Pruebas de usuario del sistema IntegraFilm en el Auditorio del Departamento de Ciencias de la Computación de la Universidad de Chile ..... 79 Ilustración 27: Pruebas de usuario del sistema IntegraFilm en el Auditorio del Departamento de Ciencias de la Computación de la Universidad de Chile ..... 80 Ilustración 28: IntegraFilm Client: Prototipo de interfaz 1 ................................. 85 Ilustración 29: IntegraFIlm Client. Prototipo de interfaz 2................................. 86
6
7
1 INTRODUCCIÓN
Por interés personal se decidió trabajar en un proyecto que a través del uso de
tecnología pueda colaborar con la integración de personas con discapacidad en la
sociedad, específicamente con la inserción social de personas no videntes.
Actualmente, el Centro de Computación y Comunicación para la Construcción del
Conocimiento del Departamento de Ciencias de la Computación la Universidad de
Chile, (en adelante, C5) se encuentra desarrollando un proyecto de gran envergadura
(MUVIS, Mundos Virtuales para la Inclusión Social), orientado a integrar a personas no
videntes en distintos ámbitos de la vida real, tales como el barrio, colegios, museos,
etc.
Teniendo en consideración lo anterior, se decidió acoger esta integración que
proponen los investigadores de C5 e intentar dar mayores facilidades, a través del uso
de tecnología, para que personas no videntes puedan disfrutar de otro espacio público:
el cine.
Sobre este tema ya existe en el mercado una técnica denominada “AUDESC”, o
“Audio descripción” que según una de las principales empresas españolas en el rubro,
Aristía, se define como “un servicio de apoyo a la comunicación que consiste en el
conjunto de técnicas y habilidades aplicadas con objeto de compensar la carencia de
captación de la parte visual contenida en cualquier tipo de mensaje, suministrando una
adecuada información sonora que la traduce o explica” [2].
Hay distintas formas de utilizar esta técnica, pero la más común es, en la
actualidad, agregar a la cinta original una pista de audio adicional, con la audio
descripción (en adelante “guión”), que contiene la información complementaria de
escenas gráficas relevantes para ayudar a comprender mejor la cinta en reproducción.
La cinta resultante (con el guión incluido) se proyecta finalmente en la sala de cine,
permitiendo así entender mayormente la cinta a los asistentes no videntes.
La desventaja que presenta este método es que no aporta a la integración de
asistentes no videntes al cine, pues se proyectan cintas especiales, que resultarían
poco atractivas para un público vidente.
8
Este trabajo de título apunta justamente a la integración, a permitir que un
asistente no vidente pueda disfrutar de una proyección simultáneamente con uno
vidente en una sala de cine.
9
2 MARCO TEÓRICO
2.1 Trabajos anteriores
Se han elaborado variados estudios sobre el diseño de aplicaciones para ciegos,
específicamente utilizando dispositivos móviles. En ellos destaca la publicación
llamada “Evaluating the Interaction of Blind Learners with Audio-Based Virtual
Environments”, de J.Sánchez & M. Zúñiga (2006) [2].
En este trabajo se intenta crear una manera eficiente para integrar estas
herramientas en la comunidad con discapacidad visual para así poder mejorar su
educación e integración en la sociedad. Se realizan estudios para analizar la
capacidad de representar mentalmente un ambiente virtual (un laberinto), y poder
recordar caminos y rutas.
En la actualidad existe una línea creciente de investigación de software
educacional para usuarios con discapacidad visual usando el audio como canal
sensorial principal en la construcción de conocimiento y comprensión del medio [9].
Estas investigaciones [3], [7], [8], [9], [11] han mostrado que interfaces basadas en
audio pueden ser usadas para apoyar a usuarios no videntes en aprendizaje y
cognición, ayudando así al desarrollo de habilidades cognitivas y aprendizaje de
contenidos específicos a través de ambientes virtuales representados con sonido.
Sin embargo, existen dos principales problemas en el estudio de interacción de
usuarios no videntes con ambientes virtuales basados en sonido: La obtención de
información valiosa sobre la interacción usuario-software y saber si un ambiente
virtual, a pesar de su nivel de complejidad y su tiempo de interacción puede ser
representado por usuarios con discapacidad visual.
Para investigar sobre el segundo problema, los autores diseñaron un software
capaz de procesar información generada por la interacción usuario/ambiente virtual y
entrega herramientas para el análisis, llamado AudioGram.
El uso de esta aplicación (y otras más: AudioDoom II) ha permitido estudiar y
observar con mejor precisión la capacidad para representar mentalmente diferentes
estructuras virtuales. Finalmente, se señala que se debe crear planes de trabajo para
10
un ambiente que permita a los usuarios con discapacidad visual mejorar su capacidad
de percepción de audio (memoria auditiva, fidelidad y discriminación de sonidos) y
comprender problemas geométricos como “la distancia más corta” y “simetría”.
Como conclusión de esta publicación se tienen puntos muy importantes que se
consideraron en el desarrollo del trabajo de título:
• Los usuarios con discapacidad visual ocupan estrategias para representar
ambientes virtuales. La principal es memorizar la secuencia de cambios de
dirección y comparar distancias relativas entre puntos de referencias. Esta
estrategia es muy similar a la estrategia que usan en la vida real para realizar
sus viajes.
• Existe una directa relación entre la capacidad de memoria auditiva y la
representación de rutas.
Otra investigación que sirvió de apoyo para este trabajo fue “Cuentos interactivos
móviles a través de audio para aprendices con discapacidad visual”, de Jaime
Sánchez e Iván Galaz (2005) [10]. En esta se hace mención a las dificultades que
presentan los niños con discapacidad visual para el desarrollo de habilidades
cognitivas, como la comunicación, la investigación y el pensamiento abstracto.
Para ayudar a solucionar estas dificultades, los investigadores proporcionan una
vía simple para los niños con discapacidad visual que les permita desarrollar dichas
habilidades a través de la creación de una interfaz de audio mediante un dispositivo
PDA, basado en tecnología Text-To-Speech (herramienta capaz de leer un texto
dado).
La descripción de este software fue de especial interés para este trabajo, pues se
utiliza la tecnología Text-To-Speech de una manera similar a la que se deseaba utilizar
en el trabajo de título. Se puso especial interés en el diseño de software de la
aplicación creada por los investigadores (AudioCuentaCuentos). Se implementó un
feedback auditivo para todas las funciones del proyecto, similar al descrito en
AudioCuentaCuentos, para utilizar el software.
El software mostrado en la aplicación presenta un diseño que utiliza como
metáfora una biblioteca, en la que el lector debe elegir el libro deseado, luego el
capítulo que desea leer y más tarde comienza la lectura.
11
De manera análoga el software diseñado en este proyecto utilizó como metáfora
una sala de cine, en la que el usuario proyector deberá elegir la película que desea
proyectar. Luego el espectador deberá decidir el nivel de ayuda de audio descripción
que desee y más tarde proceder a ver la película.
Una facilidad de la navegación, es que se sabe a priori qué película desea ver el
usuario (según se mostrará en la sección de Diseño), por lo que éste sólo debería
seleccionar el nivel de ayuda que desee.
Sobre el feedback y diseño de la aplicación, se implementó de manera muy similar
a la mostrada en la aplicación: se consideraron usuarios con discapacidad visual nula
y baja, además de posibles tutores (con capacidad visual).
En la publicación se explica el método utilizado para testear la aplicación: Se
utilizó una muestra de 7 niños de la Escuela Hogar de Ciegos Santa Lucía, con baja
visión y ceguera total, y dos educadoras diferenciales especializadas en trastornos de
la visión.
El procedimiento para realizar el testeo fue el siguiente:
• Introducción al software, de manera verbal y física. Se muestra la ubicación de
los botones.
• Interacción con el software por parte del usuario, dando la posibilidad de
realizar preguntas a las educadoras diferenciales.
• Registro de datos importantes de la interacción
• Aplicación de pauta preliminar, donde se hace un pequeño cuestionario a los
usuarios
• Se registra la sesión fotográficamente
• Redacción de informe por parte de las educadoras diferenciales
• Rediseño y desarrollo por parte del ingeniero
Para realizar las pruebas de usuario en este trabajo se utilizó un método de testeo
similar al descrito en esta publicación. Pudiendo realizarlo reiteradamente hasta llegar
a un diseño de interfaz y navegación óptimo. Se incluye en los anexos la pauta
realizada.
12
Una última investigación utilizada como base para idear este proyecto fue
“Assisting the mobilization through subway networks by users with visual disabilities”
[12], donde se explica el desarrollo del sistema “AudioMetro”.
En esta publicación se menciona que la gente con discapacidad visual debe
usar técnicas de orientación y movilización, junto con las relaciones espaciales de los
objetos con ellos mismos, para aprender a identificar el medio ambiente en el que se
encuentra. Este hecho fue un soporte teórico importante al desarrollo de este proyecto,
pues lo que se pretendía, entre otras cosas, era lograr el entendimiento del medio
ambiente en el que ocurren las escenas de una película, utilizando la técnica de
descripción oral de escenarios.
2.2 El Cine y la discapacidad visual
En el ámbito de la integración de personas con discapacidad visual al cine, existen
tres métodos explorados: AUDESC (explicado en el capítulo anterior), AUDESC con
interrupciones, y el Cine hecho derechamente para personas con discapacidad visual.
AUDESC con interrupciones es una manera muy simple de entregar mejor
información a los asistentes no videntes: Se proyecta una cinta cualquiera, y cada
cierto tiempo (20 minutos, por ejemplo), se interrumpe la proyección y toma el
micrófono una persona encargada de explicar en detalle lo que ha sucedido, y prepara
al espectador con lo que sucederá próximamente en la cinta.
El Cine hecho para un público no vidente consiste en la explotación de un recurso
llamado “sonido incidente” en la película. Este recurso consiste en incluir un sonido
muy estudiado que sea capaz de expresar sentimientos, escenas y situaciones de
manera casi perfecta, evitando la entrega de información importante de manera visual.
Si bien hay películas que sin ser de este tipo, calzan muy bien con estas
características, como es el caso de la película francesa “Amelie” y la nacional “Taxi
para tres”, ambas destacadas por personas no videntes.
Las técnicas mencionadas anteriormente no apuntan a integrar a discapacitados
visuales a la sociedad, pues las funciones resultan tediosas para gente dotada de
visión.
13
En respuesta a esto, surgió una nueva forma de utilizar “AUDESC” (“AUDESC”
personalizado en adelante), entregándole un receptor auricular a cada discapacitado y
relatando, desde una cabina especial el guión descriptivo.
En Chile se han realizado funciones ocasionales utilizando esta técnica,
proyectando películas, como “Amelie” y “Lecciones de Piano”, realizados por la
Fundación Telefónica en Agosto y Octubre del año 2005 respectivamente [6].
La difusión de esta función especial fue amplia, tuvo una gran asistencia,
obteniendo muy buenos comentarios por parte de los asistentes no videntes, que esta
vez pudieron disfrutar de la función en compañía de amigos y familiares videntes. Sin
embargo no ha tenido mayor repercusión en el mercado nacional.
Una justificación de la poca recurrencia de estos eventos es lo engorroso y costoso
que resulta realizarlos, pues, para dar una función utilizando “AUDESC”, se necesita,
ante todo, preparar el guión de audio descripción. Luego,
• Si se desea utilizar la inclusión de pista de audio a la cinta:
o Grabar, mezclar y masterizar la pista, en un estudio de grabación
o Mezclar la pista de audio con la cinta original, en un estudio de video
• Si se desea utilizar “AUDESC” con interrupción:
o Un relator profesional que estudie el guión
• Si se desea utilizar “AUDESC” personalizado:
o Un relator profesional que estudie el guión a profundidad, pues el relato
es en vivo
o Instalar cabina de relato, con su sistema de transmisión de audio
o Distribuir dispositivos receptores a los asistentes no videntes
Es por esto que se considera fundamental para potenciar este tipo de funciones
la simplificación del proceso, independiente del costo inicial, se desea que el costo
marginal de incluir una nueva cinta al repertorio de películas aptas para personas no
videntes sea mínimo.
Una alternativa potente para realizar esto, es utilizar un sintetizador Text-To-
Speech, de manera de reemplazar todo el proceso de grabación, mezcla y
masterización del guión descriptivo, mezcla de video, y estudio del guión por un relator
profesional, por la lectura de un sintetizador del guión mismo.
14
2.3 Sintetizadores de Voz
En el mercado mundial existe gran oferta de sintetizadores de voz (Text-To-
Speech), de distintas calidades y, por consiguiente, distintos precios. El más conocido
es el llamado “Jaws”, de distribución gratuita, pero de baja calidad.
C5, hace un par de años, realizó un estudio de mercado para determinar cuál
era el mejor, en cuanto a calidad de sintetizador e interfaz para la programación de
aplicaciones (API). Se obtuvo como resultado el sintetizador de “Acapela Groups”, por
consiguiente compraron la licencia de desarrollo de este.
Realizando un estudio para este proyecto, se descubrió el sintetizador de
“Loquendo”, que sorprende por su calidad, pero debido a su alto costo (€1.500 la
licencia de desarrollo), se decidió ocupar “Acapela”.
15
3 MOTIVACIÓN
La principal atracción que ofrece el cine es la alta calidad en la proyección de sus
películas. Si bien la recepción de video por un no vidente es difícil de lograr, aunque se
estudia en la actualidad distintas formas para lograrlo gracias a los avances
tecnológicos, la recepción del audio puede superar a aquella de una persona dotada
de todos sus sentidos.
Desde los años setenta que se ha planteado, principalmente en España, la
manera de ayudar a comprender de mejor manera una cinta audiovisual a las
personas con discapacidad visual. Lo que se ha logrado hasta ahora es la llamada
audio descripción (o AUDESC), que consiste en una pista de audio que describe
escenas gráficas con carencia de guión.
Esta técnica ha demostrado tener muy buenos resultados en cuanto al mejor
entendimiento del material por parte del público no vidente, pero presenta un gran
problema: las películas adaptadas al sistema de audio descripción se realizan con
posterioridad a la proyección de las mismas. Es decir, las personas no videntes no
disponen del producto al mismo tiempo que el colectivo de los videntes, sino que
deben esperar un tiempo hasta que el equipo de profesionales lleve a cabo la
adaptación (explicada en el capitulo anterior). Sumado a esto está el problema de
integración, el cual ya se ha comentado previamente.
Por este motivo, la solución propuesta por este trabajo de título debe poseer al
menos dos características principales: dar la facilidad para que la versión de una cinta
para ciegos esté rápidamente disponible, y ser una herramienta tecnológica de apoyo
que efectivamente integre al público no vidente con el capacitado visual.
16
4 JUSTIFICACIÓN
Al pensar un poco más a fondo la idea de este trabajo de título y después de
haber entrevistado a personas con discapacidad visual en un estudio previo, surgen
varios nuevos aspectos que aumentan la exigencia técnica del proyecto, como por
ejemplo:
4.1 Sincronización
Una de las primeras dificultades técnicas que se presenta es la sincronización de
la pista de audio descripción del dispositivo móvil con la proyección de la cinta.
Para esta sincronización se estudia la vía de comunicación (inalámbrica) entre el
equipo de proyección de la cinta y el dispositivo móvil. Aunque se sabe de una norma
de DOLBY de emisión de sonidos especiales al comienzo de la cinta para una posible
sincronización con aparatos externos a la cinta, se optó por una sincronización manual
entre un computador que actúa como servidor y los dispositivos móviles, como se
explicará en el desarrollo de este informe.
4.2 Formato del guión
Una ventaja significativa que se considera con respecto a la ya conocida técnica
de las empresas que desarrollan audio descripción en la actualidad, es que la pista de
descripción sea un texto, interpretado online por un motor de Text-To-Speech. El
archivo tendría un formato muy similar al formato que tienen los archivos de subtítulos
de series y películas que hoy se pueden bajar desde Internet.
La ventaja de esto último es que resultaría mucho menos engorroso crear la
pista, pues no se requiere de un estudio de grabación ni de masterización, ni de un
locutor profesional. A la vez, el tamaño del archivo resultante sería notoriamente
menor en formato de texto que en formato de audio.
17
4.3 Origen del archivo
Se considera crear una comunidad a nivel internacional en la web, en donde
todos puedan elaborar sus propios guiones y subirlos a la red, autorizando la descarga
(gratuita) de estos para cualquier interesado.
4.4 Dependencia del archivo
Sobre el mismo tema, existe otro dilema aún sin respuesta. ¿Deberá cada
usuario adquirir el guión de audio descripción antes de asistir a la función? ¿O este
guión será trasmitido también desde la cabina de proyección de la cinta?
4.5 Graduación de la pista de audio descripción
El archivo del guión está dividido en parlamentos (se usan caracteres especiales
para la división), y cada parlamento tiene dos atributos: texto y tiempo en el cual se
debe ejecutar dicho texto. Este último atributo le da el orden al archivo.
Como resultado de reuniones con personas con discapacidad visual, se
concluyó que hay distintos tipos de usuarios finales. Hay quienes prefieren usar más
su imaginación, y no les agrada mucho la idea que les expliquen todo, y otros usuarios
que necesitan mayor explicación para comprender la cinta.
Se decidió entonces incluir un nuevo atributo a cada parlamento en el archivo del
guión: nivel de importancia para la comprensión global de la cinta.
El nivel de cada parlamento será un número asignado por el autor del guión,
inicialmente de 1 a 3. Así, un parlamento que tenga un nivel 1, tendrá mayor
importancia que un parlamento con nivel 3. Como se verá en el desarrollo del
proyecto, estos niveles fueron reducidos a dos.
Con esto se podrá configurar la aplicación en el dispositivo móvil, indicando qué
nivel de detalle de audio descripción desea recibir el usuario (del 1 al 3). Esto filtrará
los parlamentos y reproducirá sólo aquellos que presenten un nivel menor o igual al
indicado.
18
Tomando todos los puntos anteriores, se considera este proyecto para el trabajo
de título porque intenta resolver un problema aún no resuelto: que una cinta pueda
ser disfrutada simultáneamente por una persona vide nte y una no vidente, a
través de dispositivos móviles, dándole dinamismo a l guión y mientras la
película este siendo estrenada.
19
5 OBJETIVOS
5.1 Objetivo General
Desarrollar una aplicación para dispositivos móviles que lea en tiempo real un
guión de audio descripción durante la proyección de una cinta en el cine, permitiendo
de esta manera una mejor comprensión personal de la cinta, contribuyendo a la
integración de personas con discapacidad visual a la sociedad.
5.2 Objetivos Específicos
Los objetivos específicos de este trabajo son:
• Reproducir on-line un guión de audio descripción que está en formato de texto
por medio de un motor de Text-to-Speech en un dispositivo móvil. Esta
reproducción se escucharía a través de un único audífono.
• Seleccionar el nivel de información que se desea recibir.
• Lograr una sincronización del dispositivo móvil con la cinta en cualquier
momento (Por si se llega atrasado).
• Desarrollar un portal en donde se puedan subir y descargar guiones de forma
gratuita.
20
6 METODOLOGÍA
Para poder llevar a cabo el proyecto, en especial en las etapas de diseño e
implementación, se utilizaron conceptos de metodología ágil de ingeniería de software
(Rapid prototyping). Esto, debido a que se deseaba desarrollar el proyecto por
módulos, testeando de inmediato con los usuarios finales y poder ir mejorando la
aplicación mientras se desarrollaba y no correr el riesgo de testear al final la aplicación
y que no sea aprobada por los usuarios finales.
Los aspectos a considerar para el desarrollo del sistema, son los siguientes:
6.1 Estudio de Factibilidad
6.1.1 Factibilidad de usuarios
Se realizó un estudio de factibilidad antes de comenzar el desarrollo para
determinar si la funcionalidad ofrecida en el proyecto tiene una aplicación efectiva y
atractiva para la comunidad no vidente. Es sabido que la técnica de audio descripción
funciona, pero fue necesario investigar si la modalidad en la que se pretende usar en
la solución planteada daría resultados.
El estudio se realizó con un grupo de 8 personas no videntes en la Biblioteca
Central para Ciegos y en la Escuela Hogar de Ciegos Santa Lucía, de distintas
edades, desde 9 hasta 55 años.
La entrevista no fue mayormente estructurada, se prefirió un diálogo abierto. Se
preguntó si habían asistido al cine alguna vez y si habían asistido a las muestras de
cine con audio descripción (Amelie y Harry Potter) realizadas en el salón de eventos
de Telefónica y la Facultad de Economía de la Universidad de Chile.
Las opiniones fueron variadas, algunos entrevistados se mostraban muy
ilusionados con la técnica de audio descripción, mostrando su aprobación total al
proyecto, y otros no tanto.
21
Se logró identificar al grupo de los interesados y los desinteresados
rápidamente: Los de menor interés son personas ciegas congénitas. Esto tiene una
explicación muy simple, pues nunca han recibido estímulos visuales, por lo que no los
extrañan y prefieren utilizar sólo su imaginación para comprender la cinta. Con esto, ya
está identificado el usuario final: personas que han visto alguna vez, que es el mayor
porcentaje de las personas no videntes.
Otra conclusión importante de este estudio piloto es que no todos los usuarios
necesitan el mismo detalle de descripción. Por esta razón se incluirá en el guión de
audio descripción un atributo especial a cada parlamento, indicando el nivel de
importancia de éste. Esto dará la posibilidad de filtrar el nivel de descripción que se
desea recibir.
6.1.2 Factibilidad de recursos
Los recursos técnicos básicos requeridos para el desarrollo del proyecto
estaban disponibles en C5. Entre estos se encuentran 40 Pocket PC, dos profesoras
diferenciales disponibles para colaborar con las pruebas de usuario, y profesionales
capacitados involucrados con el desarrollo de proyectos para personas con
discapacidad visual dispuestos a ayudar si fuese necesario. Junto con esto, se tiene
todo un background de investigación sobre el desarrollo de software para ciegos.
Por otra parte, era de vital importancia contar con el espacio de reproducción de
cintas de cine adecuado. Para esto, se contó con la ayuda de la “Cineteca Nacional
del Centro Cultural Palacio la Moneda”, donde se llevaron a cabo diferentes pruebas
del software.
6.2 Hello World
Una de las primeras decisiones que se tomó fue la elección del lenguaje de
programación. No fue tan difícil tomar esta decisión, pues se consideró que en C5
utilizan mayoritariamente C#. Además, este lenguaje posee varias ventajas, siendo la
principal que pertenece a .NET Compact Framework, por lo que se podría acoplar a
22
otros programas realizados con otros lenguajes (pertenecientes también al
Framework) fácilmente.
Se realizó un primer programa y resultó ser un lenguaje muy amigable y cercano
al ya conocido JAVA.
Con esto, se decidió oficialmente que el lenguaje de programación sería C#.
6.3 Estudio del dispositivo a utilizar
Se utilizaró un dispositivo Pocket PC, por tres motivos:
1. En C5 las personas no videntes ya utilizan Pocket PCs, por lo que están
familiarizados con estos dispositivos.
2. Presenta una interfaz física más cómoda para personas no videntes (presenta
bordes alrededor de la pantalla, lo que delimita la zona de interacción)
3. C5 cuenta con Pocket PCs para desarrollo.
Fue necesario adentrarse al funcionamiento de una Pocket PC, aprender el
modelo mental que poseen, ver otros programas desarrollados para estos dispositivos
y examinar así el comportamiento.
Las Pocket PC de C5 tienen también WIFI, lo que ayudó en el desarrollo del
software que se detallará más adelante.
6.4 Diseño del sistema
Una vez realizado todo lo anterior, se comenzó a trabajar en el desarrollo mismo
del proyecto, partiendo por el diseño (arquitectónico, gráfico y lógico).
Para abordar el diseño del sistema, se incluye más adelante un capítulo
dedicado a él.
23
6.5 Estudio de Sincronización
Uno de los aspectos que presentó gran dificultad en el sistema fue lograr que un
mensaje perteneciente al guión descriptivo, que hace alusión a una escena en un
momento específico, sea reproducido exactamente en ese momento, y no después ni
antes.
Esto se puede lograr de varias formas (que serán discutidas más adelante), pero
todas ellas tienen un factor en común: determinar cuando comienza a reproducirse la
cinta, es decir, capturar el inicio.
El desarrollo de este tema será abordado también más adelante, en el capítulo
de “Trabajo realizado”.
6.6 Análisis de velocidad de conexión
Hoy en día la velocidad de conexión no es una limitante para sistemas como
este, ya que se enviarán solo algunas cadenas de caracteres de un largo prudente.
Como se verá en el capítulo de diseño, la idea es enviar al dispositivo móvil el
guión descriptivo al comienzo de la sesión, de un tamaño máximo aproximado de
40kb, posteriormente se enviarán instrucciones cortas, de no mas de 10 caracteres
(10bytes).
Es por esto que el sistema no presenta restricciones sobre la cantidad de
usuarios que pueda tener por riesgo a colapsar el ancho de banda. La única limitante
que tiene el sistema es que cada usuario con su Pocket PC deberá estar conectado en
una red, por lo que debe tener una dirección IP propia, y esto, dependiendo del router
que se posea, puede permitir, en el peor caso, a 252 equipos conectados (clase C).
24
6.7 Análisis y toma de requisitos
Se tomaron requerimientos antes y durante el desarrollo del sistema, para poder
tener un feedback continuo con usuarios finales. De esta manera se alineó el
desarrollo del software con los objetivos del mismo, adaptando el diseño con los
nuevos requisitos que se incorporaron por nuevos usuarios.
6.8 Implementación de la aplicación
Se implementaron las interfaces realizadas, ocupando los estudios previos.
El detalle de la implementación se encuentra en el capítulo de “Trabajo realizado”.
6.9 Desarrollo del Portal web del sistema
Se desarrolló un portal simple donde cualquier persona puede subir sus guiones
de audio descripción, creando así una comunidad de guionistas.
El portal será básicamente un repositorio de guiones, tendrá dos tipos de roles:
administrador y visita. El usuario visita podrá aportar al repositorio un guión de su
propia autoría o de un tercero. Este guión deberá ser aprobado por el administrador
del portal, quien debe verificar que se trate efectivamente de un guión. Una vez
aprobado el guión, este se encontrará disponible para todos los usuarios, quienes no
necesitarán registrarse para descargarlos.
El detalle de este portal web también está incluido en los capítulos de diseño e
implementación.
6.10 Pruebas con usuarios finales y correcciones:
Al terminar cada módulo, se realizaron pruebas de aceptación con usuarios
finales, y se corrigieron las falencias detectadas antes de pasar a la siguiente iteración.
25
Dentro del capítulo de “Trabajo realizado” se incluye la experiencia obtenida de las
pruebas de usuario.
26
7 TRABAJO REALIZADO
El sistema desarrollado fue bautizado como IntegraFilm y consta de tres
aplicaciones que interactúan entre sí para cumplir el objetivo de este trabajo:
IntegraFilm Web (repositorio de guiones), IntegraFilm Server , que es la aplicación
principal que proporcione la información necesaria a las Pocket PC’s, e IntegraFilm
Client , que es la aplicación que se estará ejecutando en cada Pocket PC.
En la ilustración 1 se muestra la interacción de las aplicaciones mencionadas
anteriormente:
Ilustración 1: Resumen de arquitectura e interacció n de IntegraFilm
A continuación se detalla su Diseño, Implementación y Pruebas de Usuario.
7.1 Diseño
En general, la arquitectura utilizada corresponde al modelo Cliente-Servidor,
donde se tiene en un servidor único ejecutando la aplicación IntegraFilm Server y en
varios clientes (Pocket PCs) la aplicación IntegraFilm Client.
27
7.1.1 Descripción general
Para iniciar el proceso, se debe ejecutar IntegraFilm Server en un computador
(en adelante, servidor) en la caseta de reproducción de la sala de cine.
Automáticamente éste interactuará con IntegraFilm Web (en adelante, portal) y
obtendrá el catálogo de guiones disponibles en el repositorio. A su vez se debe
ejecutar IntegraFilm Client en cada Pocket PC (en adelante, cliente). Al ejecutarse esta
aplicación, el dispositivo móvil se conectará al servidor y le avisará que se encuentra
conectado. Esta operación se repite en todos los dispositivos móviles en donde se
ejecute la aplicación.
Posteriormente, en el servidor se elegirá el guión correspondiente a la película
que se proyectará. Al elegir el guión, se descargará y enviará el contenido de éste a
cada cliente.
Al recibir el guión, cada cliente envía un mensaje al servidor (“Guión OK”)
indicando que recibió correctamente el guión.
Una vez que todos los clientes hayan recibido el guión en cuestión, se podrá
dar inicio a la proyección. Para esto, es necesario que simultáneamente se inicie la
proyección (en el equipo de reproducción de la sala de cine) e inicie el cronómetro de
la aplicación en el servidor.
Cuando se inicia el cronómetro en la aplicación del servidor, éste envía un
mensaje específico (“start”) a cada cliente. Con esta instrucción, IntegraFilm Client
comenzará un cronometro particular en su Pocket PC, junto con responder al servidor
un mensaje de notificación de éxito.
Desde este momento, cada dispositivo se puede independizar de IntegraFilm
Server si fuese necesario (si se pierde la señal, o si ocurre un problema en el
computador servidor, por ejemplo).
Una vez realizado el proceso anterior, IntegraFilm Server envía periódicamente
el guión y el tiempo actual a los dispositivos que no lo tengan. Esto permite la posterior
incorporación de usuarios una vez comenzada la proyección, en el caso que lleguen
tarde.
28
De manera adicional, durante la ejecución de la película, el servidor puede
enviar instrucciones de “control” a los dispositivos (pausar, continuar, y ajustar tiempo,
en caso de ocurrir eventualidades inesperadas). Todas estas instrucciones son
respondidas por los dispositivos cuando las ejecutan correctamente.
Cada aplicación está asociada a distintos tipos, o perfiles, de usuario.
IntegraFilm Web presenta un usuario visitante y un administrador, IntegraFilm Server
un usuario proyector, e IntegraFilm Client un usuario espectador (quien es no vidente).
7.1.2 IntegraFilm Web
IntegraFilm Web es un portal que recopila todos los guiones existentes, dando
la posibilidad a cualquier usuario de la red Internet de aportar con el catálogo,
elaborando su propio guión.
En esta aplicación se distinguen dos usuarios: visita (o guionista) y
administrador, quien debe filtrar los guiones que sean aportados al catálogo.
7.1.2.1 Casos de Uso
En la ilustración 2 se muestran los casos de uso de la aplicación IntegraFIlm
Web, donde interactúan los usuarios visita y administrador:
29
Ilustración 2: IntegraFilm Web. Casos de uso
visita
IntegraFilm Web
administrador
Aportar Guión Aprobar Guión
Editar Guión
Contactar
Descargar Guión
Publicar Noticia
Procesar Guión
«uses»
«uses»
Tabla 1: [IntegraFilm Web] Descripción de los Casos de uso Nombre CUW 01: Aportar Guión
Actores Visita
Actividades Crear guión y subirlo al portal
Sinopsis El usuario visita puede elaborar su propio guión, basándose en la
estructura que se explica en el portal. Este guión lo puede subir al
portal. El portal procesa el guión, permitiendo la subida de
documentos únicamente bien estructurados, de manera de
minimizar el mal uso de la aplicación.
Nombre CUW 02: Descargar Guión
Actores Visita
Actividades Navegar por el catálogo y descargar guión deseado
Sinopsis El usuario visita puede navegar por el catálogo del portal web y
descargar un guión si así lo desea, para ver el nivel de detalle que
el guión puede tener.
30
Nombre CUW 03: Contactar
Actores Visita
Actividades Escribir mensaje y enviarlo al administrador
Sinopsis El usuario visita puede enviar un mensaje al administrador. Este
mensaje será recibido por el administrador del portal y lo podrá
responder.
Nombre CUW 04: Aprobar Guión
Actores Administrador
Actividades Listar nuevos guiones y aprobar los fidedignos
Sinopsis El usuario administrador puede revisar los nuevos guiones que los
usuarios visita han aportado (CU 01) y aprobar (o rechazar) su
publicación si así lo determina
Nombre CUW 05: Editar Guión
Actores Administrador
Actividades Seleccionar guión y editarlo
Sinopsis El usuario administrador, en cualquier momento puede editar un
guión seleccionado, cambiando el contenido de éste. Al editar un
guión, el portal lo procesa para verificar su correcta estructura.
Nombre CUW 06: Publicar Noticia
Actores Administrador
Actividades Redactar noticia y publicarla
Sinopsis El usuario administrador tiene derecho a publicar una noticia,
editándola cuantas veces desee.
7.1.2.2 Interfaz
La aplicación tiene una vista para visitas y otra vista para administradores.
Todas ellas están igualmente estructuradas, ofreciendo el siguiente esquema:
• Encabezado. Contiene el formulario de ingreso de administradores y un
banner con el logotipo del sistema
• Menú superior horizontal. Contiene las distintas secciones del portal
• Columna izquierda. Contiene una fotografía de una prueba de usuarios
31
• Columna derecha. Contiene las últimas noticias del sistema
• Cuerpo central. Contiene la información propia de cada página
• Pie de página. Contiene las secciones del portal y los créditos del
desarrollador
7.1.2.2.1 Página de inicio
Esta es una página introductoria al sistema IntegraFilm. En ella se
explica al visitante los objetivos y alcances del sistema. Al costado derecho se
aprecia una columna de “Noticias”, donde se publicarán los próximos eventos
de IntegraFilm. Esta columna estará presente en todas las secciones del portal.
En la ilustración 3 se presenta la interfaz de la página de inicio.
Ilustración 3: IntegraFilm Web. Página de inicio [visita]
Esta es una página introductoria, donde se invita al usuario a visitar al catálogo
(o repositorio de guiones existentes), a realizar aportes de nuevos guiones y a
32
contactarse con el administrador del sistema. A continuación se detallan cada una de
estas vistas.
7.1.2.2.2 Catálogo de guiones
En la ilustración 4, se muestra la página de catálogo de guiones. En esta
página, el usuario puede navegar y descubrir los distintos guiones disponibles en el
sistema. Los puede descargar para examinarlos.
Para cada guión, se indica el nombre de la película, el de su creador, y la fecha
en el que fue incorporado al sistema.
Ilustración 4: IntegraFilm Web. Catálogo de guiones [visita]
33
7.1.2.2.3 Aportes
La ilustración 5 muestra la página donde se plasma el propósito del portal: la
generación de una comunidad de guionistas.
En la parte superior de la pantalla se enseña a confeccionar guiones, explicando
la estructura y significado de cada componente de éste. Posteriormente se entrega un
formulario de ingreso de aportes.
Para incorporar un nuevo guión al catálogo, se solicita, de manera obligatoria, el
nombre y e-mail del guionista, junto con el título de la película y el contenido del guión
propiamente tal.
34
Ilustración 5: IntegraFilm Web. Aportes [visita]
35
7.1.2.2.4 Visualización de nuevo guión
El guión que se desea incorporar debe seguir el formato adecuado, y para
asegurarlo, el sistema procesa el guión ingresado y entrega una versión correctamente
estructurada, que corresponde a lo comprendido del guión inicial, basándose en las
reglas de su estructura.
La ilustración 6 muestra la interfaz de visualización del guión procesado:
Ilustración 6: IntegraFilm Web. Visualización del guión procesado [vi sita]
36
En el cuadro gris se muestra el guión que se ha procesado correctamente, es
decir, el texto mostrado en el cuadro corresponde a un guión correctamente
estructurado. En la parte inferior de la pantalla se pregunta al guionista si ese guión
corresponde completamente al suyo original. Si corresponde, hace clic en el botón “Sí”
y finaliza la creación del guión, quedando éste en un estado transitorio, esperando la
aprobación del administrador. Si la respuesta es negativa, entonces se vuelve a la
interfaz anterior, para que el guionista pueda verificar su posible error.
7.1.2.2.5 Contacto
En la ilustración 7 se entrega un formulario para contactar al administrador del
portal. El mensaje ingresado en este formulario, será enviado por correo electrónico al
administrador del portal.
Ilustración 7: IntegraFilm Web. Contacto [visita]
37
7.1.2.2.6 Catálogo de guiones (Administrador)
Para ingresar como administrador, es necesario ingresar el nombre de usuario
y password en el formulario superior que se encuentra en todas las pantallas del
sistema. Al ingresar con un usuario correcto, se puede ver la siguiente interfaz inicial:
Ilustración 8: IntegraFilm Web. Catálogo de guiones [administrador]
Esta es la página principal del administrador. En ella puede ver y administrar
los nuevos guiones que han sido aportados por el público, aprobando o rechazando su
publicación. El administrador también puede revisar el detalle de un guión y realizar
cambios si lo considera necesario, como se muestra en la ilustración 9.
7.1.2.2.7 Edición de guiones (Administrador)
Como se mencionó en el punto anterior, en esta página, el administrador puede
revisar el contenido del guión y verificar si efectivamente se trata de un guión de audio
descripción de una película verdadera. Se sabe a priori que la estructura de este guión
es correcta, pues fue procesado antes de aceptarlo. Si considera pertinente, el
administrador puede modificarlo.
38
Ilustración 9: IntegraFilm Web. Edición de un guión [administrador]
7.1.2.2.8 Noticias (Administrador)
El sistema proporciona un canal de noticias para la comunidad interesada.
Estas noticias las edita el administrador, y para ello utiliza la interfaz que se muestra
en la ilustración 10. La noticia publicada estará visible en todas las páginas del sistema
para la visualización de visitas.
39
Ilustración 10: IntegraFilm Web. Noticias [administrador]
7.1.3 IntegraFilm Server
IntegraFilm Server es la aplicación que controla a las Pocket PC, dándole
instrucciones e información de acuerdo al protocolo de comunicación mostrado en la
ilustración 1. Esta aplicación se debe ejecutar en un computador contiguo al
reproductor de la sala de cine, pues se requiere dar un inicio simultáneo al reproductor
de la cinta y al sistema IntegraFilm.
El usuario de esta aplicación es el llamado “proyector”.
7.1.3.1 Casos de Uso
En la ilustración 11 se presentan los casos de uso para la aplicación
IntegraFilm Server, donde interactúa únicamente el usuario proyector:
40
Ilustración 11: IntegraFilm Server. Casos de uso
Tabla 2: [IntgraFilm Server] Descripción de los Cas os de uso Nombre CUS 01: Cargar Guión
Actores Proyector
Actividades Seleccionar guión deseado y descargarlo
Sinopsis El usuario Proyector puede seleccionar el guión de la película que
desea proyectarlo y descargarlo. Una vez descargado, éste será
enviado a los clientes automáticamente.
Nombre CUS 02: Iniciar Cronómetro
Actores Proyector
Actividades Comenzar la reproducción de la cinta e iniciar el cronómetro de
IntegraFilm Server
Sinopsis El usuario Proyector tendrá la interfaz para dar la instrucción a los
dispositivos que inicien sus cronómetros. Esto lo debe realizar al
mismo tiempo que comience a reproducir la cinta.
41
Nombre CUS 03: Pausar Cronómetro
Actores Proyector
Actividades Pausar el cronómetro
Sinopsis El usuario Proyector tiene la facultad de pausar el cronómetro de los
dispositivos en el caso de presentarse alguna dificultad técnica
Nombre CUS 04: Reanudar Cronómetro
Actores Proyector
Actividades Reanudar el cronómetro
Sinopsis El usuario Proyector puede reanudar el normal funcionamiento del
cronómetro de los dispositivos.
7.1.3.2 Interfaz
Esta aplicación presenta una única interfaz, ya que los casos de uso no exigen
un mapa de navegación de mayor envergadura. En la ilustración 12 se muestra esta
interfaz.
Ilustración 12: IntegraFilm Server.
42
Las acciones que puede realizar el usuario proyector se pueden reconocer
porque son botones. Los botones pueden ser presionados solo cuando sea posible
realizar la acción.
Los números en rojo fueron montados sobre la imagen original con el fin de
explicar cada componente de la interfaz de usuario de IntegraFilm Server:
1. Área donde se muestra una lista de cada cliente que se conecta al sistema
2. Selector del guión correspondiente a la cinta que se proyectará. Esta lista
corresponde al catálogo de guiones que se encuentran aprobados en la
aplicación web
3. Área que indica el tiempo actual de la proyección, con el formato hh:mm:ss y
en segundos totales acumulados (entre paréntesis), el cual comienza cuando
se presiona el botón “comenzar” (5). Este es el mismo tiempo que tendrán las
Pocket PC
4. Campo de texto que permite ingresar un nuevo tiempo con el fin de ajustar el
tiempo que se observa en la componente anterior (3), en el caso de ocurrir
algún imprevisto que obligue a modificar el cronómetro. Este cambio será
realizado también en cada aplicación cliente
5. Botón que permite dar inicio a la proyección. Se habilitará automáticamente
una vez que se haya cargado el guión. Al hacer clic, se llenará el campo de
tiempo actual (componente 3) y comenzará a avanzar el tiempo en la
aplicación servidor y en los clientes. Junto con lo anterior, cambiará su etiqueta
a “pausar”
6. Botón que ajusta el tiempo actual de la componente 3, con el ingresado en la
componente 4 y envía la instrucción a los clientes de ajustar sus tiempos
individuales
7. Área donde se mantiene un registro constante de todo lo sucedido durante la
ejecución, notifica envíos y recepciones a los clientes. Los mensajes más
nuevos se imprimen en la parte superior del área, para poder tener de fácil
acceso la última información entregada por el sistema
En la ilustración 13, se muestra un ejemplo de esta interfaz en tiempo de
ejecución. Se puede observar que el botón que en la ilustración anterior estaba
etiquetado con “comenzar”, ahora esta etiquetado como “pausar”. Esto sigue el
modelo mental de la mayoría de los usuarios: se utiliza un mismo botón como “play” y
“pause”.
43
Al presionar este botón, se envía la instrucción a todos los clientes de detener
sus cronómetros individuales. Al mismo tiempo, el botón se re-etiqueta como
“continuar”, lo que, al ser presionado, enviará la correspondiente instrucción a los
clientes de reanudar sus cronómetros.
Ilustración 13: IntegraFilm Server. Durante la ejecución
7.1.4 IntegraFilm Client
IntegraFilm Client es la aplicación que se ejecuta en la Pocket PC de cada
usuario espectador en la sala de cine.
7.1.4.1 Casos de Uso
En la ilustración 14 se muestran los casos de uso para la aplicación IntegraFilm
Client, en la que interactúa solo el usuario espectador:
Ilustración 14: IntegraFilm Client. Casos de uso
44
espectador
IntegraFilm Client
Cargar Guión
Pausar Cronómetro
Iniciar Cronómetro
Reanudar Cronómetro
Recibir y Enviar
Mensajes de Servidor
«uses»
«uses»
«uses»
«uses»
Reproducir Guión
Seleccionar Nivel
Tabla 3: [IntegraFilm Client] Descripción de los Ca sos de uso Nombre CUC 01: Cargar Guión
Actores Espectador
Actividades Se conecta a la red y se descarga el guión
Sinopsis El usuario Espectador, al iniciar la aplicación, recibirá el guión
automáticamente una vez que haya sido cargado en IntegraFilm
Server por el usuario proyector. Una notificación de correcta
recepción del guión será enviada al servidor.
Nombre CUC 02: Iniciar Cronómetro
Actores Espectador
Actividades Se inicia el cronómetro
Sinopsis El usuario Espectador, al recibir la instrucción adecuada, iniciará su
45
cronómetro automáticamente. Una notificación del correcto inicio de
cronómetro será enviada al servidor.
Nombre CUC 03: Pausar Cronómetro
Actores Espectador
Actividades Pausa el cronómetro
Sinopsis El usuario Espectador, al recibir la instrucción adecuada, pausará el
cronómetro de su dispositivo automáticamente.
Nombre CUC 04: Reanudar Cronómetro
Actores Espectador
Actividades Reanudar el cronómetro
Sinopsis El usuario Espectador, al recibir la instrucción adecuada desde el
servidor, reanudará el cronómetro de su dispositivo
automáticamente. Una notificación de la correcta detención del
cronómetro será enviada al servidor.
Nombre CUC 05: Reproducir Guión
Actores Espectador
Actividades En el momento indicado, reproducirá el guión
Sinopsis El usuario Espectador podrá escuchar la reproducción del guión en
el momento adecuado automáticamente, justo en la escena donde
suceda lo referido en el texto
Nombre CUC 06: Seleccionar Nivel
Actores Espectador
Actividades En cualquier momento, el espectador puede seleccionar el nivel de
información que desea recibir
Sinopsis El usuario Espectador podrá especificar el nivel de información que
desea recibir: alto o bajo.
Esta es la única interacción humana del usuario con el sistema.
46
7.1.4.2 Interfaz
El diseño de interfaz de esta aplicación es el resultado de un largo estudio y
desarrollo de diferentes alternativas, puestas a prueba con diferentes usuarios finales
y profesionales experimentados en interfaces de usuarios para personas no videntes.
Estas alternativas serán expuestas en el capítulo de discusiones.
A continuación se exhibe la interfaz resultante. Al igual que en el caso de
IntegraFilm Server, los casos de uso no exigen más de una interfaz.
Ilustración 15: IntegraFilm Client. Interfaz
Se debe tener en consideración que esta aplicación es la que permitirá la
interacción de IntegraFilm con el usuario final no vidente. Es por esto la simplicidad y
las limitadas acciones que permite realizar.
47
Los números en rojo fueron montados sobre la imagen original, para poder
explicar cada componente de la interfaz:
1. Botón de nivel “alto”. Permite configurar la aplicación (en tiempo de ejecución)
para que reproduzca el guión con un alto nivel de detalle, obteniendo de ésta
manera la mayor información posible. Al presionar este botón el usuario recibe
un feedback sonoro (“escuchar todo el detalle”)
2. Botón de nivel “bajo”. Indica a la aplicación que el usuario desea escuchar
menos información, solo la indispensable para comprender el guión. Al
presionar este botón el usuario también recibe un feedback sonoro (“escuchar
solo lo indispensable”)
3. Área donde se muestra un registro de todos los eventos que suceden en el
tiempo de ejecución. Esto se muestra solo por si algún usuario vidente esta
ejecutando la aplicación, o para que el usuario proyector verifique que todo
esté en orden
4. Área donde se indica el cronómetro individual (en segundos) del dispositivo.
Esto es sólo para tener una referencia, por lo que se evita distraer recursos de
la Pocket PC en trasformar esos segundos a formato hh:mm:ss1. Este valor se
podría utilizar en la eventualidad que se desee verificar el sincronismo de las
aplicaciones, y corresponde al valor entre paréntesis del campo 3 de la interfaz
del servidor
5. Botón “salir”. Para cerrar la aplicación. Está ubicado estratégicamente en esa
posición, es un lugar donde un usuario no vidente presiona menos
inconscientemente. Al presionarlo, aparece una ventana de confirmación, como
se muestra en la ilustración 16.
Ilustración 16: IntegraFilm Client. Confirmación de cierre de aplicación
1 El sintetizador Text-To-Speech Acapela mostró un mejor desempeño al omitir la transformación de formato en el tiempo.
48
Esta ventana de confirmación aparece en el centro de la pantalla del dispositivo,
para evitar la posibilidad de que se pueda presionar por error el botón “salir” y
seguidamente el botón de confirmación “Sí”.
Para asegurar una acción indeseada, esta ventana desaparece si se presiona
en cualquier lugar de la pantalla del dispositivo diferente al botón “Sí”. El objetivo es
que el usuario espectador no cierre la aplicación.
49
7.2 Implementación
De acuerdo al diseño desarrollado en la sección anterior, se debe considerar el
desarrollo de tres aplicaciones distintas, estas se instalarán en diferentes lugares
físicos:
• IntegraFilm Client, localizada en cada Pocket PC
• IntegraFilm Server, localizada en el computador servidor
• IntegraFilm Web, localizada en un servidor de hosting web
Utilizando los principios de las metodologías ágiles, se planificó el desarrollo
del sistema pensando en productos entregables, que contienen una o más tareas.
El lenguaje de programación utilizado para desarrollar las aplicaciones cliente y
servidor fue Visual C#. Para la aplicación web fue PHP, junto con JavaScript,
incorporando técnicas AJAX.
En la tabla 1 se muestran los productos con sus respectivas tareas para cada
una de las aplicaciones, en el mismo orden expuesto.
Las tareas se desarrollaron en la medida que fueron necesarias para mantener
una lógica de desarrollo continuo del sistema, permitiendo realizar pruebas de
funcionalidad con usuarios.
En la tabla 4 se detallará el desarrollo de cada tarea dentro de cada aplicación:
50
Tabla 4: Listado de productos y tareas Producto Tarea
IntegraFilm Client
(C1) Iniciación de Cronómetro Cronómetro
(C2) Control de Cronómetro
(C3) Integración de Sintetizador Text-To-Speech
(C4) Lectura de una frase
(C5) Parser de archivo de guión
(C6) Lectura de guión
Lectura de guión
(C7) Graduación de guión
Interfaz (C8) Diseño de la interfaz
(C9) Conectarse a la red Red
(C10) Recibir Instrucciones de Server
IntegraFilm Server
(S1) Conexión con proyector Cronómetro
(S2) Iniciación de Cronómetro
(S3) Diseño de la interfaz Interfaz
(S4) Agregar archivo de guión
(S5) Descargar archivo de guión
(S6) Detectar clientes conectados
(S7) Enviar instrucciones
Red
(S8) Recibir respuestas
IntegraFilm Web
(W1) Diseño de interfaz Interfaz
(W2) Validadotes de formularios
(W3) Publicación de guión
(W4) Administración de guiones
(W5) Descarga de guión
(W6) Edición de guiones
(W7) Procesamiento de estructura de guión
Guiones
(W8) Creación de archivo de catálogo
(W9) Diseñar Base de Datos Base de Datos
(W10) Guardar información en la Base de Datos
51
7.2.1 IntegraFilm Client
El desarrollo de IntegraFilm comenzó con la aplicación cliente. Se desarrolló
utilizando el .NET Compact Framework (para dispositivos móviles), realizando las
tareas que se detallan a continuación.
7.2.1.1 C8: Diseño de Interfaz
Utilizando la librería “System.Windows.Forms ” que trae por defecto C#, se
diseñó la interfaz gráfica apoyado por la interfaz gráfica que entrega Microsoft Visual
Studio, y luego los detalles se hicieron modificando el código generado por la interfaz
anterior. El resultado de esta tarea fue la clase “Form1 ”.
Al comenzar un nuevo proyecto en Visual Studio, se crea por defecto la clase
“Program ”, que contiene el método Main(), en un comienzo, vacío. Se decidió respetar
esta clase y dejarla (como se verá también más adelante) como la clase principal en
las dos aplicaciones que se realizarán.
Para finalizar esta tarea, se crea una nueva instancia de la clase recién creada
(Form1) y se ejecuta, de la manera indicada en el extracto de código 1:
Extracto de código 1: IntegraFilm Client. Interfaz gráfica
static void Main() {
Form1 f1 = new Form1(); Application .Run(f1); }
7.2.1.2 C1: Iniciación de cronómetro
El lenguaje de programación C# cuenta con una librería llamada Timer, dentro
del paquete de formularios “Windows.Forms ” que facilita esta tarea. Sin embargo se
presentaron diferentes dificultades para controlar la velocidad en la que se incrementa
el tiempo en un segundo. Esto debido a que al utilizar el emulador de dispositivos que
ofrece la plataforma de desarrollo (Visual Studio), el reloj creado avanzaba más rápido
que lo esperado (velocidad de un reloj corriente), por lo que fue necesario ecualizar el
tiempo e indicar que transcurriera un segundo en la aplicación al cabo de 1083
milisegundos.
52
Finalmente, al probar la aplicación en un dispositivo real, se obtuvo un
resultado satisfactorio: 1000 milisegundos correspondían efectivamente a un segundo.
El resultado de esta tarea fue la clase “Cronometro ”, que contiene un
constructor y un método ejecutado cada segundo, llamado Timer_Tick() , que esta
encargado, por el momento, de presentar en la interfaz los segundos que llevan
transcurridos desde que se llama a una instancia de la clase.
7.2.1.3 C2: Control de Cronómetro
Una vez finalizada la tarea anterior, se agregó la funcionalidad de pausar y
reanudar el cronómetro. Para verificar su funcionamiento, se realizó una interfaz
provisoria que permitiera realizar estas acciones por medio de botones.
Posteriormente estos botones fueron eliminados de la interfaz, pues estas funciones
de control serán realizadas automáticamente al recibir las instrucciones
correspondientes desde el servidor.
7.2.1.4 C3: Integración de Sintetizador Text-To-Spe ech
El siguiente paso a realizar fue integrar el sintetizador de Text-To-Speech. Se
utilizó una versión de desarrollo de “Acapela Group” disponible en el Centro de
Computación C5.
Para esto, se instalaron los siguientes archivos del sintetizador en la carpeta
“Windows” de cada dispositivo:
• babiledll.dll
• libcwce.dll
• nscube.dll
• nscapi.conf
• y la carpeta “Acapela”, que contiene las voces.
Por tratarse de una versión de desarrollo, el sintetizador reproduce el texto
“Esta es una versión de prueba de la síntesis de Acapela Group” después de leer 11
frases.
53
7.2.1.5 C4: Lectura de una frase
Con los archivos mencionados instalados fue posible utilizar la API (del inglés
Application Programming Interface) de Acapela, que consiste básicamente en las
siguientes dos llamadas de funciones, mostradas en el extracto de código 2:
Extracto de código 2: IntegraFilm Client. Uso de Acapela
TTS.TTS_Speak( string frase);
TTS.TTS_StopSpeaking();
Al llamar a la primera función, el sintetizador lee el contenido de la variable
frase entregada como parámetro, mientras que con la segunda función se detiene la
lectura si es que hay una en curso.
En general, solo se utilizó la primera función, ya que la versión utilizada de
Acapela no permite comenzar la lectura de alguna frase si es que hay otra lectura en
curso. Si sucede este escenario, la nueva frase es encolada y se reproduce una vez
finalizada la lectura de la frase en curso.
7.2.1.6 C5: Parser de archivo de guión
Teniendo las funcionalidades necesarias para que la aplicación pudiera leer
una frase dada, se prosiguió por entregarle el guión descriptivo. Para esto fue
necesario definir previamente la estructura que éste tendría.
7.2.1.6.1 Estructura del Guión
Inicialmente, se tomó como inspiración la estructura de los archivos de
subtítulo de películas que se utiliza para los reproductores de video en el
computador: el formato SRT.
Los archivos SRT son ficheros de texto que contienen los subtítulos
asociados a un video. Utilizan el formato “subrip”, en el que se almacena esta
información:
• nº de subtítulo
• intervalo de tiempo en el que aparece
• texto del subtítulo
54
Un ejemplo de este formato se muestra en la ilustración 17:
Ilustración 17: Formato SRT
Como se aprecia en la ilustración 17, este formato cumple su objetivo,
pero no es robusto en cuanto a su estructura, pues presenta varias dificultades
para parsearlo (es difícil asegurar el correcto procesamiento), y es sencillo
cometer errores, basta con borrar un número de subtítulo (los que están en
rojo) y ya se obtendrá un resultado no esperado. Cabe destacar también que el
número es innecesario.
En respuesta a esto, se decidió crear un nuevo formato (influenciado
también por la necesidad de incorporar, como ya se sabe, un nuevo parámetro:
el nivel). Se optó por crear la estructura mostrada en la ilustración 18, utilizando
conceptos de tags o etiquetas XML:
Ilustración 18: Formato de guión de IntegraFilm
55
Como se ve en la ilustración, se agregó el concepto de etiquetas,
englobando el documento con la etiqueta <movie>, y dentro de ésta las
etiquetas <moviename> y <p>, la primera contiene el nombre de la película que
describe el presente guión, y la segunda contiene el contenido de cada frase
del guión, con sus atributos respectivos de nivel y tiempo de ejecución (start).
Se eliminó la milésima de segundo en el tiempo, y se dejó únicamente
el instante de inicio (ya que la frase durará hasta que el sintetizador termine de
leer).
De esta manera se tiene un guión mejor estructurado, teniendo certeza
del término del archivo (gracias a la etiqueta </movie>).
Teniendo ya la estructura que se utilizaría para almacenar el guión descriptivo,
se pudo proceder a parsearlo para procesar su contenido. Para esto se utilizaron
expresiones regulares , y con la ayuda de la librería de C# llamada
System.Text.RegularExpressions se pudo realizar las siguientes expresiones
regulares:
Extracto de código 3: IntegraFilm Client. Parser de Guión
Regex rn = new Regex( @"<movie>[\r\n\s]*<moviename>(?<name>.*)</moviename >[\r\n\s]*" );
Regex r = new Regex( @"[\r\n]*<p nivel=(?<nivel>\d+) start=(?<start>\d{1,2}:\d{1,2}:\d{1,2})>[\r\n]*(?<f rase>.*)[\r\n]*</p>[\r\n]*" );
Como se aprecia en la figura, se procede creando un objeto de la clase
“Regex ”, el cual luego se comparará con un string (en este caso, el guión).
Con la primera expresión se obtiene el nombre de la cinta, mientras que con la
segunda, se obtienen todas las frases que éste contiene.
Una vez procesado el texto, se almacena la información en una estructura de
datos del tipo cadena enlazada, donde la cadena misma corresponde a un objeto de
la clase “Script ” y cada nodo corresponde a un objeto de la clase “Parrafo ”,
formándose así la siguiente estructura:
56
Ilustración 19: IntegraFilm Client. Clase Script.cs, lista enlazada.
Esta ilustración corresponde a la lista creada a partir del guión expuesto en la
ilustración anterior.
El objeto de clase “Script ” (la lista) posee la variable de instancia “Parrafo first ”,
que es una referencia hacia el primer nodo (de clase “Parrafo ”) de la lista. Cada nodo
de la lista corresponde a un objeto de la clase “Parrafo ”, que posee las siguientes
variables de instancia:
• int nivel: variable tipo entero que representa el nivel descriptivo de la frase
almacenada en el nodo.
• int start: variable también tipo entero que representa el instante en el que se
debe leer la frase almacenada en el nodo. Cabe destacar que para obtener
este valor, se calcula la cantidad de segundos que representa el valor original.
En el ejemplo de la figura, el primer párrafo del guión tenía el atributo
start=00:01:59, que corresponde a 119 (segundos) en el nodo. Esto se hace
únicamente para exigir menos procesamiento en la ejecución.
• string frase: variable del tipo cadena de caracteres que almacena la frase
propiamente tal del nodo.
• parrafo next: variable que guarda una referencia hacia el nodo siguiente en la
lista.
Esta lista enlazada se crea utilizando un algoritmo de inserción ordenada , de
modo de asegurar que la frase que contiene el nodo de posición i en la lista se debe
reproducir sí y solo sí después de la frase del nodo de posición i-1.
7.2.1.7 C6: Lectura de Guión
Para leer correctamente el guión, en condiciones normales de operación, se
crea una referencia pivote al nodo raíz (Parrafo First) de la lista enlazada explicada
57
recientemente y esperar hasta el momento indicado para leerlo. Una vez leído, se
avanza hasta el nodo siguiente y se repite el proceso: se espera hasta que sea el
momento de su lectura.
Esto se logró modificando el método Timer_Tick() explicado en la tarea C1.
Ahora en cada incremento de segundo se pregunta si corresponde leer el párrafo en
donde esta la referencia pivote. El método quedó finamente así:
Extracto de código 4: IntegraFilm Client. Método TImer_Tick()
private void Timer_Tick( object Sender, EventArgs e) { //Corresponde leer algun parrafo? if ( this .pivote != null
&& this .pivote.Start == this .tiempoactual) {
if ( this .nivel >= this .pivote.Nivel) { this .pivote.Leer(); } this .pivote = this .pivote.Next; }
//Refresca la interfaz this .clock.Text = this .tiempoactual.ToString();
//Incrementa el reloj en un segundo this .tiempoactual++;
}
Como se observa en el extracto de código, por cada segundo que pasa se
pregunta si corresponde leer algún párrafo. Si la respuesta es afirmativa entonces se
lee sí y sólo sí el nivel descriptivo del párrafo es igual o superior al elegido por el
usuario.
En condiciones anormales de operación, el cronómetro del dispositivo puede
no comenzar desde cero (por ejemplo en el caso que un usuario llegue tarde a la
proyección de la cinta) o bien cuando es ajustado por instrucción del servidor (por
ejemplo en el caso de ocurrir un imprevisto ajeno al sistema). En estos casos se
tendrá especial cuidado con la posición del nodo pivote, pues si está mal posicionado,
es posible que nunca avance.
Para manejar estas condiciones excepcionales, cada vez que se inicia, o ajusta
(por instrucción del servidor) el cronómetro, se recorre la lista con el nodo pivote,
58
desde el nodo raíz hasta el nodo que se debe leer próximamente. Para avanzar, se
pregunta si la variable de instancia start de cada nodo es menor al tiempo recibido.
7.2.1.8 C7: Graduación del Guión
En la explicación de la tarea anterior se adelantó el concepto del nivel
descriptivo seleccionado por el usuario. La selección de estos niveles (dos) se
presentan en la interfaz por medio de los botones en la parte inferior de la pantalla del
dispositivo (ver Ilustración 15). Al accionarlos, se almacena el valor elegido (1 ó 2) en
una variable de la clase Cronometro llamada nivel (this.nivel en el extracto de código
anterior)
El desarrollo de esta aplicación quedó pendiente y se comenzó el desarrollo de
la aplicación servidor (IntegraFilm Server), pues correspondía comenzar a recibir datos
desde esta aplicación. Una vez avanzado el desarrollo de la aplicación servidor, se
prosiguió con las tareas de esta aplicación.
7.2.1.9 C9: Conectarse a la red
La comunicación entre las aplicaciones IntegraFilm Server e IntegraFilm Client
se logra utilizando el protocolo TCP, donde todos los clientes se conectan al servidor y
establecen una comunicación personalizada y segura con él para poder recibir y enviar
información.
Para poder lograr esto, se debe proporcionar la dirección IP del servidor, para
entregársela de parámetro a los clientes. Si se pudiera asegurar que el servidor tendrá
siempre la misma dirección IP entonces esto no sería una complicación mayor. El
problema es que este escenario es muy poco frecuente.
El método utilizado para solucionar este inconveniente fue crear un MultiCast,
asignando una dirección IP fija para esta red (224.5.6.7 en el caso de IntegraFilm).
Así todos los clientes se suscriben a esta señal cuando se inicia la aplicación y
aguardan escuchando hasta que reciban la dirección IP del servidor y luego se retiran
del MultiCast. Por otro lado en el servidor se lanza un proceso dedicado a mandar su
IP periódicamente a los suscritos de manera paralela al proceso principal de la
59
aplicación (un thread o hilo). De esta manera los clientes capturan la dirección IP del
servidor y pueden establecer una conexión de envío seguro de datos TCP.
En la ilustración 20 se muestra un diagrama que grafica la solución propuesta:
Ilustración 20: IntegraFilm. Multicast para publicar IP del S ervidor
Para realizar las operaciones de MultiCast se utilizó principalmente la clase
“EnviarMC.cs”, proporcionada por profesionales de C5 (Fernando Aguayo y Tiago
Hassler), en el extracto de código 5 se muestra el código de mayor relevancia:
Extracto de código 5: IntegraFilm Server. Envío de IP en MultiCast
IPHostEntry miIPtmp = Dns.GetHostEntry( Dns.GetHostName()); string ipServer = miIPtmp.AddressList[0].ToString(); EnviarMC e = new EnviarMC ( "224.5.6.7" , "5001" ); e.Enviar(ipServer);
En la primera línea de código se obtiene la lista de direcciones IP del
computador (de la tarjeta de red física y de la tarjeta de red inalámbrica, entre otras).
En la variable ipServer se almacena el valor de la dirección IP de la tarjeta de
red física. Si el computador servidor está conectado vía WiFi, no se enviará la
dirección adecuada. Esto presenta una restricción importante para el sistema: el
computador servidor debe estar conectado físicamente a Internet. De caso contrario,
se debe cambiar esta línea de código y recuperar el segundo elemento del arreglo
AddressList.
60
Por otro lado, en la aplicación cliente, se ejecuta un código similar, que se
muestra en el extracto de código 6:
Extracto de código 6: IntegraFilm Client. Suscripci ón y recepción de IP
Socket sock = new Socket ( AddressFamily .InterNetwork, SocketType .Dgram, ProtocolType .Udp);
IPEndPoint iep = new IPEndPoint ( IPAddress .Any, 5001); sock.Bind(iep);
sock.SetSocketOption( SocketOptionLevel .IP, SocketOptionName .AddMembership, new MulticastOption ( IPAddress .Parse( "224.5.6.7" )));
byte [] data = new byte [1024]; int recv = sock.Receive(data, data.Length,0); string ipserver = Encoding .ASCII.GetString(data, 0, recv);
sock.Close();
Básicamente, lo que se hace es abrir un Socket (sock) y asociarlo al punto de
conexión (iep), luego se indica que el Socket debe suscribirse al canal del MultiCast de
dirección 224.5.6.7 (el usado también por el servidor).
Posterior a esto, el proceso se pausa en la antepenúltima línea de código,
esperando a recibir alguna información (la dirección IP del servidor). Una vez que la
recibe, se cierra el Socket y se prosigue con lo siguiente: Establecer una conexión
segura con el servidor utilizando el protocolo TCP.
Para la conexión TCP entre cada cliente y el servidor se utilizó como base la
clase AdminNet, proporcionada por Héctor Flores, también profesional de C5.
Esta clase contiene el método “InicializarNet()”, en donde se ejecuta el código
recién expuesto de MultiCast y luego se realiza la conexión TCP de la siguiente
manera:
Extracto de código 7: IntegraFilm Client. Conexión TCP con el servidor. byte [] data = new byte [1024];
IPEndPoint nose = new IPEndPoint ( IPAddress .Parse(ipserver), 8005);
misocket = new Socket ( AddressFamily .InterNetwork, SocketType .Stream, ProtocolType .Tcp);
misocket.Connect(nose);
61
Una vez lograda la comunicación segura TCP entre cada cliente con el servidor
se envía un primer mensaje con los datos del cliente (“datos@direcciónIPdelCliente”)
Como ya se anticipó, a partir de este momento fue necesario introducir al
desarrollo del sistema procesos que corran de manera paralela al proceso principal de
cada aplicación, denominados procesos threads (o hilos).
En la ilustración 21 se exhibe la vista de Procesos de la aplicación cliente,
donde se muestra de manera gráfica todos los threads de ejecución que correrán en
IntegraFilm Client:
Ilustración 21: IntegraFilm Client. Vista de Procesos
El hilo principal es el originado por la clase “Program”, que se mencionó en la
tarea C8. En este hilo se carga el formulario en pantalla y está el manejo de eventos
originados por la interacción del usuario (espectador): cambio de nivel de graduación y
cierre de aplicación.
Al comenzar este hilo principal, se lanza el thread que se ha explicado
recientemente con el método “InicializarNet()”. Cuando se logra iniciar la red, se lanza
un tercer hilo de ejecución con el método “Conectado()”. En este hilo se espera
constantemente cualquier instrucción de IntegraFilm Server. Cuando se recibe una, se
identifica qué es y se realiza lo indicado.
62
Junto con este último thread, se lanza otro más con el método
“AvisarPresencia()”, que se ejecuta periódicamente (cada 1 minuto), enviando al
servidor una señal que indica que está conectado en la red.
Resulta coherente dudar sobre el periodo de ejecución de este último thread,
pues se podría ejecutar constantemente de manera de tener un feedback más preciso
en la aplicación servidor y saber el momento exacto en el que el cliente se retiró (o se
produjo un error en su dispositivo). Sin embargo, se debe tener muy presente el alto
consumo de recursos que realiza el sintetizador de voz, presentando problemas de
fluidez en la locución, incluso cuando se ejecuta IntegraFilm Client en el simulador de
dispositivos que ofrece Microsoft Visual Studio 2003, cuando se tienen otras
aplicaciones abiertas en el computador.
Con la configuración establecida (con un periodo de 1 minuto) se obtiene una
locución fluida en los dispositivos Pocket PC usados en las pruebas de usuario.
7.2.1.10 C10: Recibir instrucciones del Server
Como se acaba de explicar, hay un thread dedicado a escuchar
constantemente alguna instrucción de parte del servidor a través de la conexión TCP
con éste. En este thread se ejecuta el método “Conectado()” de la clase AdminNet,
que pausa el proceso de ejecución hasta recibir alguna información por parte del
servidor.
Existen tres tipos de instrucciones: “script”, “tiempo” y “estado”. Cada una de
ellas está compuesta por dos partes: el nombre de la instrucción y el valor asociado,
separados por un “@”.
Por la conexión TCP se envían paquetes de 1024 bytes (1kb), tamaño
suficiente para las dos últimas instrucciones, pues se recibe “tiempo@0” y
“estado@pausar” o “estado@continuar”, donde el valor de la primera instrucción indica
el tiempo con el que debe comenzar el cronómetro (si un usuario llega tarde, no debe
partir en 0) y el valor de la segunda y tercera corresponden a pausar el cronómetro o
reanudarlo respectivamente.
63
El caso del envío de script (o guión) es ligeramente más complejo, pues se
tiene en la mayoría de los casos guiones de mayor tamaño (el usado en las pruebas
de usuario pesaba 5kb). Lo que se hizo fue despachar (por parte del servidor) el guión
fragmentado, enviando de a una frase, que después son reagrupadas en cada cliente,
reestableciendo así el guión original. Como estas instrucciones son recibidas en un
hilo secundario de ejecución y debían ser traspasadas a otros hilos (al principal
mayoritariamente), fue necesario utilizar delegados (“delegates” en inglés), que son
métodos del framework .NET que permiten la interacción entre distintos threads.
A continuación se exhibe el extracto de código 8, donde se reciben las
instrucciones y se llama a cada delegado dependiendo de la instrucción recibida:
Extracto de código 8: IntegraFilm Client. Recepción de instrucciones int len = 0;
string action; byte [] buffer = new byte [1024]; len = this .misocket.Receive(buffer, buffer.Length, 0); string datos = System.Text. Encoding .UTF8.GetString(buffer, 0,
buffer.Length); char [] delimiterChar ={ '@' }; string [] palabras = datos.Split(delimiterChar); action = palabras[0]; switch (action) { case "script" : try { this .formulario.RecibirGuion(palabras[1],palabras[2]); if (palabras[1].CompareTo( "0" ) == 0) this .MandarMsgServer( "script@ok" ); } catch { MessageBox .Show( "Error al recibir script" ); } break ; case "tiempo" : try { int time = Int32 .Parse(palabras[1]); this .formulario.RecibirTiempo(time); this .MandarMsgServer( "tiempo@ok" ); } catch { MessageBox .Show( "Error al recibir tiempo" ); } break ; case "estado" : try { this .formulario.RecibirEstado(palabras[1]); string m = "estado@" + palabras[1] + "@ok" ; this .MandarMsgServer(m); } catch { MessageBox .Show( "Error al recibir estado" ); } break ; }
64
Como se puede observar, dependiendo de la instrucción, se ejecutan distintos
delegados, los que pueden ser:
• RecibirGuion(): Delegado encargado de recopilar cada frase del guión, cuando
se termina la recepción completa de éste, crea la lista enlazada explicada en la
tarea C5.
• RecibirTiempo(): Delegado encargado de recibir el tiempo. Este dato lo envía al
objeto de la clase “cronómetro”. Si el cronómetro no se ha iniciado, se inicia. Si
ya había sido iniciado, corresponde a un reajuste de cronómetro, que se realiza
en el mismo objeto cronómetro.
• RecibirEstado(): Delegado encargado de recibir distintos estados (pausar o
continuar). Si recibe “pausar”, entonces desactiva el cronómetro. Si recibe
“continuar”, lo vuelve a activar.
Posterior a esta ejecución, se envía un mensaje de vuelta al servidor,
notificando la correcta recepción de su instrucción. Esta notificación será recibida por
el servidor y no volverá a enviar la instrucción (como se verá más adelante, el servidor
envía periódicamente todas las instrucciones a los clientes que no las han recibido).
65
7.2.2 IntegraFilm Server
Esta aplicación se desarrolló utilizando el framework .NET de Microsoft.
Análogo al desarrollo de la aplicación cliente, se comenzó desarrollando una
interfaz básica que permitiera tener feedback de los módulos a implementar. A
continuación se detalla cada tarea.
7.2.2.1 S3: Diseño de la interfaz
Utilizando la interfaz gráfica de desarrollo que incorpora Microsoft Visual
Studio, se desarrolló la interfaz básica de la aplicación servidor. El resultado de esta
tarea fue la clase “Form1 ”.
Similar a la aplicación Cliente, se respetó la clase “Program ” que crea
automáticamente Visual Studio y contiene el método “Main()”, donde se crea un objeto
de la clase Form1.
7.2.2.2 S1: Conexión con el proyector
Como el diseño lo indica, es necesario que esta aplicación esté sincronizada
con el reproductor de la cinta de la sala de cine, es decir, iniciar el cronómetro del
sistema junto con el cronómetro del reproductor de la cinta.
La primera idea fue realizar esto automáticamente, que IntegraFilm Server
pudiera estar conectado con el reproductor (DV-CAM2) y capturar una señal enviada
por éste informando el inicio de la cinta. Bastaba entonces con recibir del reproductor
la información suficiente como para determinar que la cinta acababa de comenzar.
Para lograr esto, se trabajó en conjunto con profesionales especializados en
edición y post producción de cine (Javier León, Profesor de Post-Producción de la
Universidad Arcis, y Carmen Brito, Jefa de Área Técnica de la Cineteca Nacional).
2 Formato de vídeo digital profesional utilizado para pruebas de sincronización
66
Teóricamente, la solución consistía en conectar la salida del reproductor (de
protocolo RS-422) al computador (con protocolo USB) utilizando dos interfaces de
conversión de protocolos: de RS422 a RS232 y de RS232 a USB
En la secuencia de fotos de la ilustración 22 se muestran las interfaces
utilizadas para estas pruebas.
Ilustración 22: Estudio de sincronización de aplicación con reproductor DV-CAM
Durante las pruebas de campo, surgieron dos problemas con esta solución: lo
primero (y más importante) es que cada sala de cine posee un reproductor específico
para cada tipo de cintas, y considerando que no se encontró un estándar conocido
para la transmisión de datos serial de estos equipos, resultó ser muy inflexible utilizar
este módulo, pues funcionaría solo para algunos reproductores. El segundo problema
fue que se detectaron otros reproductores de cine que no tienen esta interfaz. Esto
significaría que el sistema quedaría obsoleto frente a esta circunstancia.
Considerando estos dos inconvenientes, y por razones de costo/beneficio, se
decidió eliminar la sincronización automática del sistema e incorporar una interfaz al
usuario proyector lo suficientemente flexible como para manejar este evento de forma
manual, tal como se muestra en la ilustración 12
7.2.2.3 S2: Iniciación de Cronómetro
Para esto se agregó la clase “Cronometro.cs” creada para la aplicación Cliente,
ya que se necesitaban las mismas funcionalidades.
67
La diferencia es que al tratarse de una aplicación que se ejecuta en un
computador, se tienen mayores recursos de procesamiento, por lo que no es
necesario ahorrar en funciones para evitar el consumo de recursos.
Es por esto que se puede imprimir en pantalla el tiempo, en su formato más
amigable: “hh:mm:ss”, junto con el formato utilizado en la aplicación cliente (tiempo
acumulado expresado en segundos). Para esto, se utilizó la clase “TimeSpan”, de la
librería System.
7.2.2.4 S4: Agregar archivo de guión
Como se explicó en el capítulo de diseño (Ilustración 1), IntegraFilm Server
debe conectarse con IntegraFilm Web y obtener así un listado con los guiones
disponibles.
Para esto, se realizó la clase “Request ”, que en base a un string url es capaz
de conectarse y leer el contenido de la dirección url especificada. A continuación se
muestra un extracto con el código principal (constructor) de esta clase:
Extracto de código 9: IntegraFilm Server. Construct or de clase Request
public Request( string url) { this .url = url; this .request = HttpWebRequest .Create( this .url); WebResponse response = this .request.GetResponse(); StreamReader input_stream =
new StreamReader (response.GetResponseStream()); this .content = input_stream.ReadToEnd(); input_stream.Close(); }
Como se puede apreciar en el extracto de código 9, se utilizan las clases
HttpWebRequest y StreamReader, ambas provistas por la librería System.Net del
Framework .NET.
Con esto, para obtener el contenido de una dirección web, basta con crear un
objeto de tipo Request, dando la dirección como parámetro al constructor.
68
Importante es destacar que el contenido obtenido por este objeto es el
contenido estático de la dirección url, pues no se tiene un intérprete de código html de
por medio.
La dirección ingresada es http://integrafilm.think1011.com/admin/catalogo.txt
cuyo contenido es el catálogo con todas las películas que han sido aprobadas por el
administrador del portal web.
Este catálogo también debe estar estructurado de manera tal que sea posible
procesar la información por parte de la aplicación. La estructura escogida se muestra
en la ilustración 23:
Ilustración 23: Catálogo de películas.
La generación de este catálogo será explicada en la sección de
implementación de IntegraFIlm Web.
Como se puede observar, por cada película se tiene el nombre (<moviename>)
y la dirección donde se encuentra el guión de esa película (<script>). Con esta
información, se agrega un elemento de System.Windows.Form llamado “ComboBox” y
cada ítem de éste corresponde al nombre de la película, guardando el valor de la
dirección url de cada guión.
69
7.2.2.5 S5: Descargar archivo de guión
Para descargar el archivo del guión seleccionado se utilizó la misma clase
“Request ”, creando un objeto con la url entregada por el elemento ComboBox del
formulario.
Esta acción se realiza cuando el usuario proyector selecciona la cinta deseada
y hace clic en el botón “cargar”. Una vez descargado el guión se enviará éste a las
Pocket PC conectadas con el servidor. Esto se verá en el desarrollo de la tarea S7.
A partir de este momento, se retomó el desarrollo de la aplicación cliente. Se
trabajó en paralelo para lograr la comunicación efectiva entre el servidor y los clientes.
7.2.2.6 S6: Detectar clientes conectados
Al igual que en IntegraFilm Client, fue necesario incorporar el concepto de
threads en esta parte del desarrollo. En la ilustración 24 se muestra la vista de
Procesos de esta aplicación:
Ilustración 24: IntegraFilm Server. Vista de Procesos
Program.cs
Escuchar()
EnviarGuion()
EnviarTiempo()
Accept()
ThreadSocket()
IntegraFilm Server
ThreadSocket()1 Minuto
1 Minuto
1 MinutoEnviarEstado()
1 MinutoEnviarIP()
70
Análogo a IntegraFilm Client, esta aplicación tiene un hilo principal, lanzado por
el método Main( ) de la clase “Program ”. Aquí se carga el formulario, se conecta con
IntegraFilm Web, descarga el catálogo de guiones disponibles y los incluye en el
formulario (tareas explicadas recientemente).
Se lanza un segundo thread, con el método “EnviarIP()” que se ejecuta cada un
minuto y se encarga de enviar al MultiCast la dirección IP de la tarjeta de red física del
computador.
Se lanza un tercer thread con el método “Escuchar()” en donde se escucha
constantemente la llegada de nuevos clientes. Por cada cliente, se iniciará un nuevo
thread con el método “ThreadSocket()” de la clase “ConnectionThread”, dedicado
exclusivamente a la recepción de mensajes de este cliente. El objeto creado de la
clase “ConnectionThread”, que almacena la información de la conexión con este
cliente, se agrega a una lista de conexiones, llamada “ListaConexiones”.
Paralelamente se lanzan tres hilos más que se ejecutan periódicamente. Uno
con el método “EnviarGuion()”, que envía el guión a los dispositivos; otro con el
método “EnviarTiempo()”, que envía el tiempo a los dispositivos; y un último con el
método “EnviarEstado()”, que envía las acciones de control (pausar y continuar).
Estos procesos corren cada 1 minuto, enviando el mensaje sólo a los clientes
que necesitan esta información. Es decir a aquellos clientes que no han enviado la
respuesta de notificación de la correcta ejecución de la instrucción al servidor. Podrían
ejecutarse más seguidamente, pero se decidió ese periodo para no sobrecargar a la
aplicación.
Los métodos utilizados en cada thread corresponden a métodos de la clase
“Server ”, creada a partir de la clase “AdminNet ”, utilizada en la aplicación cliente.
7.2.2.7 S7: Enviar instrucciones
El envío de instrucciones de IntegraFilm Server se realiza, como ya se dijo, de
manera continua, enviando la información únicamente a los clientes que la necesiten.
Estos threads corresponden a objetos de la clase “TimerCallback” de .NET
Framework.
71
Hay un thread dedicado al envío de cada instrucción: uno para enviar el guión,
otro para enviar el tiempo, y otro para enviar estados (pausar o continuar el
cronómetro).
A continuación, en el extracto de código 10, se exhibe la función
“EnviarGuion()”, que es ejecutada constantemente:
Extracto de código 10: IntegraFilm Server. Envío de Guión
private void EnviarGuion() { for ( int i = 0; i < server.ListaConexiones.Count; i++) { ConnectionThread conexiontmp =
( ConnectionThread )server.ListaConexiones[i]; if (conexiontmp.conectado) { if (!conexiontmp.tieneScript) { int k = 1; foreach ( string strItem in
Regex.Split( this .f.TxtScript, "<p" )) {
conexiontmp.MandarMensaje( "script@" +k+"@"
+strItem+ "@"); k++; } conexiontmp.MandarMensaje( "script@0@end" ); } } } }
“ListaConexiones” es el arreglo de “ConnectionThread’s”, objeto que representa
la conexión con cada cliente. Por cada una de estas conexiones se envía, a los que no
tienen el guión, el guión por partes.
Como se verá en la tarea S8, este objeto “ConnectionThread” almacena la
información del estado de cada cliente, información rescatada de los mensajes de
notificación que envían los clientes después de ejecutar cada instrucción.
72
7.2.2.8 S8: Recibir respuestas
Como ya se explicó, por cada cliente hay un thread dedicado a la comunicación
con él, en donde se está ejecutando el método “ThreadSocket()”, que congela su
ejecución esperando algún mensaje por parte del cliente.
Estos mensajes corresponden a notificaciones de la correcta recepción de las
instrucciones enviadas por el servidor, avisos de presencia, y los datos del cliente
(enviados al comenzar la conexión)
A continuación se muestra el extracto de código 11, con el método en cuestión:
Extracto de código 11: IntegraWeb Server. Recepción de mensajes
while ( true ) { int len = 0; byte [] buffer = new byte [1024]; len = this .misocket.Receive(buffer, buffer.Length, 0); string message = System.Text. Encoding .UTF8.GetString(buffer,
0, buffer.Length); char [] delimiterChar ={ '@' }; string [] messageitems = message.Split(delimiterChar); string headermessage = messageitems[0]; switch (headermessage) { case "Datos" : int numero = Int32 .Parse(messageitems[1]); break ; case "Presente" : conectado = true ; break ; case "script" : if (messageitems[1].CompareTo( "ok" )==0) tieneScript = true ; break ; case "tiempo" : if (messageitems[1].CompareTo( "ok" )==0) { this .najuste = this .najuste + 1; haComenzado = true ; } break ; case "estado" : estado = messageitems[1]; break ; } }
73
Como se puede observar, los mensajes recibidos tienen la misma estructura
que los enviados, es decir, comienzan por la instrucción, luego un “@” y
posteriormente el valor de la instrucción.
Lo importante de este código es cuando se le asigna el valor a las variables
“conectado”, “tieneScript”, “haComenzado” y “estado”. Las tres primeras son tipo
boolean e indican que el cliente esta conectado, que ha recibido el guión
correctamente y que ha comenzado el cronómetro, respectivamente. La cuarta
variable (”estado”) indica el estado de reproducción en el que se encuentra el cliente
(pausado o en curso).
Como ya se vio en el extracto de código 10, estas variables son utilizadas al
momento de decidir si se envía la información o no al cliente. Por ejemplo, el thread
que envía los guiones, pregunta por cada cliente si “tieneScript” es verdadera o falsa,
si es falsa, quiere decir que aun no ha recibido el guión, por lo que se lo envía. En
cambio, de ser verdadera la variable, omite el envío del guión a este cliente.
De esta manera no se sobrecarga la red con paquetes de datos innecesarios.
74
7.2.3 IntegraFilm Web
Una vez terminado el desarrollo de las aplicaciones servidor y cliente, se
comenzó el desarrollo de la aplicación web, que tiene por objetivo generar una
comunidad de guionistas y administrar sus guiones.
La aplicación web fue desarrollada utilizando el lenguaje PHP y una Base de
Datos MySql, sin la utilización de Frameworks, pues se tenía desarrollo previo que
podía ser reutilizado en esta aplicación.
En general las tareas fueron desarrolladas respetando el orden establecido. A
continuación se detalla el desarrollo más significativo de estas tareas:
7.2.3.1 W1: Diseño de interfaz
Lo primero que se hizo fue desarrollar la interfaz gráfica, para poder visualizar
las funcionalidades y el modelo entidad relación que se debía realizar.
Se desarrollaron todas las interfaces mostradas en la sección de diseño.
7.2.3.2 W2: Validación de Formularios
Una vez finalizados los formularios, se procedió a hacer validaciones simples
en el computador cliente de la web, vía JavaScript, para brindar una primera barrera al
mal uso de la aplicación.
7.2.3.3 W9: Diseñar Base de Datos:
Antes de continuar el desarrollo, fue necesario desarrollar el modelo
entidad/relación de la aplicación web. Este modelo cuenta de 3 entidades: “Guion”,
“Noticia” y “Usuario”. Estas entidades no se relacionan, por lo que generan solo tres
tablas.
75
En la tabla “Guion” se encuentra la información de cada guión publicado, sin el
guión propiamente tal, pues está en un archivo físico que se llama, por ejemplo,
“guion_3.txt“, donde el 3 representa al ID del registro del guión en la Base de Datos.
En la tabla “Noticia” esta el único registro donde se almacena la noticia que es
publicada en la columna derecha de todas las páginas.
Finalmente, en la tabla “Usuario” se encuentran los datos de los usuarios
administradores del sitio.
7.2.3.4 W10: Guardar información en la Base de Dato s
Con la Base de Datos generada en la tarea W9 y los formularios con
validaciones en la tarea W2, se realizaron todas las funciones necesarias para crear,
modificar, eliminar y actualizar registros en la base de datos.
Posteriormente se crearon otras funciones, en la medida que fue necesario, la
función que procesa un guión para validar su estructura, la función que crea el archivo
físico de un guión y la función que crea el archivo físico con el catálogo de guiones.
7.2.3.5 W3: Publicación de Guión
En un comienzo se pensó que los usuarios subieran el guión como un archivo,
ocupando un formato específico (.txt). El problema que presentó esta solución fue
principalmente que después de unas pequeñas pruebas de usuarios (potenciales
guionistas, del área de humanidades), muy pocos conocían ese formato y menos
sabían como elaborar un archivo “.txt”. Básicamente no conocían el “block de notas”
de Windows.
Como se verá más adelante, la idea es procesar el guión que se desea
ingresar, de manera de permitir la publicación sólo de guiones bien estructurados, por
lo que la alternativa de aceptar un archivo con formato Microsoft Word tampoco era
muy viable, pues comenzarían los problemas con la lectura de este archivo.
La lectura de un archivo de cualquier formato escapa de los alcances de esta
aplicación, por lo que se decidió entregar un formulario en pantalla que permitiera
76
escribir el guión en línea (Ilustración 5). Si el usuario lo desea, puede realizarlo en su
programa procesador de texto favorito y luego copiar y pegar el texto en el formulario.
Por el momento, esto creará automáticamente un archivo en formato .txt y lo
guardará en una carpeta donde se almacenan todos los guiones. Junto con esto, se
creará el correspondiente registro en la Base de Datos
7.2.3.6 W4: Administración de guiones
Los registros que se crean en la publicación de cada guión tienen un estado
inicial igual a 0. Este estado significa que el guión no ha sido aprobado por el
administrador del portal.
Los guiones con este estado son desplegados en la pantalla de administración
(Ilustración 8) y el administrador deberá revisarlos para comprobar que se trata
efectivamente de un guión descriptivo de una película existente. Posteriormente podrá
aprobar, rechazar o editar el guión.
7.2.3.7 W5: Descarga de un guión
Inicialmente se pensó en crear una sección dentro del portal web en donde se
mostrara el contenido de un guión descriptivo. Pero finalmente se decidió eliminar esta
sección y permitir la descarga de los archivos con los guiones, de manera que se viera
explícitamente un guión, tal como el usuario visitante deberá estructurarlo al momento
de crear uno.
7.2.3.8 W6: Edición de un guión
Como se mencionó en la tarea W4, el administrador tiene la facultad de editar
un guión, agregando y quitando el contenido que desee, utilizando la interfaz que se
mostró en la ilustración 9.
Importante es mencionar que el nombre que se le otorgue a la cinta es el
nombre que aparecerá en la interfaz de IntegraFilm Server.
77
7.2.3.9 W7: Procesamiento de la estructura del guió n
La aplicación web cuenta con un motor de procesamiento de la estructura de
guiones. Este motor verifica el contenido del guión, permitiendo así únicamente la
publicación de guiones bien estructurados, para evitar futuros problemas en tiempo de
ejecución en la aplicación cliente.
El algoritmo que se utiliza es similar al implementado en la aplicación cliente,
que se mostró en el extracto de código 3, pero traducido al lenguaje PHP.
7.2.3.10 W8: Creación del archivo de catálogo
Cada vez que se aprueba, edita, o elimina un guión, IntegraFilm Web crea un
nuevo archivo físico de catálogo, reemplazando el anterior, cuyo contenido es el
mostrado en la ilustración 23.
Con la realización de esta tarea, se dio por finalizado el desarrollo del sistema
IntegraFilm.
7.3 Pruebas de usuario
Durante el desarrollo del proyecto se efectuaron pruebas de usuario en la
medida que se fueron incorporando nuevas funcionalidades al sistema. La mayoría de
las pruebas fueron efectuadas con usuarios no videntes.
Sin duda, las pruebas de usuario que aportaron mayor valor al estudio de
IntegraFilm fueron las últimas dos realizadas, una en la sala de “Micro Cine” de la
Cineteca Nacional del Centro Cultural Palacio La Moneda y la otra en el “Auditorio del
Departamento de Ciencias de la Computación de la Universidad de Chile”.
En la primera se contó con la participación de 10 espectadores no videntes,
entre 18 y 66 años de edad, con ceguera congénita y adquirida, mientras que en la
segunda, asistieron 6 usuarios no videntes, con distintos niveles de discapacidad
visual, entre 19 y 32 años de edad.
78
El objetivo de la primera prueba mencionada fue validar la interfaz de usuario
diseñada teóricamente (mostrada en la ilustración 15), observar la cantidad de
información requerida por los usuarios y evaluar el desempeño de la red con múltiples
dispositivos en un escenario real.
El objetivo de la segunda prueba fue validar los cambios realizados a partir de
las sugerencias recibidas de parte de los usuarios en la prueba anterior, para dar así
un término formal al desarrollo de la aplicación.
Para realizar estas pruebas, se contó con la ayuda logística de las profesoras
diferenciales de C5, Gloria Noriega y Carolina Farías y con la asistencia de personas
no videntes principalmente del Hogar de ciegos Santa Lucía y del Colegio especial
para ciegos Hellen Keller. En las pruebas, se les explicó a los usuarios el proyecto, los
objetivos y su funcionamiento de manera breve. Posteriormente se proyectó la cinta de
video.
La cinta elegida fue una serie norteamericana llamada “CSI, en la escena del
crimen” (doblada al español). Se proyectó el primer y segundo capítulo, en la primera y
segunda prueba respectivamente.
Se decidió ocupar esta serie principalmente por el tiempo de duración (40
minutos) y por el formato que presenta: Se exhibe un caso policial a los protagonistas
forenses, los principales sospechosos relatan sus versiones y finalmente se detiene al
culpable.
Lo atractivo del formato es que los relatos de las versiones de los sospechosos
son recreaciones gráficas de los hechos, se acompaña de un relato (leve), una música
coherente y siempre (o casi siempre) hay alguna pista gráfica en la escena que ayuda
a los forenses a encontrar al culpable. Esta pista solo se puede “ver”, no escuchar.
Con esto, se tiene una base sólida y clara para la elaboración del guión descriptivo,
que en esta etapa tuvo que desarrollar el alumno.
Una vez finalizada la reproducción de las cintas, se abrió un foro de discusión en
donde todos los participantes dieron sus opiniones, críticas y comentarios. A la vez se
aplicó una encuesta personal a los asistentes, de acuerdo a la recomendación de la
investigación para el software realizado por C5 “Cuenta Cuentos” [10]
79
Los asistentes presentaban realidades distintas, todos tenían experiencias
particulares, algunos ya habían asistido a otras pruebas de usuario realizadas por C5,
por lo que estaban familiarizados y conocían el procedimiento. Otros, iban por primera
vez a una prueba de usuarios de software orientado a ellos, por lo que el nivel de
expectación fue, en general, alto.
Para graficar el escenario de las pruebas de usuario, se adjuntan a
continuación fotografías tomadas en estas pruebas.
Ilustración 25: Pruebas de usuario del sistema IntegraFilm en s ala de Micro Cine de la
Cineteca Nacional del Centro Cultural Palacio La Moneda.
Ilustración 26: Pruebas de usuario del sistema IntegraFilm en el Auditorio del
Departamento de Ciencias de la Computación de la Universidad de Chi le
80
Ilustración 27: Pruebas de usuario del sistema IntegraFilm en e l Auditorio del
Departamento de Ciencias de la Computación de la Universidad de Chi le
Entre los resultados cuantitativos más relevantes de la encuesta aplicada se
encuentra la baja asistencia al cine y el desconocimiento de la técnica de audio
descripción AUDESC. Estos resultados se muestran en los gráficos 1 y 2
respectivamente.
Gráfico 1: Asistencia al cine
67%
33%
Nunca/Casi NuncaEsporádicamente
81
Gráfico 2: Experiencia anterior con el sistema AUDESC
22%
78%
Conoce AUDESCNo conoce AUDESC
En general, todos los usuarios finales se mostraron muy satisfechos con la
experiencia vivida, destacando que consideran de gran ayuda recibir una descripción
detallada de escenas gráficas durante la reproducción de una película.
Se obtuvieron resultados importantes para alinear el trabajo realizado con los
objetivos de este proyecto, tanto positivos como negativos. Dentro de los positivos se
tiene:
• Los usuarios mostraron una acogida al sistema mejor de lo esperada,
considerando que no todos tenían experiencia utilizando una Pocket PC.
• Los usuarios concluyeron que era una herramienta totalmente integradora, que
utilizándola podrían efectivamente ir al cine y entender mejor la cinta, sin la
ayuda de un tercer participante.
• La reproducción del guión en tiempo real fue un punto verdaderamente
agradecido. Algunos habían asistido a funciones de cine utilizando el sistema
AUDESC (con interrupción).
De la misma manera, también se dio una instancia a los espectadores para que
pudieran criticar el sistema integraFilm. Destacó lo siguiente:
• Los usuarios, en la primera prueba, esperaban recibir más información que la
proporcionada por el sistema, es decir, se necesita escribir un guión más
extenso, explicando con mayor detalle las escenas y, por sobre todo, explicar
los cambios de escenarios.
82
• Los usuarios reportaron que tener tres niveles de detalle de descripción era
innecesario, la mayoría consideró más conveniente tener solo dos opciones de
detalle: “alto” y “bajo”; donde el primer nivel exige el máximo detalle de la
descripción y el segundo un detalle acotado a los sucesos más relevantes.
Esta última consideración fue estudiada a fondo y se realizó una nueva
entrevista personalizada con otros usuarios para tomar una decisión acertada con
respecto a la graduación del guión. Se decidió finalmente ofrecer únicamente dos
niveles: “alto” y “bajo”, eliminando la opción “medio”.
En la segunda prueba surgió una nueva idea entre los usuarios que puede ser
perfectamente incorporada al sistema, y que sería altamente valorada por ellos. Esto
es, incorporar un nuevo botón en el dispositivo móvil que al presionarlo, en cualquier
instante de la reproducción, indicara al usuario la locación donde se encuentra en ese
momento el desarrollo de la película. De la misma manera, se podría incorporar otro
botón que, al presionarlo, indique qué personajes están en la escena.
83
8 INSTALACIÓN Y EJECUCIÓN DE INTEGRAFILM
En la práctica, para disfrutar de los beneficios de IntegraFilm, se deben cumplir
algunos requisitos técnicos, instalar y ejecutar las aplicaciones IntegraFilm Server e
IntegraFilm Client.
8.1 Requisitos técnicos
Para poder ejecutar el sistema en una sala de cine se deben cumplir los siguientes
requisitos técnicos:
• Un computador junto al proyector de la sala de cine
• Tantos Pocket PC (con antena WiFi) como espectadores no videntes hayan
• Una red inalámbrica en la sala de cine, que ilumine toda la sala de cine
• Una conexión física a la red, con acceso a Internet, para el computador
servidor
8.2 Instalación de IntegraFilm
Si se cumplen todos los requisitos anteriores, entonces se puede proceder a
instalar y posteriormente ejecutar IntegraFilm. Para esto, se debe instalar la aplicación
IntegraFilm Server en el computador servidor, en la sala de reproducción, y la
aplicación IntegraFilm Client en todos los dispositivos Pocket PC.
IntegraFilm Web estará ejecutándose continuamente en un servidor de
hosting, se puede visitar en http://integrafilm.think1011.com , por lo que no es
necesario instalar esta parte del sistema.
Instaladas las aplicaciones en todos los equipos, se debe proceder a conectar
los equipos a la red. Estando ya conectados, se puede ejecutar cada aplicación, de
preferencia comenzar ejecutando IntegraFilm Server en el computador servidor y
posteriormente IntegraFilm Client en cada dispositivo. De esta manera se podrá
supervisar cada evento en el sistema (el envío de dirección IP del servidor por
MultiCast, la conexión TCP de cada cliente con el servidor, etc).
84
8.3 Ejecución de IntegraFilm
En IntegraFilm Server se puede seleccionar el guión correspondiente a la
película que se proyectará en cualquier momento. Al seleccionarlo, se descargará
desde IntegraFilm Web y se enviará automáticamente a todos los clientes conectados.
Cuando todos envían el mensaje de correcta recepción, es posible dar comienzo a los
cronómetros. Esto se debe hacer simultáneamente con la acción PLAY del reproductor
de la cinta.
Si ocurre algún evento inesperado, es posible pausar, ajustar y reanudar el
cronómetro de todos los clientes. Para pausar el cronómetro basta con presionar el
botón “pausar”. Para reanudarlo, presionar el botón “continuar”. Y para ajustar el
cronómetro, se debe ingresar un nuevo tiempo en el campo “ajustar” (que está
inicialmente en 00:00:00) y luego presionar el botón “ajustar”.
85
9 DISCUSIONES GENERALES
Durante el desarrollo del proyecto se tuvo que tomar variadas decisiones. Las
principales de éstas serán expuestas a continuación:
9.1 Diseño de Interfaz IntegraFilm Client
Para llegar a la versión final de la interfaz de IntegraFilm Client, fue necesario
realizar varias propuestas, pues era la interfaz que debería manejar el espectador no
vidente. Para esto se realizaron dos prototipos y fueron evaluados por profesionales
de C5 (Mauricio Sáenz y Héctor Flores) y por los mismos usuarios finales en las
pruebas de usuario.
Las dos propuestas de interfaz fueron las siguientes:
Ilustración 28: IntegraFilm Client: Prototipo de interfaz 1
86
Ilustración 29: IntegraFIlm Client. Prototipo de interfaz 2
Como se puede apreciar, ambas propuestas presentan los mismos colores:
fondo blanco y botones negros. Esto fue elegido concientemente para formar el mayor
contraste posible, de manera de permitir a aquellos usuarios que tengan algún grado
de visión alcanzar a distinguir con mayor facilidad los botones de acción para cambiar
el nivel de descripción recibida.
La primera propuesta fue diseñada por el alumno, pensando en que mientras
más grande sean los botones más fácil será llegar a ellos. Y se indicaría a los usuarios
que activen los botones a media altura de la pantalla del dispositivo. De esta manera,
no llegaría fácilmente al botón “salir”, ubicado en la esquina superior derecha.
La segunda propuesta fue sugerida por Mauricio Sáenz, justificando que es
más fácil llegar a las esquinas de la pantalla que a una columna que se encuentre, por
ejemplo, en el centro. El botón “salir” fue ubicado al centro justamente aprovechando
lo anterior: será dificultoso acceder a él inconcientemente.
87
Para decidir la alternativa más usable para los usuarios finales, se hizo una
pequeña prueba con tres usuarios no videntes, y los tres optaron por la segunda. Es
por esto que se optó finalmente por esta última.
Cabe destacar que esta imagen no corresponde a la versión final presentada
en la ilustración 15, pues aún se consideraban aquí tres niveles de graduación del
detalle del guión.
También se decidió cambiar el color gris de fondo de los cuadros de texto
(tiempo y consola) a blanco, para no perturbar la posible escasa visualización de los
botones de la interfaz a un usuario espectador.
9.2 Diseño lógico del sistema
Durante el desarrollo del diseño lógico surgieron dos importantes tomas de
decisión:
1. ¿Por qué enviar el guión completo a cada dispositivo en lugar de enviar la url y
que cada dispositivo lo descargue directamente de IntegraFilm Web?
2. Ya que se enviará el guión desde IntegraFilm Server, ¿Por qué enviarlo de una
vez en lugar de enviar una sola frase en el momento en que se debe
reproducir? De esta manera evitaríamos tener un cronómetro individual en
cada dispositivo, junto con los dos threads de envío de tiempo y envío de
acciones.
La respuesta a estas dos interrogantes apunta a un mismo objetivo: la
estabilidad en el sistema.
Ya se tiene un factor crítico, que es la dependencia con el servidor de hosting
donde está alojada IntegraFilm Web, pues, si este servidor presenta problemas de
enlace, no se podrá ejecutar ninguna aplicación, ya que el primer paso es seleccionar
el guión de la película que se desea proyectar y descargarlo.
Si ahora se piensa en que cada dispositivo se conecte con IntegraFilm Web
podría crecer la posibilidad de que la conexión colapse, pues no se sabe a priori
88
cuantos dispositivos habrá en la sala, que estarán solicitando información
conjuntamente con el servidor. Podría suceder que un dispositivo se quede sin guión.
Otro punto a favor de la decisión tomada es que la velocidad que hay en la red
dentro de la sala es mucho mayor a la velocidad que se podría tener con IntegraFilm
Web, que depende exclusivamente de la conexión que haya en la sala de cine.
Tomando ya esta primera decisión, se tuvo que definir el procedimiento para
que cada dispositivo obtuviera el guión. Una primera opción fue efectivamente enviar
cada frase de guión en la medida que se requiriese, evitando así la implementación de
un cronómetro en cada dispositivo.
El problema que se presentó fue el mismo: no aporta en completitud a la
estabilidad del sistema. Si sucede un imprevisto, como por ejemplo, una simple baja
de señal de la antena WiFi, el dispositivo móvil no podría recibir las frases del guión
descriptivo durante ese periodo, perdiendo así información.
Es por todo lo anterior que se decidió descargar el guión desde IntegraFilm
Web únicamente por IntegraFilm Server y enviarlo de manera íntegra a los dispositivos
antes de comenzar la reproducción de la cinta.
9.3 Protocolo de comunicación Cliente-Servidor
Un tema de investigación fue la manera de comunicar las aplicaciones
IntegraFilm Server e IntegraFilm Client. Para esto se tuvo que evaluar los dos
protocolos más conocidos (por lo tanto mayormente documentados): TCP y UDP.
Ambos son protocolos de comunicación, que envían información de un puerto a
otro dentro de una red.
UDP (User Datagram Protocol) está basado en el intercambio de datagramas.
Permite el envío de éstos a través de la red sin que se haya establecido previamente
una conexión, ya que el propio datagrama incorpora suficiente información de
direccionamiento en su cabecera. Tampoco tiene confirmación, ni control de flujo, por
lo que los paquetes pueden adelantarse unos a otros; y tampoco se sabe si ha llegado
correctamente, ya que no hay confirmación de entrega o de recepción.
89
Este protocolo es utilizado en ocasiones en las que se debe transmitir mucha
información, no crítica. Al no realizar verificaciones de envío, la transmisión es rápida,
pero no asegura la correcta recepción.
TCP (Transmission Control Protocol) es uno de los protocolos de comunicación
fundamentales en Internet, orientado a conexión y caracterizado por su fiabilidad.
Añade las funciones necesarias para prestar un servicio que permita que la
comunicación entre dos sistemas se efectúe: libre de errores, sin pérdidas y con
seguridad.
Considerando lo anterior, si se analiza nuevamente qué información se está
enviando a los dispositivos, se resolverá que toda ella es crítica, pues, se debe
asegurar el envió de un correcto guión (sin la inclusión de basura o desordenes en sus
caracteres), se debe asegurar que todos los dispositivos comiencen efectivamente
cuando deben hacerlo, se debe ajustar el cronómetro cuando sea necesario, al igual
que pausarlo y reanudarlo. De igual manera, se debe recibir las respectivas
notificaciones por parte de los usuarios.
Es por esto que se decidió utilizar principalmente el protocolo TCP para todas las
comunicaciones entre los equipos, salvo el particular caso del MultiCast inicial, donde
si el cliente no recibe correctamente la dirección IP del servidor, puede esperar a
recibirla nuevamente.
90
10 CONCLUSIONES
Se desarrolló el sistema de integración de personas con discapacidad visual al
cine, llamado IntegraFilm. Este sistema se compone de tres aplicaciones: IntegraFilm
Client, IntegraFilm Server e IntegraFilm Web.
IntegraFilm Client es una aplicación para dispositivos móviles que lee en
tiempo real un guión de audio descripción durante la proyección de una película,
permitiendo al usuario no vidente configurar la cantidad de información que desee
recibir.
IntegraFilm Server es una aplicación que se ejecuta desde la cabina de
reproducción de la sala de cine y controla todos los programas que corren en los
dispositivos móviles. Les envía el guión y les da la instrucción para comenzar a
reproducirlo.
IntegraFilm Web es una aplicación que reúne todos los guiones descriptivos,
de donde los saca la aplicación Server para enviárselos a los dispositivos móviles.
También permite la publicación de nuevos guiones para cualquier usuario.
Para cumplir los objetivos propuestos en este trabajo fue indispensable contar
con el feedback constante de usuarios espectadores no videntes. Algunos de los
testimonios de estos usuarios, recogidos en las pruebas de usuario, son:
“Ojala se implemente este sistema para que muchos más ciegos se integren al cine”
“Me gustó el hecho de ser una descripción continua de todo lo que no se ve”
“¡Está súper bueno! ¡Quedé encantado!”
“Me gustó el concepto, que sea particular e individual”
“Lo encuentro súper bueno, ya que no dependo de otra persona para que me relate”
“Me gustó la claridad de la voz. Narraba en el minuto exacto en que ocurrían las
escenas, no como en AUDESC”
Si se consideran las opiniones de los mismos usuarios, resulta alentador ver
que se cumplen satisfactoriamente los objetivos de este trabajo de título: permitir una
mejor comprensión personal de la cinta, contribuyendo a la integración de personas
con discapacidad visual a la sociedad.
91
Estos resultados fueron tan convincentes y gratificantes para el autor que se
desea ir más allá con este proyecto, presentándolo a entidades externas en busca de
financiamiento para la adquisición de dispositivos Pocket PC y la licencia del
sintetizador (Acapela o Loquendo, dependiendo de los recursos disponibles).
10.1 Posibles mejoras futuras
Sin duda alguna la aplicación puede mejorarse, ampliar sus objetivos y permitir
una integración más masiva a distintas formas de expresión cultural, pues el hecho de
leer un texto en lugar de tener a un relator profesional y utilizar un computador y una
red inalámbrica (elementos cada vez más cotidianos) amortiza los costos de estas
iniciativas.
Con la experiencia adquirida durante el desarrollo e interacción con los
usuarios, surgieron iniciativas que podrían ser incorporadas en nuevas versiones del
sistema y que escapan al alcance inicial del proyecto, entre las que destacan:
10.1.1 Optimización de uso de red
El modelo seguido para comunicar la dirección IP del servidor a los clientes no
presenta un consumo óptimo de recursos de red, pues se encuentra enviando
paquetes de datos constantemente por la red con su dirección IP para que cuando un
cliente se suscriba al MultiCast, le llegue.
Una mejora considerable, discutida con Fernando Aguayo (profesional de C5)
sería cambiar este esquema, y que el servidor sea el que se suscriba al MultiCast,
luego el cliente enviaría un mensaje entregando su propia IP. Teniendo esta dirección,
el servidor puede ser el que establezca la comunicación con los clientes. De esta
manera, se enviarían solo los datos necesarios por la red.
Esta solución será necesaria cuando se desee expandir los alcances de
IntegraFilm y sea necesario enviar más información por la red.
92
10.1.2 Creación de guiones
Es posible mejorar la interfaz para la creación de guiones, descartando el
formalismo del código en las etiquetas.
Una alternativa a esto puede ser entregar herramientas para crear un guión
más atractivo gráfico y que ocultamente se construya el mismo guión, por ejemplo,
agregando el guión frase a frase, seleccionando el nivel y el tiempo desde una casilla
de selección.
Una mejora que implica mayor costo de desarrollo es realizar una cuarta
aplicación, que se ejecute en un dispositivo móvil y que permita realizar el guión en
línea, es decir, ejecutar esta aplicación junto con ver la película (por un guionista) e ir
insertando frases descriptivas en tiempo real, saltando la necesidad de indicar el
tiempo de lectura, pues sería el “tiempo actual”.
10.1.3 Comunidad de guionistas
Imitando modelos de las redes de contacto más famosas en la actualidad, se
podría proyectar el concepto de comunidad de guionistas, permitiendo crear usuarios,
relacionar guiones a ellos, entregar una página personalizada a cada usuario, y en
donde pueda mostrar sus aportes.
Es posible también abrir la comunidad y seguir el concepto de un wiki, eximiendo
así al usuario administrador. De esta manera la misma comunidad podría mantener
una Base de Datos de guiones limpia y amplia.
10.1.4 Multi Salas
El propósito de IntegraFilm es brindar el servicio de apoyo audio descriptivo al
espectador no vidente durante la proyección de una película en particular. A partir de
esto surge la iniciativa de integrar el sistema a cada sala de un cine donde se
proyecten cintas distintas independientes unas de otras.
Con la versión actual del sistema esto es factible solo si cada sala tiene su red
propia y con esto el alcance de la señal wifi de una sala esta delimitado estrictamente
a esa sala.
93
Se podría potenciar la aplicación para soportar multi servidores, incorporando
en la aplicación cliente una interfaz de selección de servidor, en donde se muestre
todos los servidores disponibles correspondientes a cada sala, permitiendo así decidir
a cual se desea conectar.
El problema de esta solución es que complicaría la interfaz de usuario y podría
resultar dificultoso para el espectador no vidente seleccionar el servidor deseado. Se
necesitaría de un ente externo que ayude a la configuración, pudiéndose prestar para
confusiones y errores (si se selecciona erróneamente el servidor se escucharía una
descripción de escenas de otra cinta).
Es por esto que se decidió, en esta primera etapa, considerar un único servidor
emitiendo instrucciones a los clientes.
10.1.5 Indicador de locaciones y personajes
Junto con el progreso del desarrollo del sistema, fueron creciendo las
expectativas de los usuarios no videntes, pues descubrían potencialidades nunca
antes experimentadas. Producto de esto surgió, por ejemplo, la nueva idea de
incorporar un botón en la interfaz cliente, que al presionarlo entregue en forma audible
la locación actual de la escena que está proyectando, y otro que entregue en forma
audible los personajes que hay en un momento específico.
Si bien es cierto, con el modelo actual, se puede incluir una frase al guión
descriptivo indicando cada cambio de locación (junto con los personajes involucrados),
hay oportunidades en las que el usuario pierde la capacidad de concentración y
necesita recordar estas variables relevantes para el seguimiento de la trama, como lo
son la localidad de la escena y los personajes involucrados en cada escena. Esto
resulta evidente para un usuario con visión.
Para lograrlo, sería necesario incorporar un nuevo elemento a la estructura del
guión, y modificar la aplicación cliente para considerar este nuevo elemento en el
procesamiento del guión recibido.
94
10.1.6 Análisis legal
Se recomienda un futuro análisis legislativo de los derechos de autor
vinculados con las películas utilizadas en las que se ejecuta IntegraFilm, de manera de
asegurar un correcto marco legal en la aplicación. Una defensa a favor de IntegraFilm
es que este sistema no modifica el material cinematográfico del creador, pues se
ejecuta independientemente de éste, no como es el caso de los subtítulos, en donde
se sabe [14] que si están penalizados.
En el caso de que la ejecución de IntegraFilm efectivamente esté penada por la ley,
existe una solución a corto plazo posible, y que se podría aplicar para el cine chileno:
solicitar una previa autorización al creador del material cinematográfico.
95
11 REFERENCIAS
[1] C Sharp Friends, [en línea] Window app – Adding value to Combo box item.
Administrador: plextoR
<http://www.csharpfriends.com/Forums/ShowPost.aspx?PostID=22165>
[consulta: 3 septiembre 2007]
[2] Empresa Aristía, [en línea] Definición de audio descripción
<http://www.audiodescripcion.com/definicion.html> [consulta: 13 de mayo 2007]
[3] Eriksson, Y. and Gärdenfors, D. (2004). Computer games for children with
visual impairments. Proceedings of The 5th International Conference on
Disability, virtual Reality and Associated Technologies, 20-23 September, 2004,
New College, Oxford, UK. Pp. 79-86
[4] Es lo Más, [en línea] Creación de hilos con parámetros en C#. Administrador:
Francisco Echarte
<http://www.eslomas.com/index.php/archives/2006/01/16/creacion-hilos-con-
parametros-csharp> [consulta: 28 octubre 2007]
[5] ForoMsn, [en línea] C# TCP/IP Aplicación Cliente – Servidor. Administrador:
Mig16 <http://www.foromsn.com/Version_Imprimible.php?Id=139962>
[consulta: 10 septiembre 2007]
[6] Fundación Telefónica Chile, [en línea]. Discapacitados visuales disfrutaron
una película en Fundación Telefónica
<http://telefonicachile.cl/fundacion/sala_de_prensa/02noviembre2005.htm>
[consulta: 21 de septiembre 2007]
[7] Kurniawan, S. H., Sporka, A., Nemec, V. and Slavik, P. (2004). Design and
user evaluation of a spatial audio system for blind users. In Proceedings of The
5th International Conference on Disability, virtual Reality and Associated
Technologies, 20-22 September, 2004, New College; Oxford, UK. Pp. 175-182
[8] Mastropieri, M., Scruggs, T. (1992). Science for students with disabilities.
Review of Educational Research, Vol. 62, No. 4 (Winter, 1992), pp. 377-411
[9] Sánchez, J., Flores, H. (2004). Memory enhancement through audio.
Proceeding of The Sixth Internacional ACM SIGACCESS Conference on
Computers and Accessibility, Assets 2004, Athlanta, Giorgia, USA, October 18-
20, pp. 24-31
[10] Sánchez, J., Galaz, I. (2005). Cuentos Interactivos Móviles a través de Audio
para Aprendices con Discapacidad Visual. En Sánchez, J. (editor). Nuevas
96
Ideas en Informática Educativa, pp. 101-106. Santiago de Chile: Lom Ediciones
S.A.
[11] Sánchez, j., Sáenz, M. (2006). 3D sound interactive environments for blind
children problem solving skills. Behavior & Information Technology, Vol. 25, No.
4, July – August 2006, pp. 367-378
[12] Sánchez, J., Sáenz, M. (2006). Assisting the Mobilization through Subway
Networks by Users with Visual Disabilities. Proceedings of the International
Conference Series on Disability, Virtual Reality and Associated Technologies,
ICDVRAT 2006. Esbjerg , Denmark , 18-20 September 2006, pp. 183-190
[13] Sánchez, J., Zuñiga, M. (2006). Evaluating the Interaction of Blind Learners
with Audio-Based Virtual Environments. Annual Review of CyberTherapy and
Telemedicine. Virtual Healing: Designing Reality. Volume 4, pp. 167-173
[14] Derecho y Nuevas Tecnologías, [en línea] Subtítulos de películas pueden
costar caros.
<http://www.derechonntt.com/?p=60> [consulta: 2 enero 2008]
97
12 ANEXOS
12.1 Encuesta realizada en pruebas de usuario
Encuesta de Satisfacción de usuarios de Software In tegraFilm
Le solicitamos que conteste el presente cuestionario considerando que la mayoría de las preguntas son de opinión (por lo que no existen respuestas correctas o incorrectas) y de carácter anónimo, donde sus respuestas serán consideradas sólo en forma agregada e impersonal. I. Relación con Text-to-Speech
1. Conocía el sistema text-to-speech? Sí No (Si responde no, pasar a pregunta II. 1)
2.Cuando usa text-to-speech?
3. Cuáles conoce?
II. Relación con Pocket PC
1. Había usado antes un pocket PC? Sí No
DIA Fecha
MES
SEXO Encuestado EDAD
Ceguera Congénita
Visión Años de ceguera
98
III. Relación con el Cine
1. Usted asiste al cine: Nunca o casi nuncaEsporádicamenteCasi siempre o siempre
2. Ha visto alguna película con audesc (audio descripcion)
Sí No (Si responde no, pasar a pregunta III. 5)
3. Qué es lo mejor de audesc?
4. Que es lo que menos le gusta de audesc?
5. Considera necesario escuchar una pista descriptiva de algunas escenas gráficas ?
IV. Relación Con Integrafilm
1. ¿Qué le gusto del software?
2. ¿Qué no le gusto del software?
3. ¿Qué le agregaría al software?
Para finalizar, ¿tiene usted algún comentario o sugerencia que hacer referente al tema que hemos estado hablando? ________________________________________________________ ________________________________________________________ Muchas gracias por su tiempo y su colaboración
99
12.2 Ejemplo de Guión descriptivo
A continuación se muestra el guión elaborado para la segunda prueba de usuarios,
correspondiente al segundo capítulo (“El buen camino”) de la primera temporada de la
serie CSI :
<movie> <moviename>Ce, Ese, I. Capìtulo 2: El buen camino< /moviename> <p nivel=2 start=00:01:41> Vista panorámica de Las Vegas </p> <p nivel=1 start=00:02:05> Casino de las Vegas </p> <p nivel=2 start=00:02:50> La pareja juega en una máquina tragamonedas </p> <p nivel=2 start=00:03:43> el guardia abre la habitación con una tarjeta </p> <p nivel=1 start=00:04:12> afuera del hotel </p> <p nivel=1 start=00:05:33> Presentación de la serie </p> <p nivel=1 start=00:06:03> Grisom llega al laboratorio </p> <p nivel=2 start=00:07:21> Los criminalistas miran las noticias en una sala de l laboratorio </p> <p nivel=2 start=00:08:12> Grisom ingresa a la sala </p> <p nivel=2 start=00:09:53> Caterin se retira de la sala </p> <p nivel=2 start=00:10:04> Nic se retira de la sala </p> <p nivel=1 start=00:10:35> Caterin llega a la escena del crimen </p>
100
<p nivel=2 start=00:11:07> Caterin continúa en el lugar del crimen </p> <p nivel=2 start=00:11:27> Encuentra un bíper </p> <p nivel=1 start=00:11:47> Grisom y nic en la morgue </p> <p nivel=1 start=00:12:15> en la habitación del hotel </p> <p nivel=1 start=00:13:50> en la oficina de investigación </p> <p nivel=2 start=00:14:49> en la sala de al lado </p> <p nivel=1 start=00:15:20> en el techo del hotel </p> <p nivel=2 start=00:15:50> simulan la caída con 3 muñecos </p> <p nivel=1 start=00:16:07> en la calle afuera del hotel </p> <p nivel=2 start=00:17:03> en un estacionamiento subterráneo </p> <p nivel=2 start=00:17:37> en el laboratorio </p> <p nivel=1 start=00:19:03> sala de cámaras del casino </p> <p nivel=2 start=00:20:07> en el laboratorio </p> <p nivel=2 start=00:21:25> en el casino </p> <p nivel=2 start=00:22:30> en el salón diamante azul </p>
101
<p nivel=2 start=00:22:44> van a un café </p> <p nivel=1 start=00:24:12> cada criminalista piensa en Joli </p> <p nivel=2 start=00:24:56> en el laboratorio </p> <p nivel=1 start=00:26:28> interrogan al sospechoso que encuentran con las cám aras </p> <p nivel=1 start=00:29:47> en el motel tres ases </p> <p nivel=2 start=00:30:50> guorric visita al extorsionador </p> <p nivel=2 start=00:31:31> en la morgue </p> <p nivel=2 start=00:32:38> toma la muestra de a, de, ene </p> <p nivel=1 start=00:33:01> en el laboratorio analizan los zapatos de la víctim a </p> <p nivel=2 start=00:33:50> analizan más evidencias </p> <p nivel=1 start=00:34:23> en la morgue </p> <p nivel=2 start=00:34:56> en la sala de descanso </p> <p nivel=2 start=00:36:45> Nic analiza la fibra de alfombra </p> <p nivel=1 start=00:37:00> en la habitación del hotel </p> <p nivel=1 start=00:37:16> grisom busca evidencia por toda la habitación </p>
102
<p nivel=1 start=00:38:38> prueba el cerrojo magnético de la puerta </p> <p nivel=2 start=00:39:03> interrogan a la novia </p> <p nivel=2 start=00:41:00> en el pasillo </p> <p nivel=1 start=00:43:02> llevan a prisión al asesino de Joli </p> </movie>