REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

35
REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE TWITTER Proyecto de Grado Pasantía JUAN CARLOS SAMBONÍ RAMÍREZ 0934647 [email protected] Carlos A. Castillo Ingeniero de Sistemas [email protected] Oscar Bedoya Magister [email protected] Facultad de Ingeniería Escuela de Ingeniería de Sistemas y Computación Programa Académico de Ingeniería de Sistemas Cali, Junio 08 de 2012

Transcript of REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Page 1: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE TWITTER Proyecto de Grado

Pasantía

JUAN CARLOS SAMBONÍ RAMÍREZ 0934647

[email protected]

Carlos A. Castillo Ingeniero de Sistemas

[email protected]

Oscar Bedoya Magister

[email protected]

Facultad de Ingeniería Escuela de Ingeniería de Sistemas y Computación Programa Académico de Ingeniería de Sistemas

Cali, Junio 08 de 2012

Page 2: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

TABLA DE CONTENIDO

CONTENIDO

RESUMEN 4

CAPÍTULO 1 5 1.1 INTRODUCCIÓN 5 1.2 PLANTEAMIENTO DEL PROBLEMA 5 1.3 OBJETIVOS 6 1.3.1 OBJETIVO GENERAL 6 1.3.2 OBJETIVOS ESPECÍFICOS 6

CAPÍTULO 2 ANTECEDENTES 7 2.1 TWITTER 7 2.2 ECHOFON 8 2.3 TWEETDECK 9 2.4 LOQUENDO TTS DIRECTOR 10 2.5 IVONA WEB READER 10

CAPÍTULO 3 MARCO TEÓRICO 12 3.2 PROCESAMIENTO Y REPRODUCCIÓN DE TEXTO 12 3.1.1 TEXT-TO-SPEECH 12 3.1.2 LOQUENDO SDK 12 3.1.3 ACAPELLA TTS 12 3.2 TECNOLOGÍAS PARA APLICACIONES MÓVILES 13 3.2.1 TWITTER API 13 3.2.2 OBJECTIVE C 13 3.2.3 MGTWITTERENGINE 13 3.2.4 XCODE 13 3.2.5 IOS SDK 13 3.2.6 LIBRERÍAS OBJECTIVE C 14

CAPÍTULO 4 DESARROLLO 18 4.1 MÓDULO DE AUTENTICACIÓN 18 4.2 MÓDULO VISOR DE TWEETS 20 4.3 MÓDULO DE GESTIÓN DE LISTAS 23 4.4 MÓDULO DE CONFIGURACIÓN DE VOCES 25 3.5 MÓDULO DE AGREGACIÓN DE AMIGOS 25 4.6 MÓDULO DE REPRODUCCIÓN DE VOZ 27 4.7 PUBLICACIÓN EN LA APPSTORE 28

CAPÍTULO 5 REPORTE DE PRUEBAS 30 5.2 IDENTIFICACIÓN DEL SOFTWARE 30 5.1 VISIÓN GENERAL 30 5.3 RECURSOS 30

Page 3: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

5.3.1 PERSONAS 30 5.3.2 AMBIENTE 30 5.4 PRUEBAS 31 5.4.1 METODOLOGÍA 31 5.4.2 PRUEBAS REALIZADAS 31 5.4.3 PRUEBAS NO REALIZADAS 31 5.5 PROBLEMAS ENCONTRADOS 32 5.5.1 PROBLEMAS PENDIENTES 32 5.5.2 PROBLEMAS APLAZADOS PARA FUTURAS VERSIONES 32

CONCLUSIONES 33 6.1 TRABAJO FUTURO 33

REFERENCIAS 35

Page 4: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

RESUMEN La telefonía móvil es un fenómeno que se empezó a hacer evidente hace no más de 10 de años. La idea de llevar una línea telefónica a todas partes tuvo desde luego gran acogida y fue creciendo exponencialmente. El hecho de poder comunicarse desde cualquier sitio con otra persona fue bastante atractivo para los usuarios; un número telefónico que daba pertenencia y ofrecía un nivel más de personalización en cuanto a artículos cotidianos. Hoy en día se puede ver cómo esta clara aceptación por parte de las personas se masificó y es parte del diario vivir de ellas. En sus inicios la función de la telefonía móvil era por supuesto lograr una comunicación entre dos partes, pero con la llegada masiva de internet surgió la necesidad de que el teléfono móvil dejara de ser tan solo para hablar con alguien más. Con el arribo del internet a los hogares surgió un nuevo fenómeno llamado redes sociales. Portales usados para que la gente pudiera compartir mensajes, estados, fotos, videos, etc., con su red de amigos. Una propuesta bastante llamativa para quienes no todo el tiempo pueden verse o por razones de distancia les cuesta comunicarse. Entre las más famosas y recientemente más utilizadas está Facebook lanzada en 2004, que entre sus funciones más comunes está la de compartir contenido multimedia con los amigos que hayan sido previamente agregados. Dos años más tarde surgiría Twitter con una filosofía un poco diferente. Se basa en la publicación de estados o mensajes que pueden ser vistos por la red de amigos que estén vinculados a la cuenta que comparten. Mucho más simple que Facebook pero con un objetivo claro, poder compartir estados, noticias, etc., de una manera rápida a toda la red social relacionada con el usuario. En este trabajo de grado se propone una aplicación móvil para la captura del texto de los Tweets y leerlos por medio de un sintetizador de voz. Con esta aplicación para iPhone se trata de dar otro nivel de accesibilidad a las redes sociales, más específicamente, Twitter. Este desarrollo, TweetFM (como se llamará la aplicación en adelante) permitirá a los usuarios escuchar toda su línea de tiempo o cronología de Tweets disponibles en su cuenta de Twitter. TweetFM se basa en módulos de Text-to-Speech que cada vez son más comunes en los sistemas que se usan actualmente. El objetivo de esta aplicación es otorgar una mayor facilidad a la hora de querer enterarse de todas las actualizaciones que van sucediendo en la cuenta del usuario y pasar esta tarea a un segundo plano permitiendo la ejecución simultánea de otra tarea en la cotidianidad de las personas.

Page 5: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

CAPÍTULO 1

1.1 Introducción La telefonía móvil es un fenómeno que se empezó a hacer evidente hace no más de 10 de años. La idea de llevar una línea telefónica a todas partes tuvo desde luego gran acogida y fue creciendo exponencialmente. El hecho de poder comunicarse desde cualquier sitio con otra persona fue bastante atractivo para los usuarios; un número telefónico que daba pertenencia y ofrecía un nivel más de personalización en cuanto a artículos cotidianos. Hoy en día se puede ver cómo esta clara aceptación por parte de las personas se masificó y es parte del diario vivir de ellas. En sus inicios la función de la telefonía móvil era por supuesto lograr una comunicación entre dos partes, pero con la llegada masiva de internet surgió la necesidad de que el teléfono móvil dejara de ser tan solo para hablar con alguien más. Con el arribo del internet a los hogares surgió un nuevo fenómeno llamado redes sociales. Portales usados para que la gente pudiera compartir mensajes, estados, fotos, videos, etc., con su red de amigos. Una propuesta bastante llamativa para quienes no todo el tiempo pueden verse o por razones de distancia les cuesta comunicarse. Entre las más famosas y recientemente más utilizadas está Facebook lanzada en 2004, que entre sus funciones más comunes está la de compartir contenido multimedia con los amigos que hayan sido previamente agregados. Dos años más tarde surgiría Twitter con una filosofía un poco diferente. Se basa en la publicación de estados o mensajes que pueden ser vistos por la red de amigos que estén vinculados a la cuenta que comparten. Mucho más simple que Facebook pero con un objetivo claro, poder compartir estados, noticias, etc., de una manera rápida a toda la red social relacionada con el usuario.

1.2 Planteamiento del Problema En los últimos años se ha incrementado el deseo de los usuarios de tener mayor acceso a las redes sociales. A medida que los teléfonos celulares han aumentado sus capacidades se ha hecho más viable la posibilidad de llevarles a los usuarios la oportunidad de tener su perfil social de internet en su bolsillo. Entre las redes sociales más comunes a las que acceden los usuarios está Twitter. Esta red social se basa en la publicación de Tweets, que son mensajes o estados de no más de 140 caracteres para que los usuarios expresen o compartan información, ya sean noticias, estados de ánimo, etc. Su gran aceptación fue debida a su sencillez, rapidez y facilidad al momento de compartir información. A pesar de tener mayor facilidad de acceso a la red social Twitter, los usuarios suelen perder tiempo revisando sus últimas actualizaciones; tiempo que podrían estar usando para alguna actividad de su cotidianidad, debido a que requieren tener el teléfono celular en sus manos y de cierta forma desconectarse de su entorno hasta haber logrado terminar la tarea. Con más de 200 millones de usuarios registrados es evidente el gusto que tienen las personas hacia esta red social, tanto como para pasar hasta 10.7 horas en promedio al día en la república de Israel, el país donde los usuarios pasan más tiempo en esta red

Page 6: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

social, mientras que Colombia se sitúa unos puestos más abajo con un uso de 7 horas diarias en promedio. El problema particular a tratar en esta tesis es la pérdida del tiempo invertido por un usuario leyendo la cronología de mensajes de su cuenta de Twitter siendo ésta una actividad que se puede realizar en simultáneo con otra tarea cotidiana. Para intentar dar solución al problema planteado, se propone el desarrollo de una aplicación móvil para la reproducción en voz de los mensajes en la cronología de una cuenta de Twitter. Con la aplicación móvil a desarrollar, llamada TweetFM, se espera que un usuario ahorre tiempo y pueda realizar otras tareas en simultáneo.

1.3 Objetivos

1.3.1 Objetivo General Desarrollar una aplicación móvil para la reproducción en voz de los mensajes en la cronología de una cuenta de Twitter.

1.3.2 Objetivos Específicos ● Integrar un módulo para el procesamiento del texto de los Tweets.

● Desarrollar un módulo de configuración para la personalización de voces.

● Desarrollar un módulo de visualización de la cronología de una cuenta de Twitter.

● Desarrollar un control de reproducción para la lectura de la cronología.

Page 7: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

CAPÍTULO 2

ANTECEDENTES En este capítulo se presenta un estado del arte de algunas de las herramientas relacionadas con la red social Twitter y de programas que permiten hacer sintetización de voz, aspectos relacionados con el desarrollo de este trabajo de grado. Actualmente algunas aplicaciones permiten revisar la cronología de mensajes en forma de texto, enviar un mensaje, reenviar algún mensaje hecho por otro usuario, seguir nuevos usuarios y demás funcionalidades en la red social Twitter.

2.1 Twitter Twitter es una aplicación diseñada por la red social del mismo nombre para dispositivos móviles. Esta aplicación permite desde los teléfonos celulares usar las funcionalidades que Twitter ofrece tales como lectura de tweets en la cronología, creación y eliminación de listas, seguimiento de amigos, actualización del estado del usuario en cualquier momento, etc. La aplicación está disponible para Android, iOS y iPad y es de carácter gratuito [1].

Figura 1. Cronología de mensajes en Twitter.

En la Figura 1 se representa una captura de pantalla de la ejecución de Twitter. Se presenta una interfaz inicial que consiste de una barra de navegación en la parte superior que muestra el nombre de la cuenta activa en ese momento, una tabla para la

Page 8: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

visualización de los Tweets y una barra de pestañas donde se puede escoger entre ver la cronología o ver las menciones que se han hecho del usuario. Esta aplicación está hecha en Objective C y según se ve en la Figura 1 no usa la barra inferior de pestañas que provee Xcode en su entorno de desarrollo por defecto. Esta barra ha sido personalizada de acuerdo a las necesidades iniciales de la aplicación. El manejo de listas para guardar cuentas favoritas es sencillo de manejar aunque la navegación general de la aplicación sea algo confusa incluso para quienes ya llevan algo de tiempo usándola.

2.2 Echofon Esta aplicación incluye mejoras de sincronización entre dispositivos y algunas funcionalidades que hacen que su uso sea más cómodo a comparación de Twitter, además de ser gratuita. Echofon en su versión móvil solo está disponible para iOS. La mayor diferencia que tiene con Twitter es la posibilidad de ver los Tweets en tiempo real. Los Tweets son mostrados en pantalla a medida que van llegando automáticamente. En Twitter se debe arrastrar la tabla hacia abajo para que la aplicación verifique si han llegado nuevos Tweets y si es así entonces procederá a mostrarlos en pantalla.

Figura 2. Pantalla principal de Echofon con la visualización de la cronología.

En la Figura 2 se muestra la vista inicial de Echofon. Lo primero que resalta es la inclusión de publicidad en la aplicación, causando una contaminación al diseño base. El hecho de incluir un subtítulo debajo de cada imagen en la barra de pestañas en la parte inferior, ayuda de cierta forma al usuario a estar más ubicado en lo que a navegación se refiere. Comparándolo con la interfaz anteriormente mostrada de Twitter, ambas poseen el botón

Page 9: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

que permite al usuario escribir su Tweet en la barra de navegación en la parte superior derecha [2]. Para Enero de 2011 se habían registrado más de 3 millones de descargas. Una cifra considerable cuando de aplicaciones móviles se trata. A la fecha no hay un dato oficial de cuántos usuarios poseen la aplicación de Twitter para iPhone, así que es difícil una comparación entre estas aplicaciones.

2.3 TweetDeck TweetDeck también hace parte de esta familia de acceso a la red social Twitter. Esta aplicación tiene un diseño mejorado que lo hace más atractivo al usuario. Agrega más funcionalidades en la navegación y personalización de la cuenta con respecto a las dos soluciones antes mencionadas. También es de carácter gratuito y fue tan bien recibida que a medida que iba ganando mercado y se iba mejorando, la red social Twitter consideró su compra, y así fue como efectivamente en el mes de mayo de 2011 Twitter se hizo con TweetDeck. Esta solución no solo está para iOS, sino que también puede ser instalada como plug-in en Mozilla Firefox [3].

Figura 3. Pantalla de "menciones" en TweetDeck.

En la Figura 3 se muestra una captura de pantalla de TweetDeck. Se puede ver un diseño totalmente renovado y diferente de Echofon y Twitter. Su innovación está en el apartado de navegación permitiendo un acceso más rápido y sencillo. Por lo demás no tiene mejoras funcionales notables, pero tomando en cuenta que las funciones están realmente

Page 10: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

limitadas a lo que la red social Twitter ofrezca, el verdadero objetivo se enfoca en su usabilidad y en cómo mejorar la experiencia del usuario.

2.4 Loquendo TTS Director Loquendo TTS Director es un software sintetizador de voz de pago que integra un módulo de Text-to-Speech creado por la misma empresa para ofrecer al usuario la posibilidad de convertir cualquier texto a voz por medio de los módulos de TTS que el software incluye. Con más de 30 idiomas y más de 70 voces debidamente trabajadas para lograr un alto grado de naturalidad en sus discursos, este software permite posteriormente exportar el discurso en un archivo de audio para ser reproducido en cualquier reproductor de audio [4].

Figura 4. Pantalla de personalización en la construcción de frases en Loquendo TTS

Director.

Como se puede ver en Figura 4 se puede apreciar que la aplicación consiste en copiar un texto en el área de texto y de ahí puede ser reproducido por una de las voces del sintetizador. También se ve cómo permite la personalización de la voz para lograr frases más naturales a la hora de dar el discurso.

2.5 IVONA Web Reader IVONA Web Reader es una aplicación desarrollada por la compañía IVONA para la lectura de textos en la web. Esta aplicación tiene su propio módulo de Text-to-Speech. IVONA Web Reader presenta un pequeño reproductor que al abrir las páginas queda embebido en ellas y de esta forma el usuario puede iniciar con la reproducción en voz de los textos que aparezcan en la página web que está visitando en ese momento [5].

Page 11: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Figura 5. Configuración del reproductor embebido de IVONA Web Reader.

En la Figura 5 se ve la forma de configurar el reproductor que luego será puesto en la página web que el usuario visite durante su navegación para darle control sobre el contenido que será posteriormente leído. Esta aplicación no es de carácter gratuito.

Page 12: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

CAPÍTULO 3

MARCO TEÓRICO En este capítulo se presenta un marco teórico básico que trata algunos de los temas relacionados en este trabajo de grado.

3.2 PROCESAMIENTO Y REPRODUCCIÓN DE TEXTO

3.1.1 TEXT-TO-SPEECH Esta es una tecnología que poco a poco ha ido ganando más terreno en los sistemas usados hoy en día. Text-to-Speech es el proceso por el cual el texto puede ser convertido en un discurso hablado por una producción de voz artificial. Esta tecnología de accesibilidad permite a usuarios con fallas oculares, escuchar lo que hay en pantalla y en general ayuda a dar una respuesta más interactiva a los usuarios de algún sistema en particular. Se crea a partir de concatenaciones de discursos grabados previamente para luego dar la sensación de que realmente habla. Actualmente resulta difícil lograr una voz humana y ese es el objetivo de estos módulos. A pesar de haber soluciones muy buenas, siempre es notoria la pérdida de humanidad al pronunciar las frases [6]. Entre las librerías más comunes para el desarrollo de aplicaciones con módulos de Text-to-Speech se tienen los SDK de Loquendo y Acapella.

3.1.2 LOQUENDO SDK Loquendo SDK provee librerías para el procesamiento de texto en aplicaciones de distintas plataformas. Es un SDK de pago pero posee todas las voces que se ofrecen en su software. Al integrar este SDK se pueden generar muchos tipos de soluciones de accesibilidad que ayudan a los usuarios a mejorar la experiencia con el software convencional [7].

3.1.3 ACAPELLA TTS Acapella TTS son librerías de desarrollo para iPhone y iPad diseñadas también para ser integradas en soluciones, en este caso en dispositivos móviles, que cuentan con 22 lenguajes y 44 voces en total. Posee una naturalidad considerable al momento de iniciar los discursos y es de una alta calidad de audio. Gracias a la API de alto nivel escrita en Objective C, se hace sencilla su integración en la aplicación [8]. Esta librería fue la usada en el desarrollo de TweetFM.

Page 13: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

3.2 TECNOLOGÍAS PARA APLICACIONES MÓVILES

3.2.1 TWITTER API La API de Twitter fue puesta oficialmente por la red social para el desarrollo de Motores que funcionen bajo los distintos lenguajes de programación. A diferencia de Facebook que provee los SDK’s para las distintas plataformas, Twitter tan solo deja a disposición el manejo de conexiones web para la realización de las distintas funciones y es gracias a terceros que existen motores listos para ser usados en las distintas plataformas de desarrollo [9].

3.2.2 OBJECTIVE C Objective C es un lenguaje de programación creado tomando como base a C pero orientado a objetos. Creado en 1980 y posteriormente liberado para el compilador GCC, este lenguaje actualmente es usado como lenguaje primario para las librerías de Cocoa en Mac OS X. Es de carácter obligatorio el uso de este lenguaje si el deseo es programar bajo el sistema operativo iOS [10]. Twitter, Echofon y TweetDeck han sido desarrollados bajo este lenguaje. Esto da una idea de qué es posible hacer en esta plataforma y de qué manera ha sido hecho para así poder tomar referencias que puedan ser adaptadas a la aplicación de este trabajo de grado.

3.2.3 MGTWITTERENGINE MGTwitterEngine es un motor hecho en objective C para su uso en iOS que permite la interacción con la API de Twitter para el envío y recibimiento de información. Integrando este motor en la aplicación móvil, es posible usar las funcionalidades que la red social permite en su página web como lo son el envío de Tweets, lectura de Tweets, creación de listas, etc. No es oficial de Twitter, es un proyecto independiente que se ha dejado libre al público para integración y posterior modificación si la necesidad lo amerita. [11]

3.2.4 XCODE Xcode es un entorno de desarrollo (IDE) hecho por Apple para el desarrollo de aplicaciones bajo el sistema operativo Mac OS X y iOS. Actualmente en su versión 4.0, posee todas las herramientas necesarias para un desarrollo robusto de aplicaciones para cualquiera que sea la plataforma a la que va dirigida. Gracias a su auto-completación en su editor de textos, hace que la codificación sea más fluida y sencilla, además de agradable para quienes se aventuran por primera vez a programar en Objective C. [12]

3.2.5 iOS SDK iOS SDK es el kit de desarrollo puesto a disposición por Apple para el desarrollo de aplicaciones nativas para dispositivos iOS. Inicialmente llamado iPhone SDK, fue liberado en 2008 para ser usado por las empresas desarrolladoras y así hacer aplicaciones para iPhone y iPod. Con la llegada del iPad su nombre pasó a ser iOS SDK como obvia referencia al sistema operativo al que iba destinado mas que a su dispositivo original.[13]

Page 14: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

3.2.6 LIBRERÍAS OBJECTIVE C Para el desarrollo de TweetFM se usaron muchas de las distintas librerías que ofrece Objective C para llevar a cabo diferentes tareas. Entre las más comunes que se usaron en TweetFM fueron:

• UIView Class: Define un área rectangular en la pantalla para manejar contenido en este lugar.

Figura 6. UIView como contenedor de elementos gráficos

En la Figura 6 se ve un ejemplo de la Clase UIView conteniendo en su interior elementos gráficos como una tabla, un banner de publicidad y una barra de búsqueda.

• UITableView Class: Una instancia de esta clase es un medio para visualizar y

editar listas jerárquicas de información.

Page 15: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Figura 7. Ejemplo de UITableView en la aplicación TweetDeck

Se puede ver en la Figura 7 un ejemplo de UITableView utilizando 3 de sus propiedades, una imagen, un título y un subtítulo para cada celda.

• UILabel Class: Implementa una vista de texto de solo lectura.

Figura 8. Ejemplo de UILabel en la aplicación movistar CO[14]

En la Figura 8 se pueden ver dos UILabels personalizados adheridos a un UIView. Estos UILabels han sido modificados de acuerdo a las posibilidades que ofrecen las propiedades de la Clase UILabel como el color del texto y la fuente, además del color de fondo, blanco o transparente en este caso.

• UIButton Class: Una instancia de esta clase implementa un botón en la pantalla

táctil.

Page 16: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Figura 9. Ejemplo de UIButton en la aplicación de movistar CO

En la Figura 9 se pueden ver dos UIButton contenidos en un UIView que han sido personalizados gracias a las propiedades de la Clase UIButton. Estas propiedades permiten entre otras cambiar la imagen de fondo, la fuente del texto y el color.

• UINavigationBar Class: Implementa un control una navegación jerárquica de

contenido.

Figura 10. Ejemplo de una UINavigationBar en la aplicación movistar CO

En la Figura 10 se puede ver una UINavigationBar que ha sido personalizada en su color y en su título para ajustarse al tema general de la aplicación. Por defecto esta barra muestra un botón de “Atrás” cuando la vista actual tiene una vista padre.

• UIPickerView Class: Esta clase implementa un selector similar al de las máquinas de azar para mostrar uno o más conjuntos de valores. Uno de los casos más

Page 17: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

comunes dónde se ve este selector es a la hora de seleccionar fechas debido a su rapidez y simpleza.

• UIToolBar Class: Es un control que permite mostrar uno o más botones llamados

toolbar ítems.

Figura 11. Ejemplo de una UIToolBar

En la Figura 11 se puede ver una UIToolBar estándar implementada en la aplicación de Fotos del iPod/iPhone a la que se le pueden agregar elementos UIToolBarButtonItem para realizar acciones.

• UIToolBarButtonItem Class: Es un botón especializado para colocar sobre una

UIToolBar o una UINavigationBar.

En la Figura 11 se pueden ver los elementos que contiene la UIToolBar para ejecutar las acciones de “compartir”, “iniciar presentación” y “eliminar”.

Page 18: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

CAPÍTULO 4

DESARROLLO La arquitectura general de la aplicación TweetFm se presenta en la Figura 12 que muestra de qué manera se utilizaron los módulos que fueron ya sea integrados o implementados. De los 7 módulos que se presentan en la arquitectura, 5 fueron implementados por completo. Los módulos MGTwitterEngine y iSpeech fueron integrados a TweetFM. A continuación se describe cada uno de los módulos.

Figura 12. Arquitectura general de TweetFM.

4.1 MÓDULO DE AUTENTICACIÓN El primer módulo que se desarrolló fue el de autenticación. Este módulo tiene como función principal validar las credenciales de la cuenta de Twitter a la que se quiere ingresar. En caso de haber un fallo con la autenticación ya sea del motor o de los servidores de Twitter, se alertará al usuario. Este módulo a su vez permite el almacenamiento automático de la credencial de la última cuenta ingresada para de esta forma iniciar automáticamente la siguiente vez que se ingrese a la aplicación. En la Figura

Page 19: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

13 se muestra una captura de pantalla del diseño final del módulo descrito en esta sección.

Figura 13. Módulo de autenticación de TweetFM.

Este es el primer módulo que usa el motor de Twitter que le permite comunicarse con la red social para traer información, en este caso para validar la autenticidad de los datos de ingreso. Este módulo se compone de un UIView que ocupa toda la pantalla al cual se le agregaron un UILabel para el título “Twitter Account Details”, dos UITextField para recibir los datos de Usuario y Contraseña, y finalmente un UIButton con título “Log In” para completar la acción de autenticación. Por medio del motor se construye la petición y este la interpreta a la sintaxis del API de Twitter para luego completar la petición y esperar respuesta de la red social. El motor procesa cualquiera que sea la respuesta y se la da al módulo para su procesamiento. En caso de ser negativa, se le notificará al usuario del posible problema de que ha ocurrido. Estos errores en su mayoría están tipificados por el API de Twitter. De ser afirmativa se procederá a dar paso al siguiente módulo. En la Figura 14 se presentan los elementos que intervienen en el proceso de autenticación. El motor MGTwitterEngine se encarga de interpretar las peticiones convirtiéndolas a una sintaxis entendible por el API de Twitter, en este caso se le pide la verificación de los datos ingresados por el usuario.

Page 20: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Figura 14. Proceso de autenticación de TweetFM.

4.2 MÓDULO VISOR DE TWEETS El siguiente módulo que presenta la aplicación TweetFM es el visor de tweets. Inicialmente este módulo mostrará el Timeline o Cronología de la cuenta de Twitter del usuario y posteriormente por interacción del usuario, se podrán ver los tweets de otras listas. El visor de tweets se compone de una tabla cuyas celdas están pobladas por los textos de los tweets de la lista a la que pertenecen. La celda permite resaltar los enlaces, los hashtags y los usuarios que estén dentro del texto para hacerlos sensibles al toque y desplegar el navegador interno de la aplicación para mostrar la ampliación de la información. Para actualizar los tweets se debe arrastrar la lista hacia abajo hasta que se vea el mensaje que indica que suelte la tabla para que se actualicen los tweets. Para ver tweets antiguos se debe bajar y automáticamente se irán cargando los tweets anteriores. En la Figura 15 se muestra una captura de pantalla del visor de tweets. Como se puede ver, aparece la cronología o timeline del usuario con los tweets más recientes y cada uno de estos se muestra con las características descritas anteriormente.

Page 21: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Figura 15. Visor de tweets incluyendo el reproductor.

De forma más específica este módulo se compone principalmente de una UITableView y cada una de sus celdas se compone de UILabels para la visualización del autor del tweet y del momento en que fue enviado. Para la visualización del texto como tal se usó una librería externa llamada FancyLabels que permite resaltar los enlaces encontrados, los hashtags y las menciones. Finalmente tiene agregado un UIButton que permite activar la reproducción en voz del texto que contiene esa celda. En la Figura 16 se muestra la interacción de los componentes necesarios para la actualización de tweets. Al arrastrar la tabla hacia abajo estando en el tweet más reciente, se mostrará un mensaje que indica al usuario que debe soltar la tabla para comenzar el proceso de actualización. Similar al módulo de autenticación, se construye la petición y MGTwitterEngine se comunica con el API de twitter. En este caso se reciben los nuevos tweets como respuesta.

Page 22: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Figura 16. Petición de nuevos tweets para actualizar la tabla.

En TweetFM se puede cambiar en cualquier momento la lista que se está visualizando y así escuchar tweets asociados a una diferente. Para esto se agregó un UIButton a la UINavigationBar con la función de mostrar en pantalla un UIPickerView para lograr la funcionalidad de selección para el usuario. La funcionalidad interna es exacta a la anterior a la hora de pedir los tweets ya sea del timeline o de las listas. En la Figura 17 se muestra el selector de listas que se sobrepone al visor de tweets para así escoger una y finalmente presionar “done”.

Page 23: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Figura 17. Cambio de lista para visualización de tweets.

4.3 MÓDULO DE GESTIÓN DE LISTAS El módulo de listas permite la gestión de las todas las listas que existan en la cuenta del usuario. Desde este módulo se pueden crear, eliminar y actualizar las listas asociadas al usuario. De aquí se puede elegir la lista que se quiera configurar. Para la creación de listas, TweetFM le permite al usuario introducir como parámetros el nombre y la descripción de la nueva lista. Al igual que el módulo de visualización de tweets, este se compone de una UITableView pero menos personalizada. Se utilizaron las propiedades básicas de la tabla para la personalización de las celdas. Para las funciones de actualizar y crear se usó un UIToolBar en la parte inferior que se compone de dos UIToolBarItem con las funciones indicadas. La UINavigationBar en la parte superior contiene el botón de regresar en la parte izquierda y un botón en la parte derecha que activa la función de edición de la UITableView. Esto permite la eliminación de las listas. En las Figuras 18 y 19 se muestra una captura de pantalla del módulo de listas. Se ve la tabla en modo normal y en modo de edición que permite la eliminación de las listas. Todo esto además de los elementos anteriormente descritos.

Page 24: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Figura 18. Vista de gestión de listas

Figura 19. Vista de gestión de lista (modo de edición)

Page 25: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

4.4 MÓDULO DE CONFIGURACIÓN DE VOCES En el módulo de configuración de voces se pueden encontrar todos los amigos que pertenezcan a esa lista. Por defecto todos tendrán una voz que puede ser inmediatamente cambiada. Estos cambios serán persistentes. Aquí puede elegir entre los distintos idiomas que hay disponibles gracias a la librería de iSpeech. También se pueden eliminar amigos que ya no se requieran en la lista y/o posteriormente agregar otros. Este módulo es similar al de la listas pero se utiliza una mayor personalización en las celdas. Al igual que en el módulo de listas, este se encarga de la gestión de amigos también. A diferencia del módulo anterior, la función de agregar amigos debe desplegar un módulo aparte debido al nivel de complejidad que se requiere. Para la elección de voces se usa un UIPickerView igual al de las listas en el visor de tweets. En la Figura 20 se muestra una captura del módulo momentos antes de configurar una voz. Se puede ver el selector de voces mostrando todas las opciones a elegir. Luego este cambio se verá reflejado en la celda que se estaba configurando.

Figura 20. Vista de configuración de voces para las listas

3.5 MÓDULO DE AGREGACIÓN DE AMIGOS En el módulo de agregar amigos se listan de 100 en 100 todos los amigos que el usuario sigue. Desde aquí basta con dar un clic y agregarlo a la lista que se está configurando en ese momento. Este módulo, como fue explicado anteriormente, es requerido para completar la función de agregar amigos que se encuentra en el módulo de configuración

Page 26: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

de voces. Se compone principalmente de una UITableView personalizada para la correcta visualización de la información, UILabels para el nombre del amigo y el estado del amigo en las listas. Al entrar a este módulo se verifica internamente quién está agregado y quién no a la lista que se esté configurando en ese momento. Al presionar sobre una celda de un amigo no agregado se desplegará una alerta -UIAlertView- confirmando la acción. De ser positiva por parte del usuario se iniciará el proceso de agregación del amigo seleccionado. En la Figura 21 se puede ver como es la alerta de confirmación al momento de agregar un amigo escogido de la tabla.

Figura 21. Módulo de agregar amigos antes de ingresar uno de estos en una lista

En la Figura 22 se puede apreciar mejor este proceso. Al presionar sobre la opción positiva en la alerta se crea la petición por medio del MGTwitterEngine, en este caso la de agregar un amigo. La respuesta que devuelve el API de Twitter es positiva o negativa según sea el caso. Si la respuesta que devuelve el API es positiva, lo que indica que se agregó satisfactoriamente, se procederá a actualizar la lista en el módulo de configuración de voces para que sean efectivos los cambios y el estado del amigo en el módulo de agregación pasará a ser “agregado”.

Page 27: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Figura 22. Proceso para agregar amigos en las listas

4.6 MÓDULO DE REPRODUCCIÓN DE VOZ Otro de los módulos clave de TweetFm es el reproductor de voz. Este módulo se encuentra adherido al visor de tweets debido a que ahí se encuentra toda la información que debe ser sintetizada para ser escuchada. Como se puede observar en la Figura 23, el reproductor está compuesto de los controles de reproducción básicos como lo son el botón de atrasar, adelantar y reproducir, y adicional a esto se le ha agregado un control de volumen para controlar esta función.

Figura 23. Captura del reproductor de tweets

En la Figura 24 se puede ver más técnicamente el proceso que implica la sintetización de voz y cómo se logra gracias a las librerías de iSpeech. Este módulo de iSpeech se encarga de recibir un texto y una configuración de voz, para luego mandar estos datos al servidor configurado internamente en este módulo y recibir una respuesta en forma de streaming.

Page 28: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Figura 24. Proceso de síntesis de voz por medio de iSpeech

Tal como puede verse en la Figura 12, el módulo del motor de Twitter - MGTwitterEngine - está enlazado casi con todos los módulos de la aplicación. Esto debido a las constantes peticiones que se hacen a Twitter para requerir información acerca del usuario, como los tweets, amigos, etc.

El módulo de -iSpeech- solo se ve ligado al módulo de reproducción debido a que todas las acciones de Text-to-Speech suceden en ese lugar. Es al momento de la reproducción donde se validan las voces que hayan sido configuradas. Si es requerido por la aplicación reproducir un tweet de una cuenta que no ha sido configurada, se utilizará una voz por defecto para este fin.

4.7 PUBLICACIÓN EN LA APPSTORE TweetFM se encuentra en este momento en la AppStore de Apple[15]. El proceso de publicación consistió en llenar un perfil para la aplicación en la tienda. Este perfil contiene información como el nombre de la aplicación, la versión, la descripción, capturas de pantalla, etc. Luego de llenar este perfil se procede a enviar el instalador de la aplicación a Apple para revisión. Durante este proceso se verifica que la aplicación no tenga cierres inesperados y que no esté ejecutando código malicioso. Este proceso dura alrededor de una semana. Luego del proceso de verificación se notifica al desarrollador el momento en que la aplicación está lista para salir al mercado. En la Figura 25 se puede ver una captura en donde se muestra el perfil de la aplicación en la AppStore.

Page 29: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

Figura 25. Perfil de TweetFM en la AppStore

Page 30: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

CAPÍTULO 5

REPORTE DE PRUEBAS

TweetFM 1.02

Aprobaciones

Aprobado Por: Firma Fecha

Carlos Castillo 01/Jun/12

5.2 IDENTIFICACIÓN DEL SOFTWARE Nombre TweetFM Versión 1.02

5.1 VISIÓN GENERAL En este reporte se describe la información de las pruebas realizadas a la aplicación TweetFM para efectos de aseguramiento de la calidad. Las pruebas fueron realizadas a los módulos implementados e integrados de TweetFM y sus funciones principales.

5.3 RECURSOS

5.3.1 Personas Líder de Pruebas Juan Carlos Samboní Ramírez Analista de Pruebas Carlos Castillo Desarrollador Juan Carlos Samboní Ramírez

5.3.2 Ambiente Plataforma de Pruebas iOS 4.2, iOS 5.1, iOS Simulator

Equipos de Pruebas

• iMac 21” Core i3, 4GB RAM • iPod Touch 4 • iPhone 4 • iPad

Page 31: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

5.4 PRUEBAS

5.4.1 Metodología

Se tomaron los módulos en orden y se hicieron pruebas individuales para cada uno de ellos, usando diferentes cuentas de Twitter.

5.4.2 Pruebas Realizadas

Autenticación de una cuenta de Twitter

Se probó este módulo con diferentes cuentas de Twitter utilizando como entrada el login y el password de la cuenta.

Creación de listas Se probó la creación de una lista en la cuenta ingresada en el momento usando como parámetros el nombre requerido para la lista y la descripción.

Eliminación de listas Se probó la eliminación de una lista en la cuenta ingresada en el momento usando como parámetro el nombre de la lista que se quiere eliminar.

Agregación de amigos Se probó la agregación de amigos por medio de la tabla donde se visualizan estos.

Configuración de voces Se probó la configuración de voces, escogiendo varias de estas aleatoriamente y verificando el guardado automático de la última voz escogida.

Reproducción de tweets Se probaron los controles de reproducción “Anterior”, “Play” y “Siguiente”, verificando el proceso correcto para cada control.

Funcionamiento en Segundo plano

Se probó el funcionamiento de la aplicación en modo “Background” y verificar su funcionamiento al usar otras aplicaciones.

5.4.3 Pruebas No Realizadas Cambio de una lista a otra o desde la cronología a una lista y viceversa

Al no ser un procedimiento complejo las pruebas se hicieron durante el desarrollo de esta función

Recargar Listas Al no ser un procedimiento complejo las pruebas se hicieron durante el desarrollo de esta función

Recargar Amigos Al no ser un procedimiento complejo las pruebas se hicieron durante el desarrollo de esta función

Carga de nuevos tweets en las listas o en la cronología

Al no ser un procedimiento complejo las pruebas se hicieron durante el desarrollo de esta función

Page 32: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

5.5 PROBLEMAS ENCONTRADOS Problemas Encontrados 2 Problemas Resueltos 0 Problemas Aplazados Para Futuras Versiones

1

Problemas Pendientes 1

5.5.1 Problemas Pendientes El total de problemas aplazados es uno (1). ID 0001TFMF Severidad Baja Tipo Fallo

Descripción Al crear las listas se le indica al motor de Twitter que el modo de la lista debe ser “Privada”, pero al comprobar esto en la cuenta de Twitter las listas aparecen como públicas.

Solución Provisional

De ser necesario que el estado de las listas sean “privada”, se puede ir a twitter.com y editar ese parámetro desde el gestor de listas de la red social.

Plan

Debido a que esto es un problema de un componente externo a la aplicación se reportará inicialmente al desarrollador del motor la falla ocurrida. Adicional a esto se pueden buscar variaciones del motor que tengan esta falla corregida.

5.5.2 Problemas Aplazados para Futuras Versiones El total de problemas pendientes es uno (1). ID 0002TFMF Severidad Media Tipo Fallo

Descripción Si el sintetizador de voz está reproduciendo un tweet y entra una llamada, al finalizar esta no se logra que el sintetizador funcione de Nuevo.

Solución Provisional Ninguna por el momento.

Plan

El SDK de iSpeech tuvo una actualización reciente donde se integraron manejos para interrupciones como por ejemplo una llamada en medio de un proceso de una aplicación. Se espera que con esto se solucione el fallo encontrado.

Page 33: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

CONCLUSIONES A continuación se presentan algunas conclusiones y recomendaciones derivadas del desarrollo de este trabajo de grado.

• Twitter no presenta motores propicios para hacer la conexión entre las aplicaciones y los servidores de esta red social. Los motores que existen para gestionar todas las peticiones han sido hechos por desarrolladores distintos para cada plataforma, caso contrario al de Facebook en donde ellos mismos desarrollaron los motores para todas las plataformas. Debido a esto se pueden encontrar motores con funciones no implementadas lo que causa un retraso en el desarrollo porque se debe buscar un motor que contenga estas funcionalidades implementadas o hacerlas el mismo desarrollador, asumiendo que tiene un nivel avanzado de conocimiento en el lenguaje en cuestión.

• iSpeech es una librería que se ajusta a las necesidades de TweetFM. iSpeech es muy liviana,

lo que hace que la aplicación final no tenga un mayor peso adicional debido a esta librería. Su bajo peso es debido principalmente a que todo el procesamiento se hace en servidores externos a la aplicación. Otras soluciones hacen el proceso dentro de la aplicación evitando así la necesidad de una conexión a internet activa, pero esto se ve reflejado en su peso, llegando a los 50 MB por cada voz que se requiera integrar.

• La aplicación TweetFM le permite al usuario seguir ejecutando en segundo plano otras tareas. De esta manera se logra llevar a cabo el objetivo de mejorar la producción del usuario al no obligarlo a estar pendiente de la aplicación cuando solo desea escuchar las noticias nuevas. El usuario puede ejecutar otra aplicación mientras se escuchan las noticias de fondo, con lo que se logra eliminar la dependencia hacia la función principal de TweetFM.

• Objective C tiene un nivel de dificultad mayor que los lenguajes más usados como Java o C++

del cual deriva. Se puede decir que Objective C no es recomendable como primer lenguaje para quienes se inician en la programación orientada a objetos, debido a distintas razones como sintaxis un poco compleja y no estándar en algunos casos, o los patrones de diseño que usa como el de delegación, principal patrón encontrado en las clases contenidas en este lenguaje.

6.1 TRABAJO FUTURO A continuación se describen algunos de los trabajos futuros que se derivan de la realización de este trabajo de grado.

• Agregar un módulo de interfaz ajustable a situaciones que permita cambiar la interfaz en caso de estar manejando un automóvil. La interfaz debería acoplarse a una visualización de comandos básicos activados y procesados con un solo toque o con comandos de voz, ampliando así el rango de actividades que se pueden hacer mientras se escuchan noticias.

• Desarrollar una aplicación que automáticamente descargue los tweets nuevos y los reproduzca, al no encontrar nuevos tweets que notifique la no existencia de ellos y espere

Page 34: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

hasta que lleguen los nuevos para empezar con la reproducción. Todo esto sin la intervención del usuario. Esto daría una mayor sensación de ser una emisora por su automatización.

Page 35: REPRODUCCIÓN DE VOZ BASADA EN LA CRONOLOGÍA DE …

REFERENCIAS [1] “Twitter”, Fecha de consulta: [11 de Junio de 2011]]. http://twitter.com/ [2] “Echofon”, Fecha de consulta: [11 de Junio de 2011]]. www.echofon.com [3] “TweetDeck”, Fecha de consulta: [11 de Junio de 2011]]. http://www.tweetdeck.com/iphone/ [4] “Loquendo TTS Director”, Fecha de consulta: [11 de Junio de 2011]]. http://www.loquendo.com/en/products/text-to-speech/tools-services/ [5] “IVONA Web Reader”, Fecha de consulta: [11 de Junio de 2011]]. http://www.ivona.com/webreader.php [6] “History and Development of Speech Synthesis”, Helsinki University of Technology, Retrieved on November 4, 2006. [7] “Loquendo SDK”, Fecha de consulta: [11 de Junio de 2011]]. http://www.loquendo.com/en/applications/mobile/ [8] “Acapella for iPhone SDK”, Fecha de consulta: [11 de Junio de 2011]]. http://www.acapela-for-iphone.com/ [9] “Twitter API”, [Fecha de consulta: [11 de Junio de 2011]]. http://dev.twitter.com/doc [10] Cox, Brad J. (1991). Object Oriented Programming: An Evolutionary Approach. Addison Wesley. ISBN 0-201-54834-8. [11] “MGTwitterEngine”, Fecha de consulta: [11 de Junio de 2011]]. https://github.com/mattgemmell/MGTwitterEngine/tree/ [12] “Xcode web reference”, [11 de Junio de 2011]]. http://developer.apple.com/technologies/tools/whats-new.html [13] “iOS SDK Web reference”, [Fecha de consulta: [11 de Junio de 2011]] http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/URL_iPhone_OS_Overview/_index.html#//apple_ref/doc/uid/TP40007592 [14] “movistar CO”, Aplicación desarrollada por Contento Media LTDA http://itunes.apple.com/co/app/movistar-co/id498265077?mt=8 [15] “TweetFM”, Aplicación desarrollada por Contento Media LTDA http://itunes.apple.com/us/app/tweetfm/id474248564?l=es&mt=8