UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO Sistema de distribuição de notícias multimédia para dispositivos móveis Carlos Bandeirinha, nº 49304, AE de Telecomunicações Diogo Areia, nº49396, AE de Telecomunicações LICENCIATURA EM ENGENHARIA ELECTROTÉCNICA E DE COMPUTADORES Relatório de Trabalho Final de Curso 224/2006/L Prof. Orientador: João Paulo Neto Trabalho realizado no L2F , INESC-ID Lisboa Junho 2006 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Agradecimentos Gostaríamos de agradecer a todas as pessoas envolvidas no L2F e em especial ao nosso orientador, o professor João Paulo Neto pela oportunidade que nos concedeu em trabalhar na área do reconhecimento de fala e pelo apoio e colaboração prestados durante a realização deste projecto. Gostaríamos de dar um especial destaque: • • • • ao Eng.º Renato Cassaca pela ajuda prestada nas mais diversas áreas deste projecto, o seu apoio foi fundamental ao Eng.º Márcio Viveiros principalmente pela ajuda concedida na elaboração da interface gráfica ao Eng.º. Hugo Meinedo pela sua constante disponibilidade em resolver os problemas relativos ao SSNT ao Doutor David Matos pelo auxilio prestado na resolução de alguns problemas encontrados ao longo do projecto Por fim, não nos podemos esquecer de todo apoio dado pelos nossos pais e amigos e ainda pelos nossos colegas de trabalho, André Santos, Gustavo Coelho e Luís Figueira. Carlos Bandeirinha, Diogo Areia i Resumo Com este projecto desenvolvido no âmbito do trabalho de final do curso de Engenharia Electrotécnica de Computadores, no ano 2006, foi criado um sistema de distribuição de dados multimédia em plataformas wireless, direccionado para dispositivos móveis (PDA’s, telemóveis para além de PC’s). Para a implementação deste projecto foi construído um serviço que disponibiliza ao utilizador, de uma forma simples e eficaz, informação multimédia proveniente do telejornal da RTP (Rádio Televisão Portuguesa). A sua realização implicou uma abordagem através de duas vertentes: servidor e cliente. Do lado do servidor foi desenvolvido um sistema capaz de disponibilizar os dados multimédia ao utilizador sob a forma de vídeo, áudio e texto. Estes dados são obtidos devidamente segmentados e categorizados, através de um sistema de reconhecimento de fala de vocabulários largos, o ALERT, anteriormente desenvolvido nos Laboratórios de Sistemas de Língua Falada (L2F). Criaram-se rotinas de pesquisa na base de dados para disponibilizar o conteúdo pretendido pelas pesquisas dos utilizadores, implementou-se um servidor de vídeo e disponibilizou-se um webserver capaz de comunicar com a aplicação do cliente. Do lado do cliente desenvolveu-se uma interface para dispositivos móveis que garante acessibilidade alternativa e aumentativa, ou seja, possibilita-se a navegação na aplicação com fala e a visualização de texto e vídeo relativos aos telejornais. Criou-se então, uma interface multimodal que usa um sistema de reconhecimento de fala independente do orador, o AUDIMUS , previamente desenvolvido nos laboratórios do L2F. Neste serviço são disponibilizados ao utilizador 3 tipos de pesquisas na base de dados: livre, por datas e últimos títulos. Adicionalmente criou-se um sistema de matching capaz de disponibilizar os dados multimédia ao utilizador de acordo com o perfil por si definido. Sempre que desponte informação que corresponda a um perfil de utilizador, este será notificado. Palavras-chave • • • • • • ii Processamento de informação multimédia Distribuição selectiva de dados multimédia Dispositivos Móveis Streaming Interface Multimodal Reconhecimento de fala Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Abstract With this project developed in the scope of the Final Project towards the Bachelors Degree in Computer and Electro-techniques Engineering, in the year of 2006, was created a system of multimedia data distribution in wireless platforms, directed for mobile devices (PDA’s, mobile phones and PC’s). In the implementation of this project a system was created, that offers the user, in a simple and efficient way, multimedia information proceeding from the RTP newscast. It’s accomplishment implied an approach through two sides: server and client. In the server side a system was created that is able to make the multimedia information available to the user under the form of video, audio and text. This data is obtained in a segmented and categorized way, through a system of speech recognition of wide vocabularies, the ALERT, previously developed in the Spoken Language System Laboratories (L2F). Several research routines in the database were created in order to deliver the desired contents to the users. It was also integrated a video server and a web server capable of communicating with the user’s application. In the client side, an interface for mobile devices was created that guarantees alternative accessibility, i.e., enables the navigation in the application with speech recognition and enables the visualization of text and video from the newscasts. A multimodal interface was created that uses a speaker-independent recognition system, the AUDIMUS, previously developed in the L2F laboratories. In this service the user is given 3 types of research methods in the database: free search, by date and the last news titles. In addition, a matching system was created that is able to provide multimedia data accordantly with the profile chosen by the user. Whenever there is ²F - Spoken new information that corresponds with the user’s profile, he will be notified. Language Systems Laboratory Keywords • • • • • • Processing of multimedia information Multimedia selective data distribution Mobile Devices Streaming Multimodal Interface Speech Recognition Carlos Bandeirinha, Diogo Areia iii AGRADECIMENTOS...........................................................................................................................................I RESUMO .............................................................................................................................................................. II PALAVRAS-CHAVE .......................................................................................................................................... II ABSTRACT.........................................................................................................................................................III KEYWORDS.......................................................................................................................................................III LISTA DE FIGURAS ......................................................................................................................................... VI LISTA DE TABELAS ..................................................................................................................................... VIII LISTA DE SIGLAS ............................................................................................................................................ IX 1 INTRODUÇÃO ........................................................................................................................................... 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 2 SERVIDOR .................................................................................................................................................. 9 2.1 2.1.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 3 J2ME...................................................................................................................................................23 TELEMÓVEIS ........................................................................................................................................25 PDA´S .................................................................................................................................................30 JAVA NOS PDA´S .................................................................................................................................31 CONCLUSÃO/TOMADA DE DECISÃO .....................................................................................................32 CAP4 – A APLICAÇÃO NO PDA............................................................................................................35 4.1 4.2 4.3 4.4 4.4.1 4.4.2 4.4.3 4.5 4.6 4.7 4.8 4.9 iv WEBSERVER ........................................................................................................................................... 9 Apache ou Jetty ............................................................................................................................... 9 O XML................................................................................................................................................10 SAX, DOM, BASE DE DADOS NATIVA XML........................................................................................11 ESCOLHA DA BASE DE DADOS NATIVA ................................................................................................12 BASE DE DADOS EXIST .........................................................................................................................13 XQUERY VS XPATH ..............................................................................................................................13 -IMPLEMENTAÇÃO INICIAL DO SERVIÇO ...............................................................................................14 DESEMPENHO DO SERVIÇO ...................................................................................................................15 O PROJECTO HIBERNATE .......................................................................................................................18 O TRABALHO DESENVOLVIDO ..............................................................................................................22 CAP.3- DISPOSITIVOS MÓVEIS ...........................................................................................................23 3.1 3.2 3.3 3.4 3.5 4 ÁREA DO TRABALHO ............................................................................................................................ 1 PROCESSAMENTO DE INFORMAÇÃO MULTIMÉDIA ................................................................................ 1 DISTRIBUIÇÃO SELECTIVA DE DADOS MULTIMÉDIA.............................................................................. 1 INTERFACES MULTIMODAIS .................................................................................................................. 2 DISPOSITIVOS MÓVEIS .......................................................................................................................... 2 TECNOLOGIAS WIRELESS (UMTS,GPRS, WIFI) .................................................................................... 3 CONCEITO DO SERVIÇO ......................................................................................................................... 3 RECONHECIMENTO DA FALA ................................................................................................................. 4 O PROJECTO ALERT E O SSNT-SERVICE ........................................................................................... 4 OBJECTIVOS PARA ESTE TRABALHO ...................................................................................................... 5 ARQUITECTURA DO SERVIÇO ................................................................................................................ 5 -FASES DO TRABALHO........................................................................................................................... 7 -ORGANIZAÇÃO DO RELATÓRIO ............................................................................................................ 7 VISÃO GERAL DO AWT (ABSTRACT WINDOW TOOLKIT) .......................................................................35 VISÃO GERAL DO SWING ......................................................................................................................37 O DESENVOLVIMENTO DA INTERFACE GRÁFICA NO PDA.....................................................................40 O VÍDEO NO PDA ................................................................................................................................43 Java Media Framework .................................................................................................................43 RealPlayer para PocketPC ............................................................................................................44 Desempenho do JMF vs RealPlayer ..............................................................................................44 BROWSER + REALPLAYER ...................................................................................................................47 JAVA + JMF.........................................................................................................................................47 JAVA + REALPLAYER ..........................................................................................................................48 HELIX STREAMING SERVER ..................................................................................................................49 INTEGRAÇÃO COM O PROJECTO SSNT-SERVICE ...................................................................................49 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis 4.10 5 CAP.5 INTERFACE MULTIMODAL COM FALA ..............................................................................52 5.1 5.2 5.3 5.4 5.5 5.6 6 TECNOLOGIAS EXISTENTES ..................................................................................................................52 VOICEXML...........................................................................................................................................54 XHTML+VOICE ...................................................................................................................................56 AUDIMUS..........................................................................................................................................58 O RECONHECIMENTO DE FALA NO APLICAÇÃO DESENVOLVIDA ...........................................................58 TRABALHO REALIZADO ........................................................................................................................60 CAPITULO 6- DESCRIÇÃO DO SERVIÇO / TESTES........................................................................61 6.1 6.2 6.3 6.4 6.5 6.6 6.7 7 DESCRIÇÃO DO TRABALHO REALIZADO ...............................................................................................50 O SERVIÇO DE MATCHING .....................................................................................................................61 A PESQUISA DIRECTA NA BASE DE DADOS ............................................................................................64 COMANDOS DE VOZ .............................................................................................................................66 A CODIFICAÇÃO DO VÍDEO ...................................................................................................................67 TESTES DO RECONHECEDOR EM DIFERENTES AMBIENTES: ...................................................................67 TESTES COM VÁRIOS ORADORES ..........................................................................................................71 RESULTADOS ALCANÇADOS .................................................................................................................71 CONSIDERAÇÕES FINAIS.....................................................................................................................73 7.1 7.2 7.3 7.4 O PROJECTO REALIZADO ......................................................................................................................73 LIMITAÇÕES E TESTES AO SERVIÇO ......................................................................................................74 DESENVOLVIMENTOS FUTUROS ...........................................................................................................75 NOTA FINAL .........................................................................................................................................75 BIBLIOGRAFIA..................................................................................................................................................76 Carlos Bandeirinha, Diogo Areia v Lista de Figuras FIGURA 1.1-BREVE DESCRIÇÃO DO PROJECTO ALERT............................................................................................ 4 FIGURA 1.2- ARQUITECTURA DO SERVIÇO ............................................................................................................... 6 FIGURA 2.1-ARQUITECTURA INICIAL DO SERVIÇO ................................................................................................... 9 FIGURA 2.2 -ESTRUTURA DO XML .........................................................................................................................10 FIGURA 2.3-EXEMPLO DE UM FICHEIRO XML.........................................................................................................12 FIGURA 2.4-SERVIÇO INICIALMENTE IMPLEMENTADO ............................................................................................14 FIGURA 2.5-XQUERY ...............................................................................................................................................15 FIGURA 2.6-RESULTADO OBTIDO NO BROWSER .......................................................................................................15 FIGURA 2.7- PERFORMANCE DO EXIST ....................................................................................................................16 FIGURA 2.8 PROBLEMAS DE MEMÓRIA DO EXIST ....................................................................................................17 FIGURA 2.9 RESULTADOS COM O XQUERY ..............................................................................................................17 FIGURA 2.10-DIAGRAMA UML DA BASE DE DADOS DO SSNT................................................................................19 FIGURA 2.11 ESTRUTURA DA CLASSE PROGRAM.JAVA ...........................................................................................20 FIGURA 2.12-ESTRUTURA DO FICHEIRO PROGRAM.HBM.JAVA................................................................................21 FIGURA 2.13- ESTRUTURA FINAL DO SERVIDOR ......................................................................................................21 FIGURA 3.1 DISPOSITIVOS ASSOCIADOS ÁS CONFIGURAÇÕES CDC E CLDC...........................................................23 FIGURA 3.2 RELAÇÃO ENTRE O CDC E CLDC ........................................................................................................24 FIGURA 3.3 - AS DIFERENTES PLATAFORMAS JAVA .................................................................................................24 FIGURA 3.4 API´S DO J2ME...................................................................................................................................25 FIGURA 3.5 MÉTODOS DE UMA MIDLET..................................................................................................................27 FIGURA 3.6 MMAPI ...............................................................................................................................................28 FIGURA 3.7 ARQUITECTURA DA MMAPI................................................................................................................29 FIGURA 3.8 INSTRUÇÕES PARA A REPRODUÇÃO DE VÍDEO ......................................................................................29 FIGURA 3.9 TELEMÓVEIS QUE SUPORTAM STREAMING VIA RTSP ............................................................................30 FIGURA 3.10- IPAQ H3870 ......................................................................................................................................31 FIGURA 3.11 –CONSOLA DO JEODE .........................................................................................................................33 FIGURA 3.12 CONSOLA DO CREME ..........................................................................................................................33 FIGURA 3.13- CONSOLA DO J9 ................................................................................................................................34 FIGURA 3.14 CONSOLA DO MYSAIFU .......................................................................................................................34 FIGURA 4.1-COMPONENTES DO AWT.....................................................................................................................36 FIGURA 4.2 LAYOUTS DO AWT ..............................................................................................................................36 FIGURA 4.3 EVENTOS DO AWT ..............................................................................................................................37 FIGURA 4.4 COMPONENTES DO SWING ....................................................................................................................38 FIGURA 4.5 LAYOUTS DO SWING .............................................................................................................................39 FIGURA 4.6 EVENTOS DO SWING .............................................................................................................................39 FIGURA 4.7- PAINEL PRINCIPAL DA APLICAÇÃO NAS DIFERENTES MÁQUINAS VIRTUAIS..........................................40 FIGURA 4.8 DIFERENÇA ENTRE AS VERSÕES DO MYSAIFU .......................................................................................41 FIGURA 4.9 ACTIVAÇÃO DO RECONHECIMENTO DE FALA NA APLICAÇÃO ...............................................................41 FIGURA 4.10 ACTIVAÇÃO DO RECONHECIMENTO DE FALA NO PDA .......................................................................41 FIGURA 4.11 APLICAÇÃO EM SWING NO PC E NO PDA...........................................................................................42 FIGURA 4.12 APLICAÇÃO EM SWING NO PC E PDA ................................................................................................42 FIGURA 4.13 JMSTUDIO ..........................................................................................................................................44 FIGURA 4.14 REALPLAYER PARA POCKET PC .........................................................................................................44 FIGURA 4.15- VÍDEO CODIFICADO COM O CINEPAK .................................................................................................46 FIGURA 4.16- RUNTIME.EXEC() ..............................................................................................................................48 FIGURA 4.17 SOLUÇÃO JAVA +REALP LAYER .........................................................................................................49 FIGURA 4.18 INTEGRAÇÃO COM O PROJECTO SSNT................................................................................................50 FIGURA 5.1- VOICE LOOKUP ...................................................................................................................................52 FIGURA 5.2 PDSAY .................................................................................................................................................53 FIGURA 5.3 VOICE XML.........................................................................................................................................54 FIGURA 5.4 REDE DE COMUNICAÇÃO DO VOICEXML ..............................................................................................55 FIGURA 5.5 OS COMPONENTES DA GATEWAY VOICEXML ......................................................................................55 FIGURA 5.6 DETALHES DA ARQUITECTURA .............................................................................................................56 FIGURA 5.7 TECNOLOGIA X+V ..............................................................................................................................57 FIGURA 5.8NETFRONT BROWSER –PIZZA DEMO ....................................................................................................57 FIGURA 5.9 O RECONHECIMENTO DE FALA NO AUDIMUS.....................................................................................58 vi Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis FIGURA 5.10 O PROCESSO DE RECONHECIMENTO DO AUDIMUS...........................................................................59 FIGURA 5.11 O VOCABULÁRIO ESCOLHIDO .............................................................................................................59 FIGURA 6.1 ARQUITECTURA DO APLICAÇÃO ...........................................................................................................61 FIGURA 6.2 A PÁGINA DE ENTRADA DO WEBSITE SSNT .........................................................................................62 FIGURA 6.3 A PÁGINA DE REGISTO DO UTILIZADOR ................................................................................................62 FIGURA 6.4 ALTERAÇÃO DE PERFIL/ DEFINIÇÃO DOS TÓPICOS ................................................................................63 FIGURA 6.5 O ESQUEMA DE MATCHING ...................................................................................................................63 FIGURA 6.6 XML COM OS ÚLTIMOS ACESSOS DO UTILIZADOR ................................................................................64 FIGURA 6.7 SERVIÇO DE MATCHING NO PDA ..........................................................................................................64 FIGURA 6.8 PAINEL DE PESQUISA LIVRE ..................................................................................................................64 FIGURA 6.9 PESQUISA LIVRE ...................................................................................................................................65 FIGURA 6.10 PESQUISA POR DATAS DE TELEJORNAL ...............................................................................................65 FIGURA 6.11-PESQUISA POR TÍTULOS .....................................................................................................................66 FIGURA 6.12 A CODIFICAÇÃO DO VÍDEO .................................................................................................................67 FIGURA 6.13 AMBIENTE SILENCIOSO ......................................................................................................................68 FIGURA 6.14 AMBIENTE COM MÚSICA ....................................................................................................................68 FIGURA 6.15 NO BAR DE ENGENHARIA CIVIL DO IST ..............................................................................................68 FIGURA 6.16 AUDIMUS.XML ..............................................................................................................................69 FIGURA 6.17-JANELA DE 150*10MS=1,5S ..............................................................................................................69 FIGURA 6.18 SILÊNCIO PROVOCADO PELO PDA ......................................................................................................70 FIGURA 6.19 NA VARANDA DO INESC ...................................................................................................................70 Carlos Bandeirinha, Diogo Areia vii Lista de Tabelas TABELA 3.1 TELEMÓVEIS COMPATÍVEIS COM JAVA [4]..........................................................................................26 TABELA 4.1 FORMATOS E CODECS SUPORTADOS PELO JMF....................................................................................45 TABELA 4.2 REQUISITOS DE CPU E LARGURA DE BANDA DOS CODECS ...................................................................46 TABELA 6.1 TESTES COM VÁRIOS ORADORES .........................................................................................................71 viii Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Lista de Siglas AWT- Abstract Window Toolkit API- Application Programming Interface AVI- Audio Video Interleaved CD- Compact Disc CDC- Connected Device Configuration CLDC- Connected Limited Device Configuration CPU- Central Processing Unit DOM- Document ObjectModel EOS- End Of Sentence FAQ- Frequently Asked Question(s), Frequently FTP- File Transfer Protocol GPRS- General Packet Radio SERVICE GNU- GNU is Not Unix (acrónimo recursivo) GPL- General Public License GUI- Graphic User Interface HTTP- HyperText Transfer Protocol HTML- HyperText Markup Language HQL- Hibernate Query Language HMM- Hidden Markov Model INESC-ID- Instituto de Engenharia de Sistemas e Computadores ID Lisboa IST- Instituto Superior Técnico J2ME- Java 2 platform Micro Edition J2SE- Java 2 Standard Edition JDBC- Java Database Connectivity JDK- Java Development Kit JFC- Java Foundation Classes JMF- Java Media Framework JNI- Java Native Interface JPEG- Joint Photographic Experts Group JSP- Java Server Pages JSR- Java Specification Requests L2F- Laboratório de língua Falada MIDP- Mobile Information Device Profile MIME- Multipurpose Internet Mail Extensions. MLP- Multilayer Perceptron MMAPI- MultiMedia API MP3- MPEG-1/2 Audio Layer 3 MPEG- Motion Picture Experts Group NXD- Native X ML databases ORM- Object-Relational Mapping PC- Personal Computer PCM- Pulse Code Modulation PDA- Personal Digital Assistant PP- Personal Profile RAM- Random Acess Memory RM- Real Media ROM- Read Only Memory RPC- Remote Procedure Call Carlos Bandeirinha, Diogo Areia ix RTOS- Real Time Operating System RTP- Real Time Protocol RTSP- Real Time Streaming Protocol SAX- Simple API for XML SDK- Software Development Kit SMIL- Synchronized Media Integration Language SOAP- Simple Object Access Protocol SQL- Structured Query Language SSNT- Sumarização de Serviços Noticiosos de Telejornal SWT- Standard Widget Toolkit TTS- Text-to-Speech UML- Unified Modeling Language UMTS- Universal Mobile Telecommunications System WIFI- Wireless Fidelity WML- Wireless Markup Language XHMTL- eXtensible Hypertext Markup Language XML- eXtensible Markup Language XSLT- eXtensible Stylesheet Language for Transformation x Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis 1 1.1 Introdução Área do Trabalho Na sociedade actual, o acesso à informação de uma forma rápida e simples torna-se uma necessidade cada vez mais premente. Neste domínio, os computadores, PDA’s e telemóveis são cada vez mais utilizados, proporcionando novas e diferentes formas de interacção suportadas por inovações tecnológicas. A informação que é disponibilizada pela televisão, rádio, jornais e web pode ser agora acedida através dos dispositivos móveis, que continuam em evolução e poderão oferecer cada vez melhores desempenhos. No entanto o valor dessa informação depende muito da facilidade com que se consegue aceder, filtrar, procurar e interagir com os seus conteúdos. Hoje em dia existe um número incalculável de informação multimédia (em arquivos digitais, na Web, em bases de dados pessoais ou profissionais, etc.) e este número continua a aumentar constantemente, tornando-se cada vez mais difícil de gerir estes recursos todos, uma vez que em muitos casos esta informação não está devidamente estruturada e classificada. Para tal é necessário a existência de tecnologias que façam a aquisição, armazenamento, indexação e categorização da informação multimédia. Isto vai permitir que a informação esteja organizada, facilitando deste modo qualquer tipo de acesso. 1.2 Processamento de informação Multimédia Para organizar os conteúdos da informação multimédia recorre-se muitas vezes ao processamento semântico dos conteúdos multimédia. Para isso é necessário capturar essa informação através de sistemas automáticos que retiram os dados multimédia de emissões televisivas, emissões de rádio e jornais fazendo então uma análise detalhada do seu conteúdo. Estes sistemas baseiam-se em tecnologias avançadas de processamento que realizam a filtragem e indexação dos conteúdos multimédia. No contexto dos sistemas de língua falada o processamento de informação multimédia é realizado através de tecnologias de reconhecimento de fala com vocabulários largos, associados à segmentação e classificação de áudio. Para além disso têm técnicas automáticas de indexação e sumarização de tópicos, por forma a gerar categorias de informação e marcas semânticas nos dados multimédia. Esta caracterização da informação através de diversas ferramentas computacionais permite um acesso mais simples aos conteúdos multimédia. No nosso projecto o processamento semântico de informação revelou-se importante uma vez que foi possível receber os conteúdos desejados devidamente organizados. 1.3 Distribuição selectiva de dados Multimédia O crescente e rápido desenvolvimento dos sistemas de aquisição, processamento, armazenamento, transmissão e visualização de informação multimédia tem motivado cada vez mais a sua difusão. Os Sistemas Multimédia garantem a transmissão dessa informação que combina diferentes meios de comunicação (texto, áudio, vídeo, gráficos, animações e Carlos Bandeirinha, Diogo Areia 1 interactividade). Para isso é necessário ter toda a informação disponível numa base de dados, em diferentes formatos, para cumprir as necessidades de diferentes utilizadores em diferentes condições. Nestes sistemas podem existir vários módulos de pesquisa à base de dados. Adicionalmente podem definir-se ainda perfis de acordo com as preferências de cada utilizador. 1.4 Interfaces Multimodais As interfaces multimodais permitem ao utilizador interagir de diferentes modos com a sua aplicação usando meios diferentes dos convencionais (teclado e rato). Estas interfaces combinam os meios tradicionais de interacção com reconhecimento e síntese de fala e meios visuais. A principal vantagem deste tipo de aplicações é o facto de serem mais fáceis de utilizar. Num dispositivo móvel com ecrã reduzido e teclado limitado este tipo de interfaces revelam-se ainda mais úteis pois uma palavra é fácil de dizer mas muitas vezes pode ser difícil de escrever. Neste contexto os sistemas de língua falada associados aos dispositivos móveis são um tópico que cada vez mais atrai engenheiros e cientistas. Estes sistemas estão cada vez mais a revelar-se uma necessidade. Permitem realizar interfaces mais atractivas, simples e mais intuitivas para o utilizador comum, pois é possível realizar diferentes tarefas através de um diálogo coerente e natural e não apenas através de comandos predefinidos. 1.5 Dispositivos móveis Hoje em dia os dispositivos móveis assumem um papel fundamental no quotidiano das pessoas. Dispositivos como telemóveis e PDA´s têm cada vez mais capacidade de processamento e memória, que se traduz em melhores desempenhos e permite a utilização nesses mesmos dispositivos de aplicações mais complexas, que outrora apenas poderiam ser executadas em PC´s. No entanto, ainda apresentam limitações que foram levadas em conta na realização deste projecto. • Largura de banda limitada - A conectividade wireless tem diversos inconvenientes como a quantidade de largura de banda disponível e a limitação de cobertura geográfica existente. • Estabilidade da ligação – A estabilidade da ligação nem sempre é ideal devido a vários factores como o desvanecimento (fading), falta de cobertura de rede, ou à capacidade deficiente, que tornam as redes wireless frequentemente inacessíveis por períodos de tempo. • Dimensão do ecrã – Os dispositivos móveis têm ecrãs reduzidos. Os PDA’s têm 320 x 240 pixel, enquanto os telemóveis em média têm apenas 180 x 140 pixel. Isto vai limitar muito a forma como se desenvolvem as aplicações para estes dispositivos, uma vez que tem que se ter em conta este espaço reduzido para expor os conteúdos. • Limitações de teclado - Estes dispositivos dispõem de teclados pequenos e muitas vezes difíceis de utilizar. Escrever num PDA ou num telemóvel é sempre mais lento e complicado do que escrever num PC, para não falar do facto de não se ter um “mouse” (como nos PC’s). 2 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis • Memória e CPU limitados – Estes dispositivos não possuem o poder computacional e a memória encontrados num PC. Dispositivos recentes, como os PocketPC são uma excepção, com um processador (CPU) que pode ir dos 133 aos 206 MHz e com memória interna de 64MB RAM, apresentando assim desempenhos aceitáveis. • Limitações a nível da bateria – a limitação das baterias é um dos interesses principais para os fabricantes destes dispositivos. A capacidade de uma bateria restringe as operações a aproximadamente quatro ou cinco horas na maioria dos PDA’s. 1.6 Tecnologias wireless (UMTS,GPRS, WiFi) Com o aparecimento das tecnologias wireless, através das redes móveis, mudou-se radicalmente a maneira de comunicar. O utilizador deixou de ser um receptor passivo e passou a poder interagir com uma disponibilidade de meios até agora impossíveis de conjugar, independentemente do local em que se encontra. As comunicações passaram a acompanhar o utilizador e não o contrário como antigamente. O streaming de vídeo para dispositivos móveis não era encarado com grande importância no passado uma vez que a segunda geração (2G, GPRS) destes dispositivos não cumpriam os requisitos necessários em termos de débito binário. Devido ao desenvolvimento drástico em termos de tecnologia wireless já é possível realizar transferência de dados a um ritmo binário muito superior como é o caso das redes wireless 2.5G e 3G (UMTS) que suportam ritmos desde os 64kbps até 2Mbps. As operadoras passaram a dispor da possibilidade de oferecer aos seus clientes várias aplicações que podem funcionar em tempo real, podendo assim fornecer serviços que vão para além dos simples serviços de voz e texto. Estes serviços irão expandir-se por forma a abranger outros aspectos como a transferências de dados e vídeos interactivos bi-direccionais, mensagens instantâneas, transferência de imagens, clips de vídeo e clips de vídeo com áudio. 1.7 Conceito do serviço Este serviço, projectado para dispositivos móveis dá a possibilidade aos seus utilizadores de aceder de forma contínua a informação multimédia, sendo que o único requisito é o dispositivo ter acesso a uma rede WiFi. A informação disponibilizada por este serviço apenas abrange as notícias do telejornal da RTP, sendo que futuramente poderá abranger outras áreas. Estas notícias já estão devidamente organizadas por temas de acordo com o seu conteúdo devido ao processamento semântico da informação multimédia, permitindo-nos realizar uma filtragem correcta de acordo com os interesses do utilizador. Por outro lado também temos uma distribuição selectiva do dados multimédia que nos permite efectuar a definição dos perfis do utilizador para além de permitir a distribuição do vídeo já devidamente codificado de acordo com o dispositivo. O utilizador tem então ao seu dispor, uma interface multimodal que possibilita 3 tipos diferentes de pesquisa: • Pesquisa livre – permite ao utilizador pesquisar qualquer palavra que pretenda • Pesquisar datas – permite ao utilizador pesquisar qualquer notícia por data • Pesquisar títulos – permite ao utilizar pesquisar os títulos de noticias recentes Carlos Bandeirinha, Diogo Areia 3 Para além disso pode ainda registar-se no serviço, através de uma página Web, onde define os seus tópicos de interesse (política, desporto, economia, etc.), recebendo-os posteriormente no seu dispositivo. As notícias são apresentadas com um título e uma breve descrição, podendo o utilizador através destes dados escolher se pretende visualizar o vídeo que contém essa mesma notícia. Este serviço é uma novidade uma vez que é direccionado para dispositivos móveis. As principais vantagens deste tipo de dispositivos associados a este serviço são o facto de termos sempre acesso à informação desde que se esteja numa área coberta por uma rede WiFi e o facto de estes dispositivos garantirem uma maior mobilidade ao utilizador. 1.8 Reconhecimento da fala Os sistemas de língua falada associados aos dispositivos móveis são um tópico que cada vez mais atrai engenheiros e cientistas. Estes sistemas estão cada vez mais a revelar-se uma necessidade. Permitem realizar interfaces mais atractivas, simples e intuitivas para o utilizador comum, pois é possível realizar diferentes tarefas através de um diálogo coerente e natural e não apenas através de comandos predefinidos. No nosso caso foi criada uma aplicação onde é possível “navegar” através de fala uma vez que temos disponível um reconhecedor, o AUDIMUS. Desta forma simplifica-se muito a interacção com a interface, pois esta é uma solução que dispensa o uso tradicional dos teclados dos dispositivos móveis que são bastante limitativos. 1.9 O projecto ALERT e o SSNT-SERVICE O ponto de partida deste projecto consistiu em obter a informação proveniente das noticias de telejornal resultantes do projecto ALERT desenvolvido pelo L2F (INESC-ID Lisboa). O resultado deste projecto está condensado num ficheiro XML que contém a transcrição, classificação acústica, categorização e indexação de cada telejornal capturado. Foi a partir deste ficheiro que se começou a pensar numa forma de construir o nosso serviço. Uma breve descrição deste projecto pode ser seguida na figura 1.1. Na máquina CAPTURE é onde se captura o sinal de vídeo da emissão do programa em captura. Terminada a captura do vídeo arranca na máquina PROCESS o processo de reconhecimento e classificação acústica do ficheiro de vídeo recebido. È também aqui que acontece a categorização e sumarização das noticias. O resultado deste processo está presente no ficheiro XML. Figura 1.1-Breve descrição do projecto ALERT 4 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis A máquina SERVICE encarrega-se de armazenar toda a informação contida no XML numa base de dados (BD-SSNT). Importa também salientar que nesta máquina é armazenado o ficheiro de vídeo (no formato RealVídeo) do programa processado. Nesta máquina existe também um serviço , sob a forma de uma página Web, onde o utilizador se pode registar e receber as noticias pretendidas de acordo com o perfil definido, serviço de matching. Estes módulos foram criados no âmbito do projecto SSNT1, desenvolvido no L2F. Depois de analisar o modo de funcionamento e as limitações destes dois projectos , o ALERT e o SSNT-Service, começámos a pensar numa forma de disponibilizar o conteúdo destes projectos em dispositivos móveis. 1.10 Objectivos para este trabalho Para a realização deste projecto é necessário criar um sistema servidor/cliente para a distribuição das notícias e respectivo vídeo. Será necessário criar e disponibilizar um servidor que comunique com o cliente e que seja capaz de responder aos seus pedidos. É obrigatório que este servidor faça a ligação à base de dados que contém a informação relativa aos telejornais, e que disponibilize também o vídeo associado a cada telejornal. Neste contexto será necessário ter em conta a largura de banda suportada por cada dispositivo móvel, a capacidade de processamento , o tipo de codificação de vídeo usado e os protocolos usados na comunicação entre o cliente e servidor. A base de dados terá que ser fiável, capaz de responder a pedidos simultâneos e com tempos de resposta aceitáveis. No lado do cliente é necessário criar uma interface gráfica em Java, perceptível e fácil de utilizar, que comunique com o servidor de forma a apresentar todos os conteúdos pretendidos pelo utilizador. Tendo em conta as limitações destes dispositivos e as restrições ao nível de processamento gráfico será necessário arranjar soluções para a recepção e visualização do vídeo das notícias. Por forma a criar uma interface multimodal será necessário introduzir reconhecimento de fala na aplicação. Dadas as limitações destes dispositivos será necessário criar um reconhecedor que funcione em modo de servidor para evitar que o dispositivo seja sobrecarregado com o processamento dos módulos de reconhecimento. O projecto AUDIMUS criado no L2F será usado para efectuar este reconhecimento. O objectivo deste trabalho é então criar um serviço que ofereça ao utilizador de um dispositivo móvel um constante acesso a informação multimédia de uma forma simples, prática e eficaz. 1.11 Arquitectura do Serviço Neste projecto foi criada uma aplicação em J2ME para dispositivos móveis em que o utilizador poderá registar-se através de um serviço já disponível (SSNT-SERVICE) e receber as notícias no seu dispositivo de acordo as suas preferências, ou então realizar uma pesquisa livre em que pode escolher qualquer tema que pretenda sem necessidade de registo prévio. Esta aplicação permite ainda realizar pesquisas por datas ou por títulos. A estrutura arquitectura geral do serviço está descrita na Figura-2 através de um esquema por forma a simplificar a compreensão. 1 Sumarização de Serviços Noticiosos Televisivos Carlos Bandeirinha, Diogo Areia 5 ALERT / SSNT-Service Captura Processamento Clientes registados Base de dados SSNT Web Page Servidor Rede WiFi Web Server AUDIMUS UMTS Figura 1.2- Arquitectura do Serviço Como se pode ver no esquema, o projecto criado será uma extensão do projecto ALERT que realiza a captura e processamento das notícias. Aproveita-se também o projecto SSNT-Service que disponibiliza as notícias numa base de dados, que é actualizada diariamente. O nosso projecto está fortemente ligado ao SSNT-Service uma vez que todos os conteúdos são retirados da sua base de dados (utilizadores, vídeo, telejornais) e o registo/alteração de perfil de utilizador é realizado na web page já existente do SSNT . Nesta arquitectura, a aplicação disponível no terminal do utilizador liga-se a um servidor que contém um web server e o reconhecedor de fala, o AUDIMUS. O web server é responsável por comunicar com a base de dados do SSNT-Service e faz também a gestão do envio dos pacotes de vídeo para o terminal do utilizador. O reconhecedor AUDIMUS funciona em modo de servidor, ou seja , recebe o áudio capturado no terminal do utilizador , faz o reconhecimento e devolve o resultado. 6 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Neste arquitectura está implícito que o utilizador necessita de estar abrangido por uma rede WiFi, no caso de usar um PDA ou por uma rede UMTS ou GPRS , no caso de usar um telemóvel. No dispositivo móvel apenas é necessário estar instalada a aplicação desenvolvida neste projecto que já está configurada para funcionar de acordo com esta arquitectura. 1.12 -Fases do trabalho Ao longo da realização deste trabalho, podemos destacar 3 diferentes etapas. • • • Estruturação da informação, implementação do servidor e da base dados Estabelecimento da ligação entre o terminal do utilizador e o servidor. A Escolha dos protocolos de comunicação que melhor se adeqúem ao tipo de serviço. Implementação de uma aplicação que seja atractiva e prática do ponto de vista do utilizador. Na primeira fase, foi necessário projectar o modo como o sistema iria funcionar, ou seja projectar o servidor e o modo como este acede á informação armazenada. Foi necessário compreender o modo de funcionamento do projecto SSNT-Service , a estrutura da sua base de dados e o modo como a informação proveniente dos telejornais era tratada e armazenada. Na segunda fase foi necessário criar rotinas de pesquisa para aceder aos pedidos do cliente. Foi necessário escolher o tipo de comunicação entre servidor e cliente e escolher os protocolos necessários para o envio dos dados multimédia(vídeo , áudio e texto). Finalmente, na terceira fase foi necessário criar um ambiente gráfico de forma a ser o mais fácil possível de manusear e navegar com comandos de voz , foi ainda necessário criar uma solução para a apresentação do vídeo das notícias no dispositivo móvel. Tivemos que fazer alguma investigação sobre as soluções existentes na criação de aplicações nos dispositivos móveis, nomeadamente ao nível do software de desenvolvimento. Nesta fase implementou-se o processo de reconhecimento de fala descrito anteriormente. 1.13 -Organização do relatório Concluída a apresentação deste projecto, no capítulo 2 abordamos o servidor, a escolha do webserver , a escolha da base de dados e as alternativas ás soluções inicialmente consideradas com o objectivo de melhorar o desempenho das pesquisas. No capitulo 3 abordamos os dispositivos móveis a que se destina este trabalho. Apresentamos uma visão geral do J2ME , que é um sub-domínio do Java, neste tipo de dispositivos (telemóveis e PDA´s). Dadas as limitações destes dispositivos escolhemos aquele que nos proporciona mais soluções ao nível de ambiente de testes e compatibilidades. No capitulo 4 abordamos a aplicação no PDA, a escolha do toolkit, o AWT ou Swing , e qual a melhor solução. Descrevemos a interface gráfica criada e o modo como disponibilizamos o vídeo neste dispositivo. No capitulo 5 abordamos o conceito de interface multimodal. Tivemos em conta as tecnologias existentes na criação de uma interface multimodal. Neste capitulo descrevemos ainda o modo como introduzimos o reconhecimento de fala na nossa aplicação. No capitulo 6 apresentamos uma descrição do serviço , especificando o conceito de serviço de matching e os tipos de pesquisas fornecidos. Apresentamos também os testes Carlos Bandeirinha, Diogo Areia 7 realizados ás codificações do vídeo ,os testes realizados no reconhecedor em diferentes ambientes e os resultados do reconhecimento de diferentes oradores. Finalmente no capitulo 7 são descritas as considerações finais relativamente ao projecto realizado. 8 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis 2 Servidor A função principal do servidor é estabelecer um meio de comunicação entre o equipamento terminal do utilizador e a base de dados. Neste capítulo está descrita a investigação realizada na escolha do webserver , o modo como se estruturou e armazenou a informação proveniente do XML , os tipos de pesquisas criados e apresentam-se as soluções inicialmente propostas , os testes realizados e os problemas que surgiram. Finalmente apresentam-se as soluções a estes problemas. Na fase inicial do projecto tentámos implementar um sistema constituído por uma base de dados nativa em XML e um servidor Web para receber pedidos dos utilizadores. A figura 2.1 apresenta de forma simplificada o que foi atrás referido. Figura 2.1-Arquitectura inicial do serviço 2.1 webserver A função do webserver é receber pedidos por parte do utilizador e devolver os resultados obtidos. A função principal deste webserver é gerar conteúdo dinâmico através de rotinas de pesquisa na base de dados desenvolvidas em Java e disponibilizar essas pesquisas ao utilizador. Como se trata de um webserver o protocolo usado na comunicação com o cliente é o HTTP . Existem algumas soluções disponíveis no mercado, a investigação que realizámos levou-nos a consideras duas alternativas, o Apache/Tomcat ou o Jetty. 2.1.1 Apache ou Jetty Na escolha do servidor Web considerámos duas soluções : Apache/Tomcat HTTP Server1 e Jetty HTTP Server2. Embora o Apache seja um servidor com bastantes funcionalidades é necessário dispender algum tempo na sua configuração, e é necessário uma máquina dedicada para correr o este servidor. Ao invés o Jetty HTTP Server é um servidor bastante mais simples de usar, é totalmente implementado em Java e pode integrar-se directamente no contexto da nossa aplicação. A escolha, portanto ,caiu sobre o Jetty. Jetty é um servidor HTTP e um servlet container 100 % Java. Isto significa que não necessitamos de configurar e executar um Web server separado ( como o apache) por forma a usar Java , servlets e JSP´s para gerar conteúdo dinâmico. O Jetty pode gerar tanto conteúdo 1 2 http://httpd.apache.org/ http://www.mortbay.org/jetty/index.html Carlos Bandeirinha, Diogo Areia 9 estático como dinâmico. Tem a vantagem de se poder executar o servidor Web e a aplicação no mesmo processo , sem grandes complicações a nível de overheads .Mais uma vez este software é Open Source ,sob a Apache 2.0 license1, o que constitui uma mais valia. 2.2 O XML Dado que na fase inicial do nosso projecto centrámos as nossas atenções no ficheiro XML proveniente da máquina PROCESS para criar a base de dados, foi necessário compreender a forma como estava organizada a informação dentro do XML. A Figura 2.2 representa de uma forma simplificada a estrutura/Hierarquia do XML2: Figura 2.2 -Estrutura do XML 1 2 http://www.apache.org/licenses/ O DTD deste ficheiro encontra-se no anexo A 10 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Em cada XML existe um elemento Transcript com os sub-domínios VersionGUID e StorySegment. O elemento VersionGUID contém a data e a hora da emissão gravada e o elemento StorySegment representa cada notícia detectada. Dentro de cada StorySegment podem existir vários TranscriptSegments, existe também um elemento ThematicDescriptorList, GeographicDescriptorList, OnomasticDescriptorList, Title, Abstract e StoryRepresentation. O elemento TranscriptSegments contém todas as frases contidas na noticia. ThematicDescriptorList representa a área temática de cada noticia, GeographicDescriptorList contém todas as referências geográficas contidas em cada notícia e OnomasticDescriptorList contém todos os nomes contidos na notícia , sejam eles nomes de pessoas, empresas, instituições, siglas, etc. O elemento Title apresenta um título para a notícia (StorySegment) , o elemento Abstract apresenta uma descrição um pouco mais pormenorizada do conteúdo da noticia e finalmente o elemento StoryRepresentation contém todas as palavras relevantes da noticia. 2.3 SAX, DOM, Base de dados nativa XML De forma a aceder ao conteúdo do XML, fomos tentados a usar um parser de XML em Java. Explorámos duas API´s , o SAX ( “Simple Api for XML”)1 e o DOM2 ( “Document Oject Model”). O SAX é uma API de XML orientada ao tratamento de eventos e faz o parsing do XML sem necessitar de ter acesso ao documento como um todo. Tem a vantagem de ser uma API rápida mas é sensível a qualquer alteração na estrutura do XML. O DOM é também uma API de XML que , ao contrário do SAX, carrega toda a estrutura do XML para memória permitindo navegar e extrair dados dessa estrutura em árvore. O DOM permite que seja usada uma linguagem de pesquisa de nós numa árvore , o XPath . A vantagem duma base de dados nativa XML quando comparada com o SAX e o DOM é o facto de podermos armazenar nesta base de dados vários documentos XML enquanto se usássemos o SAX ou DOM teríamos que nos preocupar com a manipulação de cada XML. Uma base de dados nativa XML , “Native XML Database ( NXD )”, define um modelo lógico para o documento XML o qual deve incluir elementos , atributos , PCDATA e manter a ordem da informação. Exemplos destes modelos são o XPath ,o DOM e o SAX. Este tipo de base de dados tem como unidade fundamental de armazenamento lógico um documento XML tal como uma base de dados relacional tem como unidade fundamental uma linha numa tabela. Estas bases de dados são uma ferramenta simples para manipulação de documentos XML pois mantêm o modelo do XML intacto ao mesmo tempo que permitem um armazenamento bastante robusto e eficaz. As bases de dados NXD permitem-nos fazer queries a colecções de documentos mesmo que nem todos esses documentos possuam a mesma estrutura, esta propriedade é conhecida como schema-independent. A linguagem mais utilizada para fazer queries á base de dados NXD é o XPath3 pois permite fazer queries simultaneamente a várias colecções e a sua sintaxe é relativamente simples e intuitiva. Por exemplo se considerarmos o XML da figura 2.3: 1 http://www.saxproject.org/ http://www.w3.org/DOM/ 3 http://www.w3.org/TR/xpath 2 Carlos Bandeirinha, Diogo Areia 11 Figura 2.3-Exemplo de um ficheiro XML A expressão em XPath /bookstore/book[1], selecciona o primeiro elemento <book> que é filho do elemento <bookstore>.Convém referir que o XPath possui algumas limitações, estando a ser desenvolvida uma linguagem mais apropriada , o XQuery . De forma a aumentar a performance das queries, estas bases de dados suportam a criação de índices referentes aos dados armazenados nas colecções. Estes índices podem ser usados de forma a aumentar a velocidade das queries. 2.4 Escolha da Base de Dados nativa De entre as bases de dados nativas disponíveis no mercado e dando especial atenção aquelas que são livres de qualquer custo, obtivemos as seguintes possibilidades: • • • • • • • • • • • • 1 4Suite, 4Suite Server1 Berkeley DB XML2 DBDOM3 dbXML eXist4 myXMLDB5 Ozone6 XDBM7 XDB8 Xindice9 XpSQL10 Sedna XML DBMS1 , http://4suite.org/index.xhtml http://www.sleepycat.com/products/bdbxml.html 3 http://dbdom.sourceforge.net/ 4 http://exist.sourceforge.net 5 http://sourceforge.net/projects/myxmldb/ 6 http://ozone-db.org/frames/home/what.html 7 http ://sourceforge.net/projects/xdbm/ 8 http://zvon.org/index.php?nav_id=61 9 http://xml.apache.org/xindice/ 10 http://gborg.postgresql.org/project/xpsql/projdisplay.php 2 12 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Dado que as possibilidades eram muitas, usámos alguns critérios de selecção, entre os quais a data do lançamento da ultima versão do software. Assim sendo, eliminámos as bases de dados que tinham a versão mais recente anterior a 2004. Eliminámos também as bases de dados que não tinham API´s em Java e procurámos usar uma base de dados que nos concedesse algumas facilidades, tais como bom apoio ao programador, fóruns , FAQ´s e documentação técnica. Eliminámos algumas hipóteses, mas mesmo assim ainda ficámos com bastantes opções acabando por optar pela base de dados eXist por ser a base de dados que oferecia maior documentação e suporte. 2.5 Base de Dados eXist Esta base de dados open source ,sob a licença GNU PGPL, totalmente implementada em Java, apresenta bons tempos de resposta, apresenta uma boa interface gráfica e é bastante user friendly. Como foi totalmente implementada em Java pode ser executada em qualquer máquina, platform independent. Requerimentos: Necessita do Java Runtime Environment (JRE) 1.4 ou superior. Características: -Suporta várias linguagens de queries a XML como o XQuery , XPath , XUpdate e XSLT . -Possui mecanismos de indexação automáticos que permitem aumentar a performance das queries. -Suporta actualização de dados -Suporta os protocolos SOAP e XML-RPC -Permite que sejam armazenados dados binários, por exemplo imagens, além de ficheiros XML. -Pode usada como uma base de dados embebida , embedded database, ou com um servlet numa aplicação Web. -Dispõe de drivers para acesso remoto á base de dados. -Possui API´s para acesso aos documentos através de DOM ou SAX. -Suporta os protocolos HTTP/Rest , XML-RPC, SOAP, WebDav -Limitações: -Número máximo de documentos que podem ser armazenados é 231 -Tamanho máximo de cada documento armazenado depende do número de nós que este possui , no máximo pode ter 263 nós. 2.6 XQuery vs XPath O XPath é uma linguagem bastante simples e directa para manipulação de documentos XML, possui a sua própria sintaxe para selecção de nós , elementos e atributos. O XQuery engloba todas as funcionalidades do XPath e ainda suporta expressões condicionais, construtores de elementos e expressões FLOWR ( For , Let ,Order, Where, Return). O XQuery partilha alguns conceitos do SQL.O equivalente ao SELECT do SQL é o 1 http://www.modis.ispras.ru/Development/sedna.htm Carlos Bandeirinha, Diogo Areia 13 RETURN do XQuery , o equivalente ao WHERE do SQL é o ORDER BY do XQuery , etc. Tanto o SQL como o XQuery permitem a chamada de funções já existentes ou criadas pelo utilizador. Com o XQuery é possível criar várias queries apenas num acesso á base de dados. Verificámos então que o XQuery é uma linguagem mais completa quando comparada com o XPath . Embora com, permite mais regras de sintaxe aumentar bastante a performance do sistema. 2.7 -Implementação inicial do serviço Para testar o desempenho do webserver escolhido e da base de dados nativa em XML criámos um esboço inicial do serviço para realizar alguns testes. A figura 2.4 mostra o modo como foi implementado este serviço. Figura 2.4-Serviço inicialmente implementado Usámos um browser por forma a comunicar com o servlet desenvolvido em Java. O servlet quando recebe os primeiros pedidos do browser gera HTML que indica ao utilizador os tipos de pesquisa disponíveis. No caso do utilizador usar um dispositivo móvel (PDA, Telemóvel) a interacção com o servidor já não será a mesma. Este assunto será abordado mais tarde , pois por agora só nos interessava testar o desempenho das rotinas de pesquisa na base de dados. Implementámos 3 tipos de pesquisa na base de dados: -Pesquisa Livre -Pesquisar notícia por data de emissão -Pesquisar últimas noticias A pesquisa livre ,como o próprio nome indica, possibilita a pesquisa em noticias que contenham a palavra ou as palavras pretendidas. Por exemplo, se introduzirmos no campo da pesquisa livre as palavras “José Sócrates” iremos obter como resultado , todas as notícias que contenham esse texto. A pesquisa por data de emissão de telejornal permite ao utilizador visualizar as noticias referentes á data seleccionada. Finalmente, existe também a possibilidade de se visualizar as noticias mais recentes que foram adicionadas na base de dados. Descrevemos de seguida o processo que ocorre numa pesquisa livre. Quando o se insere na barra de endereços do browser o caminho para o servlet , este gera código HTML 14 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis para possibilitar a inserção da pesquisa pretendida. Após a introdução dos dados da pesquisa pretendida, o servidor encarrega-se de processar o pedido à base de dados criando uma expressão XPath . No caso do exemplo anterior, a expressão correspondente seria: //TranscriptWordList[Word=”josé” and Word=”sócrates”]/../../../VersionGUID A query acima indicada, vai retornar a hora e a data de emissão de todos os telejornais onde as palavras “José Sócrates” existam. Como foi referenciado anteriormente, é possível escrever a mesma expressão , mas desta vez utilizando a linguagem XQuery1 .(Figura 2.5). Figura 2.5-XQuery Depois da pesquisa na base de dados , o servlet encarrega-se novamente de gerar HTML para mostrar os resultados obtidos, evidencia-se aqui a vantagem de se usar um servlet porque assim consegue-se gerar conteúdo dinâmico. A figura 2.6 mostra o resultado do que foi atrás descrito. Figura 2.6-Resultado obtido no browser 2.8 Desempenho do serviço Com a implementação descrita anteriormente, conseguimos testar a performance do serviço criado. A comunicação com o webserver não constitui nenhum problema mas a performance da base de dados nativa em XML deixou algo a desejar. Nos primeiros testes realizados , os pedidos à base de dados foram feitos em XPath e não tivemos qualquer tipo de problema pois na base de dados apenas estavam guardados 3 ficheiros XML. Os problemas começaram a surgir quando se começou a “carregar” a base de 1 http://www.w3.org/TR/xquery/ Carlos Bandeirinha, Diogo Areia 15 dados com mais ficheiros XML. Importa referir que em média cada ficheiro XML ocupa cerca de 1,5 Mb o que é bastante informação. Quando a base de dados foi carregada com cerca de 30 ficheiros XML o desempenho do servidor foi completamente desastroso , pois cada “querie” á base de dados demorava bastante tempo e ao nível de memória tínhamos problemas de out of memory. Por exemplo, com 35 documentos XML armazenados na base de dados , uma pesquisa em XPath por forma a encontrar a versão do telejornal , o titulo , o inicio e o fim da noticia , onde o texto “José Sócrates” se encontrava demorava cerca de 6 s (Figura 2.7). Figura 2.7- Performance do eXist Se quiséssemos encontrar também o sumário da referida pesquisa então já tínhamos problemas a nível da memória, como mostra a figura 2.8. 16 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Figura 2.8 Problemas de memória do eXist Noutra abordagem ao problema tentámos usar o XQuery numa tentativa de solucionar estes problemas de memória. Assim, numa pesquisa á base de dados nos mesmos moldes dos exemplos anteriores obtivemos os seguintes resultados(Figura 2.9): figura 2.9 Resultados com o XQuery Carlos Bandeirinha, Diogo Areia 17 A performance da pesquisa aumentou substancialmente ( tempo de resposta ~ 1s ). A mesma query , agora escrita em XQuery já não apresentava problemas ao nível de memória e era cerca de 5 vezes mais rápida do que a mesma query em XPath . Na figura é notório que o XQuery tem uma sintaxe mais complexa quando comparado com o XPath . O problema da base de dados parecia solucionado com a utilização do XQuery mas testes posteriores revelaram que se continuássemos a carregar a base de dados com documentos XML (realizámos testes com cerca de 100 XML) iríamos continuar a ter problemas de memória. Outro aspecto problemático foi o acesso simultâneo de vários utilizadores á base de dados, bastaram 2 utilizadores usar o serviço ao mesmo tempo para que o sistema falhar. A solução encontrada foi usar a base de dados em MySQL1 (“ssnt-db”) do projecto SSNT-Service. Esta base de dados, como descrito no capitulo 1 ,é actualizada com a informação contida no ficheiro XML sempre que se captura um telejornal. Salientamos que esta base de dados contém informação de cerca de 2 anos de telejornais e portanto quando comparada com a base de dados nativa em XML é superior em todos os aspectos ( performance , capacidade de armazenamento , gestão de memória ,..). Uma vez que o servidor foi totalmente escrito em Java tivemos que arranjar uma solução por forma a reduzir o mais possível o impacto na mudança da base de dados. A solução passou pelo projecto Hibernate2, que nos possibilitou aproveitar a maior parte do código do servidor já escrito. 2.9 O projecto Hibernate O projecto Hibernate é um software open source que facilita a interacção para entre linguagens orientadas a objectos, como o Java, e bases de dados relacionais , como o MySQL . Esta funcionalidade é conhecida na literatura inglesa como Object Relational Mapping (ORM). O ORM é uma técnica que consiste em mapear um modelo de objectos para um modelo relacional (usualmente representado por uma base de dados em SQL) . Esta técnica surge como solução para os casos em que se pretende tornar os objectos persistentes numa base de dados relacional. Com o Hibernate não nos temos de preocupar em configurar o JDBC , podemos usar domínios de objectos (POJOs) e de forma simples criar ficheiros de mapeamento baseados em XML. Estes ficheiros indicam quais os campos dos objectos que serão mapeados nas respectivas colunas da base de dados ( na tabela). O Hibernate também possui uma poderosa linguagem de pesquisa chamada Hibernate Query Language (HQL). Para integrarmos o Hibernate com o nosso serviço, tivemos que criar os objectos de acordo com as tabelas da base de dados “ssnt-db”. A figura 2.10, representa um esquema UML desta base de dados: 1 2 http://www.mysql.com/ http://www.hibernate.org 18 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Figura 2.10-Diagrama UML da base de dados do SSNT Carlos Bandeirinha, Diogo Areia 19 Depois de analisar o diagrama criámos os objectos necessários para o nosso serviço, por exemplo, para mapear a tabela “Program” tivemos que criar a classe Program.Java com os campos ProgramID (Long), Name (String),Sourcename(String) e Signature (String). Foi necessário criar os construtores adequados e métodos, “get” e “set”, para aceder e modificar respectivamente os conteúdos destes campos, foi também necessário estabelecer relações de dependência entre tabelas. A figura 2.11 mostra a estrutura da classe referida: Figura 2.11 Estrutura da classe Program.java 20 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis As tabelas e os objectos mapeadas da base de dados ssnt-db foram : Program, Episode, Story, TranscriptSegment, StoryAndDescriptor, Descriptor,User, UserAndDescriptor ,UserTopic e Category. Além das classes criadas, o Hibernate gerou ficheiros de mapeamento para cada uma das classes, por exemplo para a classe Program.Java o ficheiro de mapeamento Program.hbm.Java gerado tem a seguinte estrutura(figura 2.12): Figura 2.12-Estrutura do ficheiro Program.hbm.Java Os testes realizados foram bastante satisfatórios, considerando o exemplo da pesquisa por “José Sócrates” o tempo de resposta foi de cerca de 1,5 s ,não esquecendo que esta base de dados contém 2 anos de telejornais. Se considerarmos que a base de dados em XML teve um tempo de resposta de cerca de 1 s com 35 telejornais, concluímos que a opção de implementar o servidor com o Hibernate foi acertada. A figura 2.13 representa a estrutura final do servidor: Figura 2.13- Estrutura final do servidor O webserver recebe pedidos HTTP vindos da Web, os módulos correspondentes ás rotinas de pesquisa são implementados com o Hibernate que se encarrega de processar os Carlos Bandeirinha, Diogo Areia 21 pedidos á base de dados. Os resultados da pesquisa são devolvidos ao cliente outra vez via HTTP. 2.10 O trabalho desenvolvido A arquitectura inicialmente proposta na fig. 2.1 demonstrou ser funcional á excepção da utilização de uma base de dados nativa em XML. O tempo que se despendeu na aprendizagem de linguagens para manipulação de ficheiros XML, e na investigação de bases de dados de XML , acabou por ser fútil uma vez que este tipo de base de dados não estão ao nível das bases de dados em SQL. O arquitectura inicialmente proposta na figura 2.4 acabou por ser extremamente útil pois permitiu-nos testar o serviço criado e assim encontrar alternativas aos problemas encontrados , nomeadamente ao nível da performance da base de dados. A alternativa encontrada foi o projecto Hibernate que nos permitiu reaproveitar grande parte do código escrito em Java e usar uma base de dados em SQL muito mais fiável e completa. Deste modo criaram-se 3 tipos de pesquisa na base de dados do SSNT-Service e foi logo possível disponibilizá-las ao utilizador ainda que por intermédio de um browser. 22 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis 3 Cap.3- Dispositivos Móveis Visto que existem inúmeros dispositivos móveis no mercado tivemos que escolher quais os dispositivos móveis para os quais iríamos desenvolver a nossa aplicação. Decidimos desenvolver tal aplicação em PDA´s e em telemóveis com tecnologia Java, pois cada vez mais estes possuem maiores capacidades de processamento e memória. Decidimos desenvolver maior parte dos dispositivos móveis este serviço em Java , dada a sua universalidade, o que nos garante a compatibilidade com a existentes no mercado. 3.1 J2ME O J2ME1 é uma plataforma em Java para dispositivos móveis (embedded devices) como por exemplo, telemóveis, PDA´s , TV Box´s, etc. O J2ME é constituído por uma máquina virtual e algumas API´s já definidas pelo Java Community Process2 (JCP), podendo assim alargar-se a tecnologia Javva a todo o tipo de dispositivos móveis. A grande vantagem é o facto de se escrever o código apenas uma vez e correr as aplicações em qualquer tipo de dispositivo que suporte Java. (Write Once , Run Everywhere). Existem duas configurações para o J2ME: - Connected Limited Device Configuration (CLDC). - Connected Device Configuration (CDC). O CLDC é a mais pequena das duas configurações, concebida para dispositivos com processadores lentos, e memória limitada (telemóveis, pagers, PDA´s).Estes dispositivos têm processadores entre 16 e 32 bits e um mínimo de 128kb a 512kb de memória disponível para a implementação da plataforma Java. Figura 3.1 Dispositivos associados ás configurações CDC e CLDC 1 2 Java 2 Platform Micro Edition http://jcp.org/en/home/index Carlos Bandeirinha, Diogo Areia 23 O CDC é destinado a dispositivos que têm maior memória , processadores mais rápidos e acesso a redes com grandes larguras de banda.(TV Box´s, Gateway s, PDA´s). O CDC inclui quase todas as implementações do J2SE quando comparadas com o CLDC. Como tal , a maior parte destes dispositivos possuem processadores de 32 bits e um mínimo de 2MB de memória.(Figura 3.1) A figura (3.2) descreve o que foi dito anteriormente. Podemos observar que a configuração CLDC está completamente contida no CDC. Figura 3.2 Relação entre o CDC e CLDC Além destas configurações existem também os Perfis (Profiles). Estes perfis completam o Runtime Environment de acordo com a categoria do dispositivo. Estende-se assim a funcionalidade das configurações acima descritas. Entre vários perfis destacam-se: -Mobile Information Device Profile (MIDP). Destinado a telefones móveis , fornece as funcionalidades básicas a aplicações para dispositivos móveis, inclui interfaces para o utilizador, configurações de rede, configurações para armazenamento local, etc. Quando combinada com o CLDC fornece um ambiente de trabalho completo ,reduzindo-se assim a utilização da memória e o consumo de energia. -Personal Profile1 (PP). È um perfil usado pela configuração CDC destinado a dispositivos que requerem uma interface gráfica complexa, Applets, etc. Dispositivos deste tipo são PDA´s de ultima geração, e consolas de jogos. Inclui uma API completa de AWT ( Abstract Window Toolkit), Api´s para a Web , manipulação de ficheiros , etc. Figura 3.3 - As diferentes plataformas Java A figura 3.3 representa de uma forma gráfica a estrutura das máquinas virtuais de Java de acordo com o dispositivo a que se destina. Podemos ver que a máquina virtual para PDA´s e Tv Box´s é mais completa que a máquina virtual para telefones móveis. 1 http://java.sun.com/products/personalprofile/ 24 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Os blocos Optional Packages, presentes na figura permitem estender ainda mais a plataforma Java. Estes pacotes são criados para responder a um mercado especifico, ou seja, existem pacotes para a utilização de bluetooth, Web services, wireless messaging, multimédia e acesso a bases de dados. O esquema da figura 3.4 resume tudo o que foi dito anteriormente: Figura 3.4 API´s do J2ME Resumindo, o Java Micro Edition tem duas configurações base: O CLDC e o CDC. O Mobile Information Device Profile1 (MIDP) baseado na configuração CLCD, foi o primeiro profile em J2ME a aparecer. As aplicações em J2ME são escritas e desenvolvidas apenas uma vez para vários tipos de dispositivos móveis, fazendo uso das capacidades nativas com o mínimo uso de memória e consumo de memória. Existem já espalhados pelo mundo bastantes dispositivos compatíveis com o MIDP, como é o caso dos telefones móveis de segunda e terceira geração 3.2 Telemóveis Efectuámos algumas pesquisas de modo a ter a noção da quantidade de telemóveis que possuíam a tecnologia Java. A primeiro problema com que nos deparámos foi a quantidade de marcas e modelos existentes no mercado. Como é óbvio não foi possível 1 http://java.sun.com/products/midp/ Carlos Bandeirinha, Diogo Areia 25 analisar todos os modelos e marcas, apresentamos na tabela 3.1 alguns telemóveis compatíveis com a tecnologia Java. Tabela 3.1 Telemóveis compatíveis com Java [4] Podemos verificar que ao nível do software todos eles possuem a configuração CLDC (Connected Limited Device Configuration ) e o profile MIDP (Mobile Information Device Profile ). Estas duas configurações suportam as funcionalidades necessárias à criação de 26 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis aplicações para dispositivos móveis, por exemplo a configuração CLDC possui os pacotes Java.io, Java.Lang, Java.util e Javax.microedition.io( conexão e interfaces). Não tem suporte de vírgula flutuante, suporte completo da classe Error do J2SE, verificação de ficheiros de classes, finalização - Object.finalize() e Java Native Interface (JNI). O profile MIDP define tudo o que há no CLDC com a adição aos pacotes Javax.microedition.lcdui ( interface com o utilizador), Javax.microedition.rms (sistema de gestão de registos para persistência de informação), Javax.microedition.MIDlet (suporte para aplicações MIDP, os chamados MIDlet ´s). Os programadores que usem esta configuração podem escrever estas aplicações apenas uma vez e depois distribui-las para uma vasta gama de dispositivos móveis pois o MIDP foi adoptado como a plataforma base para bastantes fabricantes de telemóveis. Uma das ferramentas necessárias para se trabalhar com o J2ME é o J2ME wireless Toolkit. Este Toolkit1 vem com um emulador e vários skins que permite a escolha de qual o dispositivo (PDA/Telemóvel) a ser emulado, além de acompanhar vários exemplos com código fonte. Uma MIDlet é uma aplicação Java desenvolvida para ser executada num dispositivo móvel, baseado na tecnologia J2ME, que estende a classe MIDlet . A forma como se constrói uma aplicação é um pouco diferente da estrutura usada em J2SE. A classe MIDlet tem 3 métodos abstractos que são usados pela aplicação. Estes métodos são chamados a partir do gestor de aplicações do dispositivo. Ele é usado para comunicar com as aplicações que estão em execução, e é responsável por instalar, executar e, se necessário, eliminar uma aplicação de um dispositivo móvel. O método startApp é chamado imediatamente depois do construtor e cada vez que uma aplicação é iniciada.(Figura 3.5) Figura 3.5 Métodos de uma MIDlet O método destroyApp é chamado pelo gestor de aplicações para indicar que uma aplicação está prestes a terminar. Diferente do método startApp, este será chamado uma única vez durante o tempo de execução de uma aplicação. Como o MIDP não inclui a capacidade de finalizar objectos, é aconselhado que o programador o faça neste método. O método pauseApp é utilizado para notificar uma pausa na aplicação que está a ser executada. Isto pode acontecer quando o utilizador iniciar uma outra aplicação ou utilizar uma função do dispositivo que inviabilizará a execução do seu aplicação. Pelo facto da maioria dos dispositivos móveis não serem multitasking (executam várias tarefas ao mesmo tempo), este método provavelmente será chamado com uma certa frequência. Alguns dos telemóveis apresentados na tabela 3.1 possuem também a Mobile Media 2 API (MMAPI).A MMAPI, que está actualmente na versão 1.1 é um pacote opcional que dá suporte a recursos multimédia, tais como a reprodução, edição, e captura de áudio e vídeo a 1 2 http://java.sun.com/products/sjwtoolkit/ http://java.sun.com/products/mmapi/ Carlos Bandeirinha, Diogo Areia 27 partir de diversas origens. A MMAPI já é suportada pela maioria dos dispositivos que suportam a MIDP. A MMAPI, definida pela JSR1 135, não depende de protocolos ou formatos de arquivos, o suporte a diferentes formatos é da responsabilidade do fabricante. Essa flexibilidade permite que seja possível reproduzir qualquer formato de arquivo especificado pelo fabricante que implementar esta API. A figura 3.6 representa graficamente a posição que a MMAPI na estrutura de uma aplicação Java para telemóveis. Figura 3.6 MMAPI Basicamente o processo de funcionamento consiste em duas partes: • Protocol handling - é responsável pela captura de áudio e vídeo, seja de um arquivo local, captura (câmera ou microfone) ou de Streaming (RTSP). • Content handling - processa os dados recebidos, ou seja, descodifica e renderiza enviando para os dispositivos de saída como alto-falante e display. Na arquitectura da MMAPI são utilizados dois tipos de objectos de alto nível: •DataSource, que recebe a informação multimédia e faz um encapsulamento do processo de controle do protocolo. •Player, que controla o conteúdo fornecido por DataSource e, além disso, processa e envia para o dispositivo de saída adequado, display ou alto-falante. Vale a pena salientar que o DataSource não deixa visível ao programador o processo de captura de informação. Além destes objectos, existe o Manager, que cria uma instância do Player utilizado em diferentes tipos de media, que são especificados pelo DataSource. Após criado, o Player fornece à interface Control, através do método getControl(), os controles necessários para manipular o media de áudio ou de vídeo, possibilitando alternar os estados do ciclo de vida do Player. A figura 3.7 exemplifica o que foi dito anteriormente. 1 http://www.jcp.org/en/jsr/detail?id=135 28 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Figura 3.7 Arquitectura da MMAPI Para exemplificar aquilo que foi dito anteriormente a seguinte linha comandos faz tocar um vídeo em qualquer telemóvel(Figura 3.8) public void run() { try { String url = "HTTP://server/video-mpeg.mpg"; Player p = Manager.createPlayer(url); p.realize(); //Obtém o controle do video VideoControl video = (VideoControl) p.getControl("VideoControl"); //Obtém a GUI Item videoItem = (Item)video.initDisplayMode( VideoControl.USE_GUI_PRIMITIVE, null); // Adiciona a GUI ao form videoForm.append(videoItem); //Inicia o video p.start(); } catch(Exception e) {} } Figura 3.8 Instruções para a reprodução de vídeo Após estudarmos a tecnologia Java nos telemóveis concluímos que para o nosso serviço vamos necessitar de dispositivos que já suportem a MIDP e a MMAPI. Para implementar a parte gráfica podemos usar a interface gráfica disponível da MIDP ou então usar o WML1 para apresentar o conteúdo do serviço no browser incluído no telemóvel. O 1 Wireless Markup Language Carlos Bandeirinha, Diogo Areia 29 problema surge na parte do vídeo pois é necessário fazer o streaming do vídeo da noticia seleccionada via RTSP (Real Time Streaming Protocol) e nem todos os telemóveis possuem essa capacidade. Até ao momento, apenas os telemóveis mais recentes, como o Sony Ericsson Z800/V800/W800/K750/Z520 , alguns Motorola 3G (V 980 e E1000) e os Nokias Série 60 , 3ª edição. é que suportam streaming na versão 2.0 da MIDP e MMAPI versão 1.1. A figura 3.9 apresenta o aspecto de alguns desses telemóveis. Figura 3.9 Telemóveis que suportam streaming via RTSP Uma solução para resolver o problema da falta de suporte do RTSP é fazer streaming de vídeo com HTTP, no entanto sempre que o utilizador quiser visualizar o vídeo da noticia vai ter que esperar que o vídeo seja descarregado para o telemóvel antes de iniciar a sua visualização. Esta solução não parece ser a mais correcta pois o download do vídeo pode demorar bastante tempo e a memória do telemóvel pode não ser suficiente para armazenar a totalidade do vídeo. 3.3 PDA´s Os PDA´s ( Personal Digital Assistants) são computadores de dimensões reduzidas (aproximadamente o tamanho A6) dotados de grande capacidade computacional, com funções de agenda e funcionalidades elementares de um computador normal de escritório. Têm a possibilidade de interconexão com um computador pessoal e muitos deles já possuem redes sem fios (WiFi / bluetooth) para acesso a correio electrónico e Internet. Existem duas famílias principais de PDA´s no mercado de hoje: Os PalmOne e os PocketPC. Os PalmOne utilizam o sistema operativo Palm OS da PalmSource , este sistema operativo é bastante rápido e bastante fiável, embora haja poucos fabricantes a produzir esta família de PDA´s estes são actualmente os mais utilizados no mundo. Os PocketPC utilizam o sistema operativo Windows Mobile (anteriormente conhecido por Windows CE) da Microsoft, que é compatível com o Windows e foi adoptado por uma vasta gama de fabricantes. Hoje em dia com o PDA já é possível navegar na Internet , ver o correio electrónico , ouvir música em MP3 , tirar fotos, ver vídeos e até servir de controlo remoto para os aparelhos domésticos. 30 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Para testarmos o serviço usámos um PDA Ipaq H3870 da Compaq (Figura 3.10). Este PDA possui o processador “intel ARM S110” ,32 Mb RAM ,64 Mb ROM e o sistema operativo Windows Mobile 2003. Possui bluetooth integrado, o ecrã tem uma resolução de 240 x 320 pixel e 16 bits, microfone, altifalante, entrada para auscultadores, porta de infravermelhos, slot para SD card e um módulo de expansão. Este módulo de expansão pode ser usado para integrar uma placa de rede wireless. Este placa de rede foi usada para conectar o PDA á rede do L2F e do IST. Figura 3.10- Ipaq H3870 3.4 Java nos PDA´s Há 3 maneiras de desenvolver aplicações para os PDA´s , conhecidos também como PocketPc, com Java: usando a MIDP, o Personal Java1 da Sun MicroSystems e usando máquinas virtuais de Java desenvolvidas por companhias privadas. É possível executar MIDlet s em PocketPc´s com uma máquina virtual de Java previamente instalada. O IBM WebShpere Studio Device Developer2 é um software que integra todas as ferramentas necessárias para desenvolver aplicações em J2ME para múltiplas plataformas, e que traz a máquina virtual de Java (IBM-J9-MIDP) para instalar nos PocketPc e assim executar as MIDlet s. Este software traz também uma outra máquina virtual de Java (IBM-J9-PP) que possibilita execução de programas escritos em Java mas desta vez usa o Personal Profile em vez da MIDP. A API do personal profile é mais completa do que a MIDP. O preço para distribuir esta máquina virtual é de cerca de 6 dólares por unidade, mas se o objectivo do programador for apenas desenvolver uma aplicação em Java a máquina é grátis. Saliente-se o facto de haver uma grande comunidade a suportar esta maquina, bem como uma grande quantidade de documentação técnica. O Personal Java pode ser considerado como um sub-domínio do Java SE , o que obriga a que se desenvolvam as aplicações com o JDK 1.1.8. O Personal Java tem API´s melhores , nomeadamente ao nível da interface gráfica, do que a MIDP. Infelizmente este projecto está ultrapassado (Sun´s End of Life) o que significa que vai deixar de ser suportado pela Sun. Este projecto no entanto é grátis. 1 2 http://java.sun.com/products/personaljava/ http://www.ibm.com/software/wireless/wsdd/ Carlos Bandeirinha, Diogo Areia 31 Existe também máquinas virtuais de Java desenvolvidas por empresas privadas. O cReme da NSICom1 é uma máquina virtual que implementa a configuração CDC, possui plugins de Java que possibilita a visualização de applets no pocket Internet Explorer, é compatível com o JDK 1.3.1. Esta máquina virtual custa cerca de 1000 doláres por cada 40 unidades compradas, no entanto é possível testá-la pois tem um trial period de um mês. O Jeode é outra máquina virtual de Java compatível com o JDK 1.1.8. Este produto chegou a ser grátis e era incluído no CD de suporte dos Ipaq´s. Recentemente a companhia que produzia o Jeode foi comprada pela Esmertec2 e o nome da máquina mudou para JBED. Actualmente este produto não é vendido directamente ao publico mas apenas a empresas. O Mysaifu3 é uma máquina virtual compatível com o J2SE , o que permite execução de aplicações desenvolvidas com a ultima versão do Java (actualmente a versão 5.0). Este projecto é relativamente recente, tem cerca de um ano, a primeira versão foi lançada no dia 16 Abril de 2005. É um projecto que é grátis ( licença GNU/GPL) no entanto ainda há alguma falta de documentação e não existe uma grande comunidade de suporte. Algumas classes ainda não estão implementadas mas praticamente todos os meses é lançada uma nova versão da máquina virtual com melhoramentos. 3.5 Conclusão/Tomada de decisão Concluímos que os telemóveis e PDA´s hoje em dia apresentam mais soluções ao nível das capacidades de processamento e ao nível do software. No entanto devido ao elevado número de fabricantes , principalmente de telemóveis, é necessário desenvolver aplicações que sejam compatíveis com todos estes dispositivos. A solução naturalmente, está no Java , mais propriamente no J2ME. Em relação aos telemóveis notámos que todos eles possuem as API´s mais elementares para a execução de pequenos programas , mas ao nível de gestão de conteúdo multimédia ainda existem algumas discrepâncias , principalmente ao nível do streaming de conteúdo multimédia e sua reprodução. Apenas alguns modelos de telemóveis mais recentes é que suportam o protocolo RTSP, algumas pesquisas pela Internet revelaram que houve alguns investigadores que solucionaram este problema implementando eles próprios o seu protocolo, que consistia basicamente em construir pequenos pacotes do vídeo e enviá-los para a rede de forma a que MIDlet (aplicação Java no telemóvel) possa interpretálos e tocar o vídeo. No entanto como este problema sai fora do âmbito deste projecto optámos por não ir mais fundo nesta questão. Outro problema que existe é o formato do vídeo. Vimos que a MMAPI usa o player nativo do telemóvel e como tal a MMAPI é condicionada nos formatos compatíveis de vídeo. Assim nem todos os telemóveis com tecnologia Java suportam o mesmo tipo de formato de vídeo: Por exemplo o Motorola E1000 pode suportar o formato 3GPP mas o SonyEricsson Z800 já não. Por outro lado o SonyEricsson pode suportar o formato RM (RealMedia) e o Motorola não. A acrescentar a isto tivemos bastantes dificuldades em encontrar um ambiente de testes, ou seja , para testar o desempenho dos telemóveis iríamos obviamente necessitar de uma rede GSM ou UMTS bem como de telemóveis desta gama. Adicionalmente ainda teríamos que usar os SDK´s destes telemóveis que são completamente diferentes de marca para marca. Depois de reflectir um pouco com o professor João Paulo Neto decidimos não implementar o serviço nos telemóveis, mas ficando com a sensação que já dispomos de toda a tecnologia e conhecimento necessários para o fazer. 1 http://www.nscicom.com HTTP://www.esmertec.com 3 http://www2s.biglobe.ne.jp/~dat/java/project/jvm/index_en.html 2 32 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Nos PDA´s a análise que foi feita acerca das máquinas virtuais para Java revela que as soluções existentes no mercado são bastante heterogéneas entre si e são quase todas pagas, exceptuando o Mysaifu e o Personal Java, o que pode ser um entrave a este tipo de tecnologia. Existem alguns rumores1 que a Sun já desenvolveu uma máquina virtual Java para o PocketPc chamada Captain America e que não a distribui porque não existe mercado suficiente que justifique o seu lançamento e suporte. Após alguma reflexão decidimos realizar testes nas máquinas virtuais Jeode , cReme, Mysaifu e IBM-J9 de forma a decidir qual a máquina a ser usada. Excluímos o Personal Java da SUN por estar em fim de vida. A aplicação a ser desenvolvida tem obrigatoriamente que ter uma interface gráfica amigável, com caixas de texto, botões e labels . É necessário ainda que haja captura de áudio para o reconhecimento de fala e é necessário também adicionar vídeo no caso do utilizador desejar ver vídeo da noticia. Os testes efectuados no Jeode revelaram que esta é uma máquina bastante completa, estável e com bom suporte ao nível de documentação. Conseguimos executar o JMF (Java Media FrameWork) que é uma API que possibilita que se adicione áudio e vídeo a aplicações Java , este assunto será abordado no capitulo seguinte. Ao nível gráfico o Jeode suporta o AWT (Abstract Window ToolKit) mas não suporta o Swing que é uma API gráfica mais completa mas também mais exigente ao nível de processamento. O Jeode não possui nenhuma API destinada á captura de áudio e também não suporta o JNI (Java Native Interface) que possibilitaria a eventual implementação da captura de áudio de forma nativa. A figura 3.11 mostra a consola do Jeode . Figura 3.11 –Consola do Jeode O cReme é uma máquina bastante rápida ao nível de processamento, com bom suporte técnico, e faz a gestão da memória melhor que o Jeode . Suporta o AWT e tem uma interface bastante amigável para execução das nossas aplicações. Nesta máquina não foi possível executar o JMF , não suporta a captura de áudio mas suporta o JNI. Só dispusemos de um mês para testar esta máquina pois no final deste tempo chegámos ao fim do trial period. A figura 3.12 mostra o aspecto da consola do cReme. Figura 3.12 Consola do creme 1 Informação obtida em fóruns , para mais informação , http://forum.java.sun.com/thread.jspa?threadID=408223&start=75 Carlos Bandeirinha, Diogo Areia 33 O IBM-J9 é também uma máquina bastante rápida que vem juntamente com um software próprio para desenvolvimento de aplicações em J2ME (WebShpere Studio Device Developer ). Não foi possível executar o JMF nesta máquina, suporta o AWT e também o SWT (Standard Widget Toolkit), não suporta a captura de áudio e suporta o JNI. (Figura 3.13) Figura 3.13- Consola do J9 O Mysaifu mesmo não sendo uma máquina muito estável revelou estar sempre em constante actualização e os responsáveis pelo projecto revelaram serem bastante receptivos aos bugs e à falta de funcionalidades da máquina. Os mails que enviámos a pedir que fossem implementadas certas funcionalidades foram sempre correspondidos com o lançamento de novas versões da maquina virtual. Quando começámos a desenvolver este projecto a máquina virtual não fazia a captura de áudio e agora já existe uma versão que faz essa mesma captura. Com esta máquina não foi possível executar o JMF, suporta o AWT e o Swing (bastante instável) e suporta JNI.(Figura 3.14) Figura 3.14 Consola do Mysaifu Decidimos então integrar o serviço na máquina virtual Mysaifu sobretudo por ser um projecto grátis e por estar em constante actualização. No entanto, durante a realização deste projecto fomos sempre testando o comportamento das outras máquinas na aplicação desenvolvida. 34 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis 4 Cap4 – A aplicação no PDA Para saber desenhar e implementar boas interfaces, o primeiro passo consiste em aprender uma linguagem de construção de interfaces gráficas. Para isso é importante seleccionar os componentes gráficos apropriados para a interface gráfica do utilizador, Graphical User Interface, (GUI). No nosso projecto abordámos duas hipóteses diferentes de conjuntos de componentes, sendo elas o AWT e o Swing . Ambos os conjuntos de componentes fazem parte das classes fundadoras de Java, Java Foudation Classes1 (JFC). As JFC são um conjunto de bibliotecas de classes fornecidas como parte do Java 2 Platform, Standard Edition (J2SE) por forma a suportar as GUI e as funcionalidades gráficas para as aplicações dos utilizadores, que podem correr em plataformas populares como o Microsoft Windows, Linus e Mac OSX. 4.1 Visão Geral do AWT (Abstract Window Toolkit) O AWT é o toolkit original criado para realizar interfaces gráficas em Java, estabelecendo uma ligação entre a aplicação do utilizador e a GUI nativa, isto é permite ao utilizador realizar a sua aplicação num nível superior de abstracção em que não precisa de se preocupar com os pormenores que estão por trás da GUI em que o programa irá correr. Muitas vezes é designado como “o menor denominador comum de todas as plataformas”. Disponibiliza muitos componentes padrão à GUI tais como botões, listas, menus, áreas de texto, etc. Inclui também recipientes (tais como janelas e barras de menu) e componentes de níveis superiores (tais como uma caixa de diálogo para gravar ou abrir ficheiros). Existem ainda classes que permitem trabalhar em contextos gráficos, incluindo operações básicas de desenho, imagens, letras e cores. Um outro grupo importante de classes do AWT são os layout managers, que controlam o tamanho e a posição dos componentes, mantendo-os sempre ordenados. Por fim temos que tornar a aplicação interactiva, ou seja, é preciso criar rotinas que lidem com os eventos que ocorrem quando o utilizador realiza uma acção. Tudo o que o utilizador faz ao nível da aplicação é representado pela classe abstracta AWTEvent. Os componentes geram subclasses AWTEvent, sempre que algo ocorre. Essas subclasses são designadas Listeners, que por sua vez realizam o processamento dos eventos. A cada evento corresponde um determinado grupo de Listeners que por sua vez tem um determinado número de métodos associados ao tipo de acções que queremos detectar. Desta forma é possível ter controlo da aplicação e de cada um dos componentes, como por exemplo, saber se um botão foi pressionado, ou se a caneta do PDA entrou numa determinada área e desta forma desencadear as acções que queremos realizar. De seguida podemos ver a listagem detalhada dos diferentes componentes existentes no AWT(fig. 4.1), assim como a listagem dos layoutmanagers (fig. 4.2) e dos eventos (fig. 4.3) e as suas subclasses. 1 http://java.sun.com/products/jfc/index.jsp Carlos Bandeirinha, Diogo Areia 35 Figura 4.1-Componentes do AWT Figura 4.2 Layouts do AWT 36 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Figura 4.3 Eventos do AWT As principais vantagens de AWT são que este vem em modo padrão com cada versão de Java. Isto significa que não é necessário a sua instalação, pois está disponível em qualquer ambiente runtime de Java, e terá sempre as características esperadas. O AWT é também muito simples e estável uma vez que por opção da Sun Mycrosystems são usados somente componentes válidos para todos os ambientes Java. Em consequência, e infelizmente, alguns componentes geralmente usados, tais como tabelas, árvores, barras de progresso, e outras, não são suportados. Para as aplicações que necessitam este tipo de componentes é necessário criá-los, que acaba por ser uma solução bastante complicada. A fim de resolver as limitações e os problemas a nível de desempenho do AWT, a Sun Microsystems criou uma estrutura nova que usasse componentes emulados em vez dos componentes nativos, o Swing . 4.2 Visão Geral do Swing O Swing implementa um conjunto de componentes GUI baseados na tecnologia do AWT por forma a tentar resolver a maioria das falhas e problemas encontrados. Os objectos do Swing são escritos em Java puro e apresentam o mesmo look and feel em todas as plataformas. No entanto, podem ser adaptados pelo programador para estilos particulares. Com o Swing , a Sun Mycrosystems criou um toolkit muito bem projectado, flexível e poderoso, tornando-o mais robusto mas ao mesmo tempo mais complexo e complicado de aprender, o que por vezes não é necessário para situações mais comuns e simples. O Swing não só disponibiliza muitos componentes novos como apresenta componentes já existentes no AWT mas com melhor funcionalidade. No Swing temos também disponíveis alguns “extras” para facilitar e melhorar a interacção do utilizador com a Carlos Bandeirinha, Diogo Areia 37 aplicação, assim como os tooltips (pequenas instruções para o uso de cada componente), ou a possibilidade de colocar Icons em alguns componentes. Os componentes do Swing (fig 4.4), os layout managers (fig 4.5) e os eventos (fig 4.6) são sumarizados nas listas seguintes. Figura 4.4 Componentes do Swing 38 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Figura 4.5 Layouts do Swing Figura 4.6 Eventos do Swing Como se pode ver, estes conjuntos são mais extensos do que aqueles fornecidos pelo AWT. Temos disponível alguns componentes que poderiam ser interessantes para a aplicação, mas os essenciais estão também presentes no AWT. Inicialmente o AWT e o Swing não funcionavam bem nas máquinas virtuais testadas, incluindo o Mysaifu , pelo que tentámos ainda uma terceira hipótese, o SWT. O SWT é uma plataforma cruzada criada para a realização de GUI’s desenvolvida pela IBM. A IBM criou um conjunto de componentes na tentativa de resolver os problemas vistos no AWT e nas estruturas do Swing . A estrutura do SWT alcança componentes nativos com JNI (Java Native Interface). Se um componente não estiver disponível na plataforma do utilizador, o SWT emula-o. Com o aparecimento de novas versões do Mysaifu , o AWT começou a revelar-se o toolkit que tinha melhores desempenhos, pelo que a nossa escolha acabou por ser mesmo esta. O AWT revela-se suficiente em termos de componentes para a nossa GUI e é bastante mais simples que as outras duas hipóteses. Apesar de algumas máquinas virtuais funcionarem com o Swing e SWT verificámos que a maioria das aplicações, mesmo as mais simples, acabavam por ter falhas. Além disso, as aplicações do Swing consomem demasiada memória, o que não é apropriado para dispositivos pequenos tais como PDAs e telemóveis. De futuro achamos que esta aplicação pode ter melhorias significativas uma vez que estão sempre a sair mais e melhores máquinas virtuais para os PDA’s que irão permitir a introdução de alguns componentes interessantes do Swing . É de notar que a aplicação foi toda construída por forma a permitir uma navegação através da fala. Para além disso é capaz de detectar o botão de gravar dos PDA’s tornando a navegação ainda mais simples. Carlos Bandeirinha, Diogo Areia 39 4.3 O desenvolvimento da interface gráfica no PDA Depois de termos analisado as diferentes opções (AWT, Swing , SWT) para construir a interface gráfica em Java no PDA decidimos implementar a parte gráfica em AWT. Uma das razões porque escolhemos o AWT foi porque esta API está presente em todas as máquinas virtuais testadas, é mais simples de trabalhar e embora tenha menos componentes gráficos estes são suficientes para a nossa aplicação. Outra razão tem a ver com o facto de o desempenho do AWT no PDA ser muito melhor do que o desempenho do Swing no PDA pois o Swing consome mais memória. O primeiro problema com que nos deparámos foi o facto da aparência duma aplicação em AWT ter aspectos distintos de máquina virtual para máquina virtual, ou seja, o mesmo código executado no Jeode tinha um aspecto diferente do J9 e um aspecto diferente do Mysaifu . Vejamos o caso do painel principal da nossa aplicação nas diferentes máquinas virtuais (Figura 4.7) Figura 4.7- Painel principal da aplicação nas diferentes máquinas virtuais Embora á primeira vista o aspecto seja o mesmo para todas as máquinas virtuais isso não é verdade, senão vejamos o tipo e o tamanho das letras. Podemos verificar que o tamanho das letras diferem de máquina para máquina, no caso do Mysaifu existe algum texto que sai fora dos limites do visor do PDA. No caso do J9 da IBM as letras eram demasiado pequenas , enquanto que nas restantes máquinas este problema já não existia. Podemos ver que as máquinas são heterogéneas entre si e portanto é praticamente impossível estar a desenvolver uma aplicação gráfica para todas as máquinas pois ao optimizar o código para uma dada máquina estávamos a estragar a disposição gráfica noutras máquinas. Tivemos então que tomar uma decisão. Novamente escolhemos o Mysaifu como plataforma preferencial. Embora o problema das letras continuasse a existir entrámos em contacto com o responsáveis do Mysaifu e semanas mais tarde saiu uma versão melhorada a nível gráfico e já com os tipos e tamanhos de letra correctos. Vejamos as diferenças da fig.4.8: 40 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Figura 4.8 Diferença entre as versões do Mysaifu Com esta nova versão do Mysaifu , podemos ver que o tamanho e o tipo de letras foram corrigidos. Estávamos então em condições de avançar na implementação gráfica do serviço no PDA. Um dos principais condicionantes na disposição gráfica dos menus, caixas de texto , botões , labels , etc , era a questão da navegação por fala. Dado que esta interface gráfica poderia ter a funcionalidade de navegação por fala foi necessário desenvolver esta mesma aplicação de forma a que possa ser totalmente controlada por fala. Neste contexto criámos duas possibilidade: o utilizador usa a caneta para carregar no botão de reconhecimento de fala da aplicação ou então o utilizador pressiona num botão predefinido do PDA para iniciar o processo de reconhecimento, vejamos as figuras 4.9 e 4.10 . Figura 4.9 Activação do reconhecimento de fala na aplicação Figura 4.10 Activação do reconhecimento de fala no PDA Carlos Bandeirinha, Diogo Areia 41 Sempre que é accionado o processo de reconhecimento (passo 1) a aplicação liga-se ao reconhecedor de fala onde são carregadas as gramáticas (passo 2) e finalmente começa a captura de áudio e respectivo reconhecimento (passo 3). No passo 2 é necessário aguardar algum tempo para que as gramáticas sejam carregadas para a memória do reconhecedor. A vantagem de usar o botão presente na estrutura do PDA é o facto de não se usar a caneta para navegar nos conteúdos e portanto facilitar bastante o uso desta aplicação, libertando o utilizador do enfadonho processo de usar o teclado virtual do PDA. Este processo foi implementado usando os listeners do AWT, mais propriamente o keylistener. Assim é possível saber qual foi a tecla pressionada e executar as operações inerentes a este evento. O AWT revela-se suficiente em termos de componentes para a nossa GUI e é bastante mais simples que o Swing . No entanto o Swing é uma API que apresenta muitas mais soluções para a construção da GUI, por exemplo, permite que o texto apresentado esteja escrito em HTML ,permitindo que o texto tenha diferentes estilos e cor. Com o Swing é possível adicionar num scroll pane vários componentes como texto , áudio e imagens, é possível criar caixas de diálogo , labels com imagens, separadores, tooltips , barras de progresso , Jtrees , etc. Apesar do Mysaifu ser compatível com o Swing verificámos que a maioria das aplicações , mesmo as mais simples, acabavam por ter falhas e aquelas que funcionavam eram demasiado lentas. Além disso as aplicações em Swing consomem demasiada memória o que não é apropriado para dispositivos móveis , como PDA´S e telemóveis. Vejamos a figura 4.11 Figura 4.11 Aplicação em Swing no PC e no PDA Como foi dito, algumas aplicações em Swing não funcionam no PDA , de futuro com o lançamento de novas versões da máquina virtual Mysaifu estes problemas poderão ser resolvidos. Na figura acima a aplicação Converter funciona no PC mas no PDA tem problemas a nível de memória (JVM Heap error). Figura 4.12 Aplicação em Swing no PC e PDA 42 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis No exemplo da figura 4.12, a aplicação ListDemo funcionava no PDA mas a performance era muito lenta. Concluindo, o AWT revelou ser a melhor solução para desenvolvermos a GUI, a máquina Virtual Mysaifu foi a plataforma alvo escolhida por estar em constante desenvolvimento e ser grátis. O Swing revelou ser uma API muito completa , mas é bastante instável no PDA, apresenta mais soluções a nível gráfico ,o que pode tornar a aplicação mais agradável e mais funcional , no entanto o AWT possui os componentes básicos para a construção da GUI. O modo como foi projectada a GUI teve em conta o facto de esta poder ser controlada por fala. 4.4 O Vídeo no PDA As máquinas virtuais testadas não possuem API´s para a visualização de vídeo. Foi preciso recorrer a API´s externas como o Java Media Framework (JMF) e a aplicações externas como o RealPlayer for PocketPc1. Estas aplicações suportam o protocolo RTSP. Este protocolo é direccionado especialmente para o streaming de áudio e vídeo pois funciona em cima do protocolo UDP2 , ao contrário do HTTP que funciona em cima do TCP3. Não se garante a entrega de todos os pacotes, mas consegue-se receber um fluxo de pacotes contínuo, assegurando-se assim que o utilizador visualize um vídeo sem interrupções e fluído. A vantagem entre o protocolo RTSP e o protocolo RTP ( Real Time Protocol) é que no RTSP temos uma ligação bidireccional, podendo o utilizador dar alguns comandos ao servidor, tais como retroceder o filme, mudar de capitulo, etc. 4.4.1 Java Media Framework O Java Media Framework4 é um pacote opcional do Java 2 Standard Edition que adiciona a funcionalidade de mostrar vídeo e áudio em aplicações Java e applets. Com o JMF é possível controlar a aquisição e o processamento de informação multimédia em tempo real ou em modo offline. Este pacote permite que as aplicações em Java desempenhem novas funções como : • Playback de conteúdo multimédia • Captura de áudio através de microfone e através de uma câmara • Fazer streaming de media para a Internet • Fazer conversão e manipulação de formatos multimédia • Guardar conteúdo multimédia num ficheiro O JMF suporta os vários formatos multimédia mais comuns como o JPEG, MPEG-1, MPEG2, QuickTime, AVI, WAV, MP3, GSM, G723, H263 e MIDI. Suporta também os protocolos mais populares como o HTTP, HTTPS, FTP, RTP e RTSP. Assim, com o JMF é possível enviar e receber streams de conteúdo multimédia o que nos interessa bastante. Existe também a possibilidade de adicionar o suporte de formatos multimédia adicionais através de uma ferramenta de configuração existente neste pacote. 1 http://www.realnetworks.com/industries/serviceproviders/mobile/products/player/ppc/install.html User Datagram Protocol 3 Transmission Control Protocol 4 http://java.sun.com/products/java-media/jmf/ 2 Carlos Bandeirinha, Diogo Areia 43 Existem 4 versões disponíveis para o JMF: a versão optimizada para Windows, a versão para o Linux , para o Solaris Sparc e finalmente existe uma versão cross platform que permite que se use o JMF em qualquer máquina que disponha de uma plataforma Java. Naturalmente, foi esta a versão escolhida para realizar os nossos testes. O JMF vem acompanhado com uma interface gráfica , o JMStudio (Fig 4.13), que permite aceder a todas as funcionalidades do JMF de forma fácil e simples. Figura 4.13 JMStudio 4.4.2 RealPlayer para PocketPC O RealPlayer para o PocketPc (fig. 4.14) é uma aplicação grátis para o PDA que permite aos utilizadores aceder a conteúdo multimédia através de redes WiFi ou através de redes móveis celulares. O RealPlayer permite o playback de ficheiros em formato RealAudio, RealVideo e 3GPP via streaming ou download . Permite ainda a sincronização com o RealPlayer instalado num PC. Esta aplicação está disponível para vários sistemas operativos entre os quais o Symbian OS, Palm OS e PocketPC. Está disponível também para alguns telemóveis como o Nokia 9200 Communicator e os Nokias série 60 (7650 e 3650). Figura 4.14 RealPlayer para Pocket Pc • • • • Para instalar o RealPlayer em qualquer PocketPc os requisitos mínimos são: Processador intel StrongARM ou XScale (200 MHz ou superior) 32 MB ROM 32 MB RAM Ecrã 240 x 320 pixel 4.4.3 Desempenho do JMF vs RealPlayer Como foi referido no capitulo anterior a única máquina virtual Java onde se conseguiu executar o JMF foi no Jeode . Mesmo assim foi necessário fazer algumas modificações na API do JMF de modo a conseguirmos executar o JMF. 44 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis O desempenho do JMF deixou bastante a desejar, pois revelou ser muito lento e pouco fluido na visualização do vídeo. Testámos também o desempenho do JMF num PDA mais recente (Qtek S110 ,Processador intel PXA272 417Mhz, 128 MB RAM) mas os resultados acabaram por ser os mesmos. Tentámos ainda codificar o vídeo com diferentes codecs e formatos de vídeo , a tabela 4.1 mostra os codecs e os formatos suportados pelo JMF e a tabela 4.2 mostra os requisitos em termos de largura de banda e CPU de alguns codecs testados. Tabela 4.1 Formatos e codecs suportados pelo JMF Formato JMF 2.1.1 Cross Platform Version AVI(.avi) Read/Write Audio: A-law D Audio:DVI ADPCM D/E compressed Video:Cinepak D QuickTime (.mov) read/write Audio: A-law D Audio: IMA4 ADPCM D,E Video:Cinepak D Video: H.261 - Video: H.263 D Legenda: read- significa que o tipo de média pode ser usado como input (ler de um ficheiro) write- significa que este tipo de média pode ser gravado em ficheiro D- significa que o codec pode ser descodificado e reproduzido E- significa que o codec pode ser codificado numa stream . Carlos Bandeirinha, Diogo Areia 45 tabela 4.2 Requisitos de CPU e largura de banda dos codecs Codec Format Quality CPU Bandwidth Requirements Requirements Cinepak AVI Medium QuickTime Low High H.263 QuickTime AVI Medium RTP Medium Low PCM AVI QuickTime WAV Low High High Mesmo codificando o vídeo com o codec que requer menos utilização do CPU , o Cinepak, ver tabela 4.2 o desempenho do JMF no PocketPc ficava muito aquém das expectativas. O vídeo ficava bastante pixelizado e com pouca fluidez (fig. 4.15). Figura 4.15- vídeo codificado com o cinepak A própria máquina virtual onde é executado o JMF já está obsoleta e o JMF não está optimizado para o PocketPC, pois é a versão Cross Platform e assim os recursos nativos do PDA não são utilizados como acontece com o RealPlayer. Nesta versão também não é possível a captura de áudio e vídeo. 46 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis A vantagem de trabalhar com esta API é ter o controlo completo do streaming de vídeo, ou seja , o JMF pode ser configurado para funcionar como servidor de streaming de vídeo via RTP (Real Time Protocol) e também pode ser usado como cliente de uma sessão RTP e receber o stream vídeo. O desempenho do RealPlayer foi muito melhor do que o do JMF , conseguimos receber uma transmissão de vídeo de uma forma fluida , com boa qualidade e sem interrupções, tivemos apenas de codificar o vídeo a enviar para o formato RealMedia (.rm) e usar o Helix Streaming Server como servidor do vídeo via RTSP. Actualmente os codecs suportados por este Player são o realvideo 8 e realvideo 9 , ao contrário da versão para PC que já suporta o realvideo 10. Codificámos os vídeos do telejornal de forma a serem compatíveis com a capacidade de processamento do PDA. Esta versão do RealPlayer não suporta SMIL1 , tentámos entrar em contacto com a RealNetworks2 para saber para quando está previsto o lançamento duma versão que suporte o SMIL mas não obtivemos resposta. Nesta fase do projecto deparámo-nos com 3 hipóteses para implementar o serviço no PDA: 1-Utilizar a aplicação desenvolvida em Java conjuntamente com o JMF para visualizar o vídeo; 2- Utilizar a aplicação desenvolvida em JAVA conjuntamente com o RealPlayer para a visualização do vídeo; 3-Utilizar um browser (Internet Explorer for pocket pc) para introduzir a pesquisa e navegar nos conteúdos disponibilizados pelo servidor conjuntamente com o RealPlayer para visualizar o vídeo. Perante estas 3 possibilidades apresenta-se de seguida os prós e contras de cada uma dessas opções. 4.5 Browser + RealPlayer A vantagem de usar esta opção é o facto de ser relativamente fácil criar uma página Web em HTML para navegar no serviço. Esta técnica já foi implementada para testar o servidor , como foi referido no capítulo 2. É também trivial usar-se o RealPlayer para visualizar o vídeo, bastando para tal criar uma hiperligação com o MIME Type correspondente (application / real vídeo). A desvantagem desta solução é o facto de não podermos capturar voz e assim estamos impossibilitados de criar um serviço multimodal. Existe no entanto, um novo tipo de browser (XHTML+Voice) que permitem a interacção com o utilizador de uma forma multimodal , fazendo o reconhecimento de fala . Este assunto será abordado no capitulo 6. Esta opção não foi levada em conta por não se adequar ao tipo de aplicação pretendida no dispositivo móvel, 4.6 Java + JMF A vantagem de usar esta solução é o facto de termos o controlo total da aplicação no pocket PC. Tanto a visualização do vídeo como a GUI são inteiramente escritas em Java e portanto , completamente portáveis para vários sistemas operativos que tenham uma máquina virtual de Java. Com esta solução é ainda possível fazer a captura de áudio permitindo que se construa um serviço multimodal. A desvantagem desta solução é o desempenho do JMF ser medíocre, o vídeo é pouco fluido e com baixa qualidade, ainda por mais apenas funcionou numa máquina virtual, que foi 1 2 Synchronized Multimedia Integration Language (http://www.w3.org/TR/REC-smil/) http://www.realnetworks.com/ Carlos Bandeirinha, Diogo Areia 47 o Jeode . Futuramente, se o desempenho do JMF for melhor nos PDA´s esta será a melhor opção mas como o desempenho do vídeo é mau esta opção não foi considerada. 4.7 Java + RealPlayer A vantagem de usar esta solução é o facto da visualização do vídeo ser bastante boa. Outra vantagem é poder aproveitar-se alguns módulos do projecto SSNT , como é o caso do servidor de streaming , o Helix Streaming Server e também aproveitámos o facto da codificação do vídeo das noticias no projecto SSNT ser em RealVideo. Com esta solução é também possível construir um sistema multimodal com o Java. A desvantagem é dependermos de uma aplicação externa para fazer o tratamento do vídeo. A partir da aplicação em Java é necessário lançar o RealPlayer. Existe em Java uma classe chamada Runtime com os métodos getRuntime () e exec () que permite que sejam executadas aplicações externas com apenas algumas linha de código (fig. 4.16): Figura 4.16- Runtime.exec() Estas instruções lançam o RealPlayer para fazer o streaming e playback do ficheiro Telejornal.rm que está na máquina local. Na implementação desta classe tivemos bastantes problemas pois nas máquinas virtuais que testámos só o Mysaifu possuía esta classe, e mesmo assim esta classe não funcionava como era devido. Para solucionar este problema , implementou-se esta classe de forma nativa e integrou-se com o Java através do JNI (Java Native Interface).Só depois de entrarmos em contacto com os responsáveis desta máquina é que o problema foi solucionado com o lançamento de uma nova versão do Mysaifu . Esta foi a solução adoptada para o projecto por nos parecer aquela a que conduz a uma melhor qualidade de serviço. A figura 4.17 mostra de uma forma simplificada o que foi atrás descrito. 48 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Figura 4.17 Solução Java +RealPlayer Na aplicação desenvolvida inteiramente em Java existe a possibilidade de efectuar 3 tipos de pesquisas. O resultado dessa pesquisa é mostrada ao utilizador e se este pretender visualizar o conteúdo da notícia é lançada uma aplicação externa, o RealPlayer que permite que seja visualizado o vídeo no dispositivo. Do lado do servidor foi necessário incluir o Helix streaming server para fazer a distribuição do vídeo. 4.8 Helix Streaming Server Uma vez que a maior parte dos vídeos exigem recursos muito significativos do ponto de vista de capacidade de armazenamento no PDA é necessário que as suas reproduções ocorram de forma imediata, sem necessidade de aguardar a transferência completa do arquivo. Esta é uma potencialidade associada à técnica de media streaming. Para o servidor de vídeo optar-se-á pelo Helix Universal Server1, que suporta os três principais formatos de streaming: Windows Media, QuickTime, Real vídeo, MPEG-1, MPEG2, MP3 e MPEG-4.O Helix Streaming Server é um servidor de media , multiformato, compatível com vários tipos de sistemas operativos. Suporta os formatos RealAudio, RealVideo, Windows Media , QuickTime, entre outros. O streaming é efectuado usando o protocolo RTSP. 4.9 Integração com o projecto SSNT-Service No projecto SSNT a emissão televisiva do telejornal é gravada para um ficheiro de vídeo em formato AVI. Posteriormente é feita uma conversão de formatos (Avi para Realvídeo) para se integrar o vídeo com o Helix Streaming Server e para se construir um ficheiro SMIL (Synchronized Multimedia Integration Language) o que possibilita a inclusão de legendas na altura da visualização do vídeo. No âmbito desse projecto se o utilizador 1 https://helix-server.helixcommunity.org/ Carlos Bandeirinha, Diogo Areia 49 desejar ver o vídeo necessita de ter instalado no seu PC o RealPlayer para PC. O vídeo codificado para este tipo de audiência tem um bit rate de 450kbps , 25 imagens por segundo e a dimensão da imagem é de 284 x 288 pixel, o codec utilizado é o RealVídeo 9. No projecto SSNT existe apenas um único ficheiro de vídeo com todas as noticias do telejornal sendo depois gerados vários ficheiros SMIL de acordo com o número de noticias contida nesse telejornal. Os testes que efectuamos revelaram que o RealPlayer para o PocketPc não possui suporte para SMIL. Tal facto obrigou-nos a gerar um ficheiro de vídeo distinto para cada noticia em cada telejornal gravado. Ao invés, no projecto SSNT existe apenas um ficheiro de vídeo por cada telejornal gravado e vários ficheiros SMIL. Outro factor a ter em conta é o facto de não se poder adicionar legendas na visualização do vídeo no PDA. Também foi necessário modificar as características da codificação do vídeo pois naturalmente a capacidade de processamento do PDA não é igual à de um PC. Criámos então uma audiência especifica para o PDA com um bit rate de 50 Kbps , tamanho da imagem de 224 x 168 e o codec utilizado foi o RealVideo 8 (não suporta versões posteriores). Na fase final ainda tentámos encontrar SMIL players para o PocketPC, mas as soluções que encontrámos na Internet revelaram ser bastante instáveis e sem possibilidades de realizar streaming. A figura 4.18 mostra o que foi dito anteriormente. Figura 4.18 Integração com o projecto SSNT 4.10 Descrição do trabalho realizado Nesta fase do projecto abordou-se a implementação gráfica da aplicação no PDA , investigámos as vantagens e desvantagens dos toolkits disponíveis em Java , o AWT e Swing. O toolkit escolhido foi o AWT como se refere nas secções 4.2 e 4.3. Tivemos alguns 50 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis problemas na portagem desta interface para as diferentes máquinas virtuais, uma vez que o aspecto gráfico variou de máquina para máquina. O Mysaifu apresentou alguns problemas nesta implementação mas contactos posteriores com os responsáveis desta máquina surtiram efeito e foi lançada uma nova versão do Mysaifu com estes problemas resolvidos. Foi necessário arranjar uma solução para a visualização do vídeo, das 3 escolhas com que nos deparámos escolhemos aquela que apresentava uma melhor qualidade na reprodução do vídeo, a solução escolhida foi desenvolver a aplicação em Java conjuntamente com o RealPlayer. Com esta solução, apenas foi necessário criar um processo paralelo na codificação e armazenamento de vídeo do projecto SSNT-Service (fig. 4.18). Nesta altura já tínhamos criado a maior parte do serviço proposto inicialmente faltando somente a inclusão de reconhecimento de fala na interface. Este assunto será analisado no capítulo seguinte. Carlos Bandeirinha, Diogo Areia 51 5 Cap.5 Interface Multimodal com fala 5.1 Tecnologias existentes Existem inúmeras tecnologias de reconhecimento de fala no mercado. A maior parte delas são para PC mas cada vez mais começam a aparecer aplicações para reconhecimento de fala em dispositivos móveis (telemóveis e PDAs ) , em automóveis, electrodomésticos e mesmo em nossa casa (dispositivos para acender lâmpadas, ligar a televisão ,etc.). Naturalmente a capacidade de processamento e a memória dos dispositivos móveis não é a mesma dos computadores de secretária e como tal, os programas de reconhecimento de fala para os dispositivos móveis têm vocabulários limitados. Por exemplo, um PDA , iPaq 3800 com um processador Intel StrongARM a 200Mhz e 64MB de RAM , apenas consegue reconhecer alguns milhares de palavras enquanto um telemóvel activado por fala apenas consegue trabalhar com poucas centenas de palavras. É necessário então adaptar os motores de reconhecimento de fala , limitando o tamanho do vocabulário de forma a optimizar a memória consumida e o tempo de processamento nos dispositivos móveis. Existem 2 tipos de programas de reconhecimento: • Dependentes do orador • Independentes do orador Os programas de reconhecimento de fala dependentes do orador normalmente são mais rápidos, mas pequenos e com maiores taxas de sucesso. Estes programas ajustam-se ao modo como falamos mas requerem mais tempo de aprendizagem pois é necessário treinar o programa às nossas características de fala. Um desses programas é o Voice lookUp. O Voice LookUp 1(fig. 5.1) da HandHeld Speech é uma aplicação para procurar contactos e lançar aplicações usando comando de voz. O programa necessita de ser treinado para a nossa voz. Uma das particularidades deste programa é o facto de podermos mudar e melhorar o reconhecimento. Por exemplo, se o programa encontrar um contacto que não souber pronunciar vai pedir que o utilizador treine o programa para aquele contacto. Figura 5.1- Voice Lookup Os programas de reconhecimento de fala independentes do orador, reconhecem a fala de qualquer utilizador sem ser necessário o treino. São programas mais fáceis de aprender a usar mas têm tendência em ser programas que ocupam mais espaço e portanto requerem mais recursos do dispositivo a que se destina. O PDsay2 da ScanSoft é um desses programas. 1 2 http://www.handheldspeech.com/ http://developer.scansoft.com/ 52 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis O PDsay (Fig.5.2) à semelhança do Voice LookUp permite ao utilizador que se usem comandos de voz para procurar contactos e lançar aplicações. A propriedade mais interessante é o motor de TTS, quando é encontrado o contacto pretendido a aplicação “lê-nos” esse contacto através dos altifalantes embutidos no PDA. Este programa tem a particularidade de procurar contactos sem nunca ser necessário olhar para o visor do dispositivo. Figura 5.2 PDSay Concluindo, ambos os programas para funcionar num PDA ou num dispositivo móvel têm que ter comandos de voz em numero limitado de forma a poupar a memoria disponível. Mesmo assim ainda existem algumas limitações: • O software de reconhecimento de fala requer uma grande quantidade de espaço. • A qualidade dos microfones integrados não é suficiente boa. Estes programas armazenados ocupam cerca de 4Mb e podem requerer mais 4 a 5 Mb de RAM para serem executados. Os microfones incluídos nos PocketPc´s não são projectados para gravação de alta – fidelidade. Como tal, os programas vão ter mais “dificuldade” em reconhecer o discurso, é necessário falar claramente e manter a boca perto do microfone. A IBM desenvolveu o embedded ViaVoice1, que é uma edição multiplataforma que permite que se use a tecnologia desenvolvida pela IBM em dispositivos móveis como smartphones , PDA´s e componentes automóveis. Suporta uma grande variedade de sistemas operativos em tempo real ,Real Time Operating Systems (RTOS), e microprocessadores. As aplicações que usem o embedded ViaVoice podem usar esta tecnologia em duas formas: • Comando e controlo (Command and Control) em que se utiliza o reconhecimento automático de fala para receber comandos do utilizador para navegar no dispositivo móvel. • TTS (Text To Speech) – é usado para sintetizar a fala humana a partir de texto. O TTS da IBM pode ser usado para sintetizar palavras em várias línguas distintas. Finalmente, existem alguns SDKs (Software Development Kits) que podem ser usados para construir aplicações com suporte para fala. Entre os vários SDKs existentes no mercado destacam-se o IBM Embedded ViaVoice Enterprise Edition Software Developers Kit 2para o iPaq com o PocketPc2002 e o Fonix da Voiceln3. 1 http://www.ibm.com/software/pervasive/embedded_viavoice_enterprise/ http://www-306.ibm.com/software/pervasive/embedded_viavoice_enterprise/about/ 3 http://www.softplatz.com/software/fonix/ 2 Carlos Bandeirinha, Diogo Areia 53 5.2 VoiceXML O VoiceXML1 é o nome da tecnologia standard desenvolvida e controlada pelo Fórum VoiceXML2 .Esta tecnologia foi construída na sequencia de outros projectos como o VoXML 3 da Motorola e o SpeechML 4da IBM, com o objectivo de criar um standard para interagir com serviços através da interface de voz. O acesso à informação disponível na Web é feito, tradicionalmente, através de programas de visualização (browser s) que interpretam uma linguagem de marcas - como a Hyper Text Markup Language (HTML), para depois apresentarem a informação aos diversos utilizadores. O objectivo foi pois criar um conjunto de regras para os browser s operados por voz, que deram origem a uma linguagem de marcas mais rica, baseada numa linguagem de marcas estendida (eXtended Markup Language XML), o VoiceXML (fig. 5.3). O VoiceXML é uma linguagem de programação que integra a síntese e o reconhecimento de fala, com o objectivo de representar diálogos pessoa-máquina, à semelhança da linguagem HTML. No entanto, esta última assume a existência de um browser para a visualização gráfica dos conteúdos, enquanto que o VoiceXML assume a existência de um browser VoiceXML com saída e entrada de áudio. Figura 5.3 Voice XML Assim sendo, o principal objectivo desta linguagem é o de permitir que os conteúdos disponibilizados na Internet sejam acedidos pela aplicação de voz, permitindo a integração de serviços de voz e dados. As sequências de diálogos interactivos entre o utilizador e a interface vocal são convertidos em comandos HTTP e vice-versa por um gateway VoiceXML . A rede de comunicação (fig. 5.4) é composta pela: rede de telefone, um gateway VoiceXML e a rede Internet. 1 http://www.voicexml.org/ http://www.VoiceXML .org 3 http://voxml.mot.com/ 4 http://www.alphaworks.ibm.com/formula/speechml 2 54 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Figura 5.4 Rede de comunicação do VoiceXML A utilização do VoiceXML pressupõe sempre um gateway VoiceXML especializado que está ligado, tanto à rede pública de telefones, como à Internet De forma sucinta vamos explicar o modo como se processa a transferência de informação num sistema que implementa esta tecnologia. Primeiro, o utilizador faz uma chamada para um determinado número através do seu telefone. O atendimento é feito por uma entidade computacional que é o VoiceXML gateway . Depois, este faz um pedido ao servidor de documentos (o servidor pode estar em qualquer lugar da rede da Internet) que lhe vai devolver o documento pedido na chamada .Uma parte constituinte do gateway chamado VoiceXML interpreter , executa os comandos para que os conteúdos sejam “falados” pelo sistema, ouve as resposta e passa-as ao motor de reconhecimento de fala que também faz parte da gateway (fig. 5.5 e 5.6). Figura 5.5 Os componentes da gateway VOICEXML Carlos Bandeirinha, Diogo Areia 55 Figura 5.6 Detalhes da arquitectura Não há limites para as aplicações que usam o VoiceXML , seja por meio de telefone fixo ou móvel. Alguns exemplos: serviços bancários, reservas de voos, programação de lazer, comércio electrónico e acesso ao e-mail pelo sistema de voz. 5.3 XHTML+Voice O XHtml+Voice 1(X+V) é uma linguagem de marcas para o desenvolvimento de aplicações multimodais. Como o VoiceXML , o X+V aparece como resultado da crescente procura de aplicações baseadas em voz em dispositivos móveis. Ao contrário do VoiceXML , o X+V usa elementos visuais e a voz , trazendo uma nova perspectiva na construção de aplicações para dispositivos móveis, as aplicações multimodais. Ferramentas como o IBM Multimodal toolkit2 possibilitam a inclusão de controlo por fala em páginas Web, por sua vez browser s multimédia (Multimédia Browser s) como o Access3 e o Opera4 possibilitam ao utilizador a navegação nesse tipo de páginas. O X+V (fig. 5.7) surgiu devido ao facto de os dispositivos móveis serem cada vez mais pequenos e portanto os modos de interacção com o utilizador, o teclado e a caneta começarem a estar obsoletos. Criou-se assim o acesso multimodal, que combina vários tipos de input no dispositivo (voz, keyboard e caneta) de forma a facilitar a interacção com o dispositivo móvel. Por exemplo, num browser X+V no PDA é possível seleccionar items com a caneta ou com voz, é possível preencher formulários com voz , etc. Com esta tecnologia a informação no PDA pode ser visualizada ou falada. 1 http://www.w3.org/TR/xhtml+voice/ http://www-306.ibm.com/software/pervasive/multimodal/ 3 http://www.access-us-inc.com/Products/client-side/Prod_NetFront_nf_xhtml.html 4 http://www.opera.com/products/devices/multimodal/ 2 56 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Figura 5.7 Tecnologia X+V O NetFront Browser para o PocketPc suporta a tecnologia de reconhecimento de fala baseada no XHTML + Voice. Este browser usa o embedded ViaVoice da IBM suportando assim o reconhecimento e síntese de fala de dados possibilitando a introdução de dados em páginas Web com este tipo de suporte. Uma das aplicações de teste mais conhecidas é a encomenda de uma pizza (fig. 5.8): Figura 5.8NetFront Browser –Pizza Demo Concluindo, estes tipo de tecnologia introduz o conceito de aplicações multimodais que possibilitam a interacção com vários serviços usando a voz, teclado ou caneta. No exemplo da encomenda de uma pizza é possível introduzir o pedido usando a caneta ou a voz para preencher formulários ou para mudar de campo, é o utilizador que escolhe. De notar que o reconhecimento de fala neste browser é independente do orador, mas só está disponível para a língua inglesa. Os testes que realizamos com este programa foram bastante satisfatórios e com altas taxas de reconhecimento. Pensamos que no futuro este tipo de aplicações serão as mais utilizadas em dispositivos móveis de pequenas dimensões , comos os telemóveis e PDAs. Carlos Bandeirinha, Diogo Areia 57 5.4 AUDIMUS O AUDIMUS é um sistema de reconhecimento de fala contínua, independente do orador , para vocabulários largos do português europeu. O AUDIMUS usa um sistema de reconhecimento híbrido MLP/HMM no qual se usa um processo de Markov não-observável (Hidden Markov model –HMM) para modelar a natureza temporal do sinal de fala. O MLP é usado como modelo acústico no âmbito dos HMMs e estima a probabilidade a posteriori dos fones independentes do contexto que será utilizada no processo de Markov. Este reconhecedor foi usado em modo servidor, ou seja, recebe o áudio capturado no PDA e efectua o reconhecimento numa máquina dedicada devolvendo o resultado deste reconhecimento. Este reconhecedor é constituído por vários módulos: detecção do endpoint do sinal de fala, extracção de características, modelo acústico e descodificador. É possível definir o modelo linguístico deste reconhecedor, facto que se tornou bastante útil no desenvolvimento deste projecto. O modelo linguístico que usámos apenas continha os comandos de voz necessários para a navegação com fala o que permitiu obter boas taxas de reconhecimento. O modelo acústico usado no reconhecedor é o SpeechDat treinado com fala telefónica gravada a 800hz e 8 bits por amostra. O servidor do AUDIMUS foi implementado em Java, o que permitiu a fácil integração com a interface desenvolvida. 5.5 O reconhecimento de fala no aplicação desenvolvida Depois de analisarmos as tecnologias existentes ao nível do reconhecimento de fala e de fazer uma pesquisa das tecnologias desenvolvidas no INESC-L2F decidimos adicionar a funcionalidade de reconhecimento de fala na nossa aplicação usando o projecto AUDIMUS. O modo como foi implementado o reconhecimento de fala na nossa aplicação não se assemelha nem ao VoiceXML nem ao XHTML+Voice. No VoiceXML pressupõe-se a existência de um gateway onde é reconhecido o pedido de fala do utilizador. De seguida esse gateway faz uma busca numa base de dados e devolve o documento pretendido sob a forma de fala. O XHTML+Voice é uma tecnologia que pressupõe a construção de páginas web com sintaxe especifica e o uso de browsers multimodais. No nosso projecto usámos o AUDIMUS como a entidade que reconhece a fala, a aplicação desenvolvida no PDA recebe esse resultado, interpreta-o e obedece ao comando “falado”. Desta forma é possível navegar pelos menus da nossa aplicação somente com fala. Criámos assim uma aplicação multimodal. Este processo está descrito graficamente na figura 5.9. Figura 5.9 O reconhecimento de fala no AUDIMUS 58 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Quando o utilizador carrega no botão de reconhecimento da aplicação e diz “Pesquisa Livre”, é capturado e enviado o sinal de fala para o AUDIMUS, este detecta o final da palavra (EOS1) , extrai as características do sinal , compara-as com o modelo acústico e linguístico e devolve o resultado sob a forma de texto. A figura 5.10 seguinte exemplifica este processo. Figura 5.10 O processo de reconhecimento do AUDIMUS Foi necessário definir o vocabulário a ser reconhecido pelo AUDIMUS, no contexto da nossa aplicação criámos um vocabulário que servisse para navegar pela totalidade deste serviço, para tal usámos uma ferramenta especifica, o XML2FST, que a partir de um ficheiro XML cria o modelo linguístico e o léxico usados no reconhecimentos. A figura 5.11 mostra o XML com o vocabulário definido : Figura 5.11 O vocabulário escolhido Na implementação desta arquitectura no PDA tivemos alguns problemas com a máquina virtual usada, o Mysaifu . Inicialmente esta máquina não possuía API´s para a captura de áudio e portanto foi necessário implementar essas API´s de forma nativa. Após alguns contactos por correio electrónico com os responsáveis desta máquina virtual saiu uma nova versão que já permitia a captura de áudio. O áudio é capturado no PDA a 16 bits por amostra, a uma frequência de 8000hz e com apenas 1 canal. Sempre que se inicia o processo 1 End Of Sentence Carlos Bandeirinha, Diogo Areia 59 de reconhecimento, é aberto um canal de comunicação com o AUDIMUS e de seguida iniciase o envio do áudio para o AUDIMUS em tempo real. 5.6 Trabalho realizado Nesta fase do projecto começámos por estudar as tecnologias existentes ao nível do reconhecimento de fala em aplicações multimodais. De seguida centrámos as nossas atenções nas tecnologias existentes em dispositivos móveis , mas especificamente nos PDA´s. Para termos uma ideia do modo de funcionamento de uma interface multimodal instalámos no PDA o Acess Browser que contém o motor de reconhecimento da IBM, o ViaVoice. Testámos este serviço usando a demo que vem com este browser, “pizza order”. Os testes realizados mostraram que este tipo de aplicações podem ser bastante úteis pois é possível preencher formulários e navegar através de conteúdo somente com voz. O motor de TTS presente neste browser é uma mais valia. Um dos defeitos encontrados neste browser é o espaço que este ocupa na memória do PDA , tivemos inclusivamente que apagar alguns programas para instalar este browser. Na aplicação desenvolvida neste projecto, tivemos que criar rotinas para a inclusão do reconhecimento da fala. Na fase inicial apenas nos preocupámos em saber se era possível realizar a captura de áudio com o Java. De seguida centrámos as nossas atenções na ligação ao servidor do AUDIMUS, esta fase decorreu sem problemas. Na fase seguinte testámos o desempenho do reconhecimento da fala capturada no PDA, que nos surpreendeu bastante pelas elevadas taxas de sucesso no reconhecimento. Por último, incluímos todos estes processos na nossa interface. Com o objectivo de garantir um fácil acesso ao reconhecimento, incluímos um botão para o reconhecimento de fala na aplicação e criámos também um processo que detecta se o botão de gravação do PDA é premido e que inicia também o processo de reconhecimento. O vocabulário escolhido por nós foi o que nos pareceu ser o mais adequado á interface criada para a navegação entre os conteúdos, este vocabulário escolhido apenas tinha 12 palavras. Nos testes realizados no reconhecedor com um modelo de linguagem maior (64 mil palavras usado no projecto ALERT para o reconhecimento das notícias televisivas) houve uma diminuição da taxa de reconhecimento Desta forma torna-se bastante fácil manusear e navegar na aplicação ,com a inclusão da interface de voz ,o utilizador dispensa a utilização da caneta para inserir os dados no teclado virtual , tarefa que muita vezes se torna aborrecida. 60 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis 6 Capitulo 6- Descrição do Serviço / Testes De uma forma global, a aplicação desenvolvida tem a seguinte arquitectura (fig. 6.1): Figura 6.1 Arquitectura do aplicação No menu inicial da aplicação criada para o PDA foram disponibilizados 2 tipos de serviço: Serviço de matching e a pesquisa directa na base de dados. O serviço de matching serve para o utilizador consultar a existência de notícias, que ainda não tenham sido visualizadas, de acordo com o perfil definido por si. A pesquisa directa na base de dados dá a liberdade ao utilizador de pesquisar um tema á sua escolha (pesquisa livre), pesquisar telejornais por datas ou últimos títulos. Nas secções seguintes explicamos detalhadamente cada um destes serviços bem como os testes efectuados no reconhecimento de fala no PDA. 6.1 O serviço de matching O serviço de matching é o serviço em que o utilizador escolhe o tipo de notícias que deseja receber sempre que sejam processados novos telejornais. Por exemplo, pode definir o tema das notícias que deseja receber, pode ainda definir os índices geográficos e onomásticos das noticias. Esse registo é feito usando o website do serviço SSNT1. As figuras 6.2, 6.3 e 6.4 mostram o aspecto deste website.. 1 http://ssnt.l2f.inesc-id.pt Carlos Bandeirinha, Diogo Areia 61 Figura 6.2 A página de entrada do Website SSNT Figura 6.3 A página de registo do utilizador 62 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Figura 6.4 Alteração de perfil/ Definição dos tópicos Este serviço de matching podia ser implementado de duas maneiras no PDA: A primeira era usar o Pocket Outlook1, para receber os emails com a descrição das noticias encontradas de acordo com o perfil desejado, no entanto, os emails recebidos no Pocket Outlook não permitem seguir as hiper ligações presentes no texto e portanto não é possível disponibilizar o vídeo da noticia , através de um link. Nesta solução não estamos a usar a aplicação desenvolvida em Java e não temos também a possibilidade de navegação por fala. A solução utilizada foi aproveitar alguma informação da base de dados SSNT-DB e implementar o seguinte esquema de matching (fig 6.5): Figura 6.5 O esquema de matching 1 Software para a recepção e envio de e-mails presente no Windows Mobile, Carlos Bandeirinha, Diogo Areia 63 O utilizador ao introduzir o username e a password envia essa informação ao Web Server. De seguida este encarrega-se de ir á base de dados (tabela User) obter o UserID, que é usado internamente na base de dados para identificar o utilizador. A seguir obtemos de um ficheiro XML o último acesso á base de dados deste utilizador e obtemos as noticias do seu perfil que tenham ocorrido depois do ultimo acesso á base de dados. O ficheiro XML(fig. 6.6) é simplesmente um ficheiro de propriedades criado especificamente para o serviço de matching no PDA. Tem a seguinte estrutura: Figura 6.6 XML com os últimos acessos do utilizador Cada utilizador é descrito por uma chave, o userID, e por uma propriedade, a última data de acesso á base de dados. Eis o que acontece do ponto de vista do utilizador(fig. 6.7): Figura 6.7 Serviço de matching no PDA No painel principal o utilizador pode introduzir o Username e a Password, o painel seguinte indica o número de notícias não lidas e o painel seguinte mostra essas notícias. 6.2 A pesquisa directa na base de dados A pesquisa directa na base de dados permite ao utilizador escolher entre uma de 3 opções: Pesquisa livre, Pesquisar datas de telejornais, Pesquisar títulos de telejornal. O aspecto do painel de pesquisa livre está demonstrado na figura 6.8. Figura 6.8 Painel de pesquisa livre 64 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis A pesquisa livre , como o nome indica , permite ao utilizador pesquisar o texto pretendido, na base de dados. Se houver alguma noticia onde esse mesmo texto tenha ocorrido é devolvido o titulo desta noticia , o contexto onde o texto foi encontrado e claro, o vídeo desta notícia. Figura 6.9 Pesquisa livre O texto introduzido no textfield é enviado ao Web Server que por sua vez faz um pedido à base de dados. Este pedido é feito usando o projecto Hibernate, como já foi referenciado nos capítulos anteriores. O resultado é retornado e o utilizador tem a possibilidade de escolher qual a noticia que deseja. Na figura 6.9 podemos ver que aparece o titulo da noticia e também o contexto onde foi encontrada. O contexto é nada mais, do que a frase anterior , a frase onde foi encontrado o texto e a frase posterior. Deste modo é possível perceber se esta é a noticia que desejamos. O botão “ver notícia” possibilita a visualização do vídeo desta notícia. Outro aspecto que importa referir é o facto de esta busca estar limitada a 50 ocorrências para impedir que pesquisas com palavras muito comuns possam sobrecarregar a memória do PDA. Por exemplo se pesquisarmos as palavras “de”, “com”, “e”, etc. , o resultado vai ser praticamente todos os telejornais disponíveis na base de dados, o que irá sobrecarregar não só o PDA como a rede, para evitar tal facto limitámos o numero de ocorrências para 50. A pesquisa por datas de telejornal , permite ao utilizador escolher as notícias pelas datas de emissão desse telejornal (fig. 6.10). Figura 6.10 Pesquisa por datas de telejornal Mais uma vez limitamos esta busca a apenas 50 telejornais. A escolha do telejornal pretendido é feita numa primeira instância, de seguida visualiza-se todas as notícias do telejornal escolhido e mais tarde o vídeo. A pesquisa por títulos de telejornal permite ao utilizador visualizar as noticias mais recentes que foram capturadas(figura 6.11): Carlos Bandeirinha, Diogo Areia 65 Figura 6.11-Pesquisa por títulos 6.3 Comandos de voz A funcionalidade de reconhecimento de fala no PDA , permite ao utilizador dar ordens á aplicação. Naturalmente restringimos o vocabulário de forma a diminuir a ambiguidade no reconhecimento de palavras e assim aumentar as taxas de reconhecimento. O vocabulário é o seguinte: • • • • • • • • • • • “Pesquisa livre” “Pesquisar datas” “Pesquisar títulos” “ Pesquisar” “ menu inicial” “voltar” “próximo” / ”próxima” “anterior” “ver noticia” “ver notícias” “Seleccionar data” As palavras “pesquisa livre”, “pesquisar datas”, “pesquisar títulos”, podem ser utilizadas no contexto do painel de pesquisa directa (escolha do tipo de pesquisa). No painel de pesquisa livre a palavra “pesquisar” serve para iniciar a procura na base de dados do texto pretendido. As palavras “menu inicial” e “voltar” servem para regressar ao painel anterior. “Próximo”/ “Próxima” e “anterior” são os comandos usados para alternar entre as notícias quando o resultado das pesquisas são obtidos, servem igualmente para escolher a data do telejornal no painel de pesquisa de datas. “Seleccionar data” server para escolher a data no contexto do painel de pesquisa de datas. O comando de voz “ver noticia” serve para ver o vídeo da noticia escolhida e finalmente o comando “ver noticias” serve para ter acesso ás noticias obtidas de acordo com o perfil do utilizador no painel de matching. 66 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis 6.4 A codificação do vídeo Por forma a optimizar a visualização do vídeo no PDA , testámos algumas codificações diferentes para os ficheiros de vídeo. Tivemos em conta o espaço em disco que o ficheiro ocupa bem como a qualidade do vídeo no PDA na reprodução via streaming. Assim, dado que a emissão é gravada num ficheiro Avi com 384x288 pixel e 1500Kbps é necessário codificar este ficheiro para o formato RealVídeo de forma a ser compatível com o RealPlayer do pocket PC. Testámos codificações diferentes com tamanhos de imagem de 192x144 e 224x168, pois como o PDA tem o visor com dimensões reduzidas não é necessário ter um tamanho de imagem de vídeo tão grande ( 384x288 pixel). Usámos vídeos de teste com 50Kbps e 70 Kbps e com 15 e 25 imagens por segundo. A escolha recaiu sobre a codificação do vídeo com 50 Kbps , tamanho de imagem de 224x168 e 15 imagens por segundo , pois garante-se uma boa qualidade de imagem no PDA e simultaneamente garantimos que o ficheiro não é demasiado grande para ser reproduzido via streaming, por exemplo, um ficheiro de 1 minuto apenas ocupa 384 Kb enquanto que no formato Avi ocupa cerca de 20 Mb! A figura 6.12 mostra a diferença entre o vídeo no formato Avi e o vídeo no formato RealMedia Figura 6.12 A codificação do vídeo 6.5 Testes do reconhecedor em diferentes ambientes: De forma a testar o desempenho da aplicação desenvolvida numa situação real de utilização realizámos alguns testes em diferentes ambientes. O único requisito necessário para realização destes testes é ter acesso a uma rede WiFi. Os testes foram real em ambiente silencioso, na rua, com música e em ambientes com elevado número de pessoas, como é o caso de bares e cafés. Os testes realizados revelaram que existem alguns problemas relativamente ao desempenho do reconhecedor em ambientes com ruído, os restantes módulos do serviço funcionam sem qualquer tipo de problema (ligação à base de dados, streaming de vídeo). A figura 6.13 mostra a forma de onda que chega ao reconhecedor num ambiente silencioso, este teste foi realizado na sala de alunos do INESC-L2F. Carlos Bandeirinha, Diogo Areia 67 Figura 6.13 Ambiente silencioso Verifica-se que neste ambiente não existem problemas relativamente á detecção do comando de voz falado no PDA e respectivo reconhecimento de fala. Neste ambiente a taxa de sucesso do reconhecimento foi perto dos 100%. Noutra situação, a figura 6.14 mostra a forma de onda que chega ao reconhecedor num ambiente com música. Figura 6.14 Ambiente com música Neste caso tivemos grandes problemas ao nível do reconhecimento pois o reconhecedor nunca conseguiu detectar o “End Of Sentence” (EOS) necessário para a detecção do fim das palavras. A taxa de reconhecimento nesta situação foi praticamente nula pois no reconhecedor nunca foi possível detectar e seccionar e reconhecer os comandos de voz. . A figura 6.15 ilustra forma de onda adquirida num ambiente ruidoso , como é o caso do bar de Engenharia Civil do Instituto Superior Técnico. Figura 6.15 No bar de engenharia civil do IST 68 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis Nesta situação mais uma vez houve problemas na detecção do fim das palavras pois a energia do ruído confunde-se com a energia do sinal de voz. Ouve alturas em que foi possível obter bons resultados mas quando o ruído de fundo aumentava o reconhecedor deixava de funcionar. Por forma a solucionar o problema da detecção de EOS ajustámos alguns parâmetros no reconhecedor, um desses parâmetros é o backgroundtime. Este parâmetro é usado para estimar o EOS tendo em conta o ruído de fundo, mais concretamente, durante o intervalo de tempo estipulado pelo backgroundtime são usadas janelas de 10ms para calcular o valor médio do ruído ,valor este que é usado nos cálculos efectuados na detecção do EOS. Este parâmetro é modificado no ficheiro AUDIMUS.XML do reconhecedor(fig. 6.16). Figura 6.16 AUDIMUS.XML No exemplo da figura 6.16 ,o valor apresentado pelo backgroundtime é 150 , cada unidade corresponde a uma janela de 10 ms , portanto para um backgroundtime de 150 são estimados 1,5 segundos de ruído de fundo(fig. 6.17). Figura 6.17-Janela de 150*10ms=1,5s Por forma a estimar o valor adequado para o backgroundtime tivemos que ter em conta um pequeno pormenor que é o facto do PDA nos primeiros 0,3 s não enviar qualquer tipo de sinal ao reconhecedor, como se pode verificar na forma de onda representada na figura 6.18. Carlos Bandeirinha, Diogo Areia 69 Figura 6.18 silêncio provocado pelo PDA Assim, de forma empírica e após alguns testes, definimos um valor para o backgroundtime de 100, ou seja 1s. Com este parâmetro reajustado procedemos a novos testes. A forma de onda do sinal recebido não se altera, o que se altera é a precisão com que se detecta o endpoint. Com o reconhecedor optimizado , conseguiu-se obter boas taxas de reconhecimento. A detecção de EOS foi melhorada , no entanto em situações de ruído extremamente elevado (sirenes, apitos , ruído dos automóveis , vento , pessoas a falar, etc.) o reconhecedor continuou com os mesmos problemas. Ilustramos estes facto na fig. 6.19, em que se realizaram testes na varanda do L2F , situado no 2º andar do edifício do INESC . Figura 6.19 Na varanda do INESC Nesta situação , o reconhecedor teve um desempenho desastroso devido á interferência do vento no microfone. Embora tenham sido feitos alguns ajustes no reconhecedor existem situações muito difíceis de controlar e prever, como é o caso do vento a bater no microfone do PDA. No entanto em ambientes controlados o desempenho de reconhecedor foi bastante bom. 70 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis 6.6 Testes com vários oradores Realizaram-se testes com diferentes oradores a fim de testar o desempenho do reconhecedor, estes testes foram realizados nas mesmas condições (sala de alunos do INESCL2F). Os resultados obtidos foram os seguintes: Tabela 6.1 Testes com vários Oradores Comando de voz Pesquisa livre Pesquisar datas Pesquisar títulos Taxa de reconhecimento(%) 100 80 60 Pesquisar Menu inicial 100 100 Menu anterior Voltar 100 100 Próximo Próxima Anterior 80 60 80 Ver notícia Ver notícias 100 100 Seleccionar data Pesquisa directa Entrar 100 80 80 Nestes testes foram utilizados 5 oradores diferentes, todos do sexo masculino. Comprava-se que o reconhecedor é independente do orador dadas as taxas de reconhecimento tão elevadas. Os testes decorreram como esperado, conclui-se que qualquer pessoa pode usar o reconhecedor na aplicação desenvolvida. h 6.7 Resultados alcançados Relativamente ao serviço criado para a distribuição de conteúdo multimédia podemos dizer que os objectivos foram alcançados. Disponibiliza-se ao utilizador um serviço que possibilita vários tipos de pesquisa e um serviço de matching. Os testes realizados na codificação do vídeo indicaram que já é possível visualizar clips de vídeo com qualidade bastante boa, sem qualquer limitação ao nível da fluidez do vídeo e na qualidade do áudio. Para optimizarmos este aspecto codificámos o vídeo com diferentes parâmetros para escolher aquela configuração que melhor se adaptava ao PDA testado. No lado do utilizador, criámos uma interface multimodal que permite ao utilizador alternar entre conteúdos somente com voz. Os testes realizados no reconhecimento revelaram que ainda existem alguns pontos que necessitam de melhoramento , nomeadamente na Carlos Bandeirinha, Diogo Areia 71 detecção de endpoints. Preocupámo-nos em realizar o maior número de testes no reconhecimento da fala em diferentes ambientes e com diferentes utilizadores para avaliar a “usabilidade” desta aplicação. Houve situações que demonstraram ser favoráveis mas houve outras bastante adversas que impossibilitaram o reconhecimento da fala. Será necessário realizar uma investigação mais exaustiva nestes ambientes por forma a solucionar estes problemas , por exemplo a introdução de controlo de ganho poderá aumentar a taxa de reconhecimento. No entanto estes aspectos saem fora do âmbito do nosso trabalho pelo que não faz sentido abordarmos estes aspectos inerentes aos problemas de reconhecimento de fala no projecto AUDIMUS. 72 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis 7 Considerações finais 7.1 O projecto realizado O objectivo proposto para este trabalho era a realização de um serviço para distribuição de notícias multimédia para dispositivos móveis. Ao longo da realização deste projecto, fomos verificando que o conceito da segmentação, categorização e distribuição de conteúdos multimédia ainda é uma área recente mas que cada vez mais suscita interesse, uma vez que é indispensável para tornar a informação facilmente acessível. Embora este projecto tenha sido implementado somente para notícias do telejornal da RTP este serviço poderá ser facilmente aplicado a outras áreas como a meteorologia, trânsito, cinema , desporto, etc. Numa primeira abordagem, a base de dados do servidor lidava com documentos XML que continham a informação relativa aos telejornais. Os testes realizados revelaram que este tipo de base de dados (nativa em XML) apresentava bastantes limitações, nomeadamente ao nível da capacidade de armazenamento e tempos de resposta. Por forma a resolver problema concluímos que uma base de dados em SQL seria a opção mais correcta. Para realizar a comunicação com o software do cliente foi usado um servidor Web (Jetty) que desde o inicio se mostrou adequado para a arquitectura deste sistema. O Java foi a linguagem de programação escolhida para implementar este serviço, quer do lado do cliente quer do lado do servidor. Esta escolha deveu-se ao facto do Java ser uma linguagem multiplataforma e portanto ser facilmente portável para diferentes dispositivos e sistemas operativos. A maior parte dos telemóveis e PDA´s já possuem máquinas virtuais de Java que permitem a execução de programas escritos nesta linguagem, no entanto essas máquinas ainda são bastante heterogéneas entre si. Alguns telemóveis mais recentes já possuem API`s para a manipulação de conteúdo multimédia e API´s para controlo de fluxos de streaming enquanto que os mais antigos ainda não possuem essa capacidade. Tal facto associado também á falta de ambiente de testes para os telemóveis inviabilizou a hipótese de aplicar este serviço para os mesmos. Nos PDA´s a maioria das máquinas virtuais Java são pertencentes a empresas privadas como a (nscicom e esmertec). No entanto uma nova máquina virtual Java, o Mysaifu , grátis sobre a licença GPLv2(GNU Public License Version 2) revelou ser uma boa alternativa. O serviço foi testado num PDA ipaq h3870 da compaq , com o PocketPc 2002. Este sistema operativo já está obsoleto, apresentando algumas limitações, por exemplo, não suporta o protocolo 802.1x necessário para fazer a ligação ao WiFi do Instituto Superior Técnico. O serviço acabou por ser apenas direccionado para PDA´s e foi necessário construir uma interface gráfica para este dispositivo. As soluções encontradas na linguagem Java foram o AWT e o Swing . Embora o AWT tenha menos componentes gráficos do que o Swing , é mais estável e requer menos recursos ao PDA, este toolkit foi o escolhido para realizar a interface gráfica. A distribuição e visualização do vídeo foi um problema que não foi fácil de resolver pois as máquinas virtuais Java testadas não apresentavam soluções ao nível da reprodução do vídeo. Foi ainda testada uma API externa , o JMF, criada especificamente para a distribuição e reprodução de conteúdo multimédia mas o seu desempenho foi medíocre no PDA. A solução escolhida foi usar o RealPlayer para o PocketPc conjuntamente com o Helix Streaming Server para o envio dos pacotes de vídeo. A introdução de reconhecimento de fala na interface criada permitiu criar uma interface multimodal, que facilita bastante o manuseamento da aplicação, pois permite o preenchimento de campos e mudar entre menus somente com a fala. Outra das vantagens Carlos Bandeirinha, Diogo Areia 73 deste tipo de aplicações baseadas no reconhecimento de voz é que podem ser bastante interessantes para pessoas com certos tipos de deficiências, facilitando-lhes a vida em proporcionando-lhes experiências que até então eram completamente impossíveis. Para tal usámos um reconhecedor “externo” o AUDIMUS para fazer este reconhecimento. 7.2 Limitações e testes ao serviço Atendendo a que, este projecto, se direccionou para PDA’s, o utilizador necessita apenas de uma rede WiFi para utilizar o serviço. Hoje em dia, com a difusão deste tipo de redes este aspecto não constitui problema. O desempenho do serviço cumpriu com as expectativas, os testes efectuados na rede WiFi demonstraram que a ligação ao servidor e as pesquisas na base de dados eram feitas sem qualquer tipo de problemas, verificando-se o mesmo para o streaming de vídeo. Ao nível do reconhecimento de voz existiram alguns problemas relativamente a certas palavras quando se utilizou o modelo de linguagem das noticias televisivas. Quando se utilizou um modelo de linguagem mais pequeno esse problema deixou de existir, atendo a que o modelo que usámos para mudar de menus e navegar pelo conteúdo das noticias apenas tinha 12 palavras. O modelo acústico utilizado no AUDIMUS é o SpeechDat, treinado com fala telefónica 8000hz e 8bits. No contexto da nossa aplicação usou-se o microfone do PDA para capturar o áudio e enviar o sinal de fala a 8000hz e 16 bits. Embora as condições não sejam as mesmas do modelo acústico o reconhecedor funcionou bem, no entanto se tivéssemos construído um modelo acústico para este projecto poderíamos obter melhores resultados, uma vez que as características do microfone do PDA não são as mesmas de um telefone. Achámos que não seria necessário construir esse modelo porque as taxas de reconhecimento usando o SpeechDat foram muito boas, preferimos centrar as nossas atenções noutros problemas , nomeadamente ao nível da detecção de endpoints. No processo de reconhecimento de voz, o áudio é enviado para um reconhecedor externo via streaming. Este processo pode ter implicações, pois se não houver largura de banda suficiente os resultados do reconhecimento podem ser desastrosos. A introdução de codecs de modo a diminuir o tamanho do sinal de áudio seria uma boa abordagem, embora fosse tornar o aplicação mais pesada computacionalmente. Depois de alguns testes concluímos que não era necessário introduzir codecs, pois um sinal de áudio com 10s de fala apenas ocupava 170 Kb e numa rede WiFi a transmissão deste sinal apenas demorava umas fracções de segundo. De modo a aumentar a rapidez do processo de reconhecimento uma solução possível seria implementar os módulos de extracção de características e detecção de endpoints directamente no PDA, no entanto devidos a limitações no hardware e software deste tipo de dispositivos, este processo seria bastante complicado de implementar. No futuro esta solução será viável devido ao aparecimento de novos dispositivos com maiores capacidades de processamento. Os testes realizados no exterior apresentaram alguns problemas no reconhecimento da fala, mais especificamente na detecção de endpoints. Este problema tem a ver com a energia e nível de ruído elevados, principalmente em ambientes bastante barulhentos, falhando na maior parte das situações a detecção de endpoints. Sem este parâmetro a detecção do final de palavra não é estimada correctamente e o reconhecimento falha. Tentámos solucionar o problema estimando previamente o nível de ruído , mas mesmo assim ainda houve algumas situações impossíveis de solucionar (vento, ruído de automóveis, bares, discotecas, etc.). 74 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis 7.3 Desenvolvimentos Futuros Futuramente, por forma a melhorar as funcionalidades da interface multimodal poderá ser adicionado um módulo de TTS1 no PDA, com uma base de dados suficientemente pequena para não haver demasiados requisitos ao nível do processamento no dispositivo, e assim criar um sistema de diálogo básico que permita ao PDA “falar” com o utilizador. Por forma a aumentar a performance do reconhecimento e diminuir os tempos de reconhecimento poder-se-á incluir os módulos de reconhecimento directamente no PDA, ou então introduzir apenas os módulos mais importantes. Esta nova funcionalidade irá depender fortemente do modo como irão evoluir as capacidades computacionais dos dispositivos móveis. Ao nível do desenvolvimento da interface gráfica no PDA, com futuro lançamento de novas plataformas Java nestes dispositivos, já será possível usar o Swing que é um toolkit gráfico bastante mais completo que o AWT. Neste contexto poderão criar-se novos tipos de pesquisa e novas funcionalidades inerentes á utilização deste toolkit. Nestas novas plataformas poderá ser possível também integrar o vídeo na interface Java sem ter que se recorrer a aplicações externas , como foi o caso do RealPlayer. 7.4 Nota final Dado que os dispositivos móveis, sejam eles PDA’s ou telemóveis, estão em constante evolução tecnológica, caminhando-se para a integração destes dois tipos de dispositivos num único que se chamará terminal multimédia móvel, a sua importância no quotidiano de uma grande parte da população será crescente e decisiva. O conceito de terminal multimédia só terá plena abrangência se, para além das funcionalidades básicas actuais , se adicionalmente existirem tecnologias paralelas que façam a recolha, a segmentação e a categorização da informação, disponibilizando-a de uma forma simples e automática para o utilizador. Num futuro próximo as redes interactivas fornecerão um acesso fácil à informação e aos serviços, disponibilizando aos utilizadores todo um conjunto variado de informação que terá enormes repercussões no dia à dia das populações. 1 Text To Speech Carlos Bandeirinha, Diogo Areia 75 Bibliografia [1] Pereira , Gaspar, Sumarização de Serviços Noticiosos Televisivos, Tese de final de curso , Laboratório de língua falada , INESC-ID,Lisboa,2002. [2] Neto, Martins, Meinedo, Almeida, AUDIMUS. Sistema de reconhecimento de fala contínua para o português europeu, Proceedings PROPOR IV, Évora, Portugal, 1999 [3] A. Hagen , J. Neto, HMM/MLP Hybrid Speech Recognizer for the Portuguese Telephone SpeechDat Corpus, Proceedings PROPOR'03, Faro, Portugal, 2003 [4] Ali A., Arshad A, Bakar F., Video Transmission to Mobile Phones Over Wireless Networks, Multimedia communication unit , telekom Research&Development sdn.Bhd, Malásia. [5] Staken, Introduction to Native XML Databases, 31 de Outubro de 2001, (http://www.xml.com/pub/a/2001/10/31/nativexmldb.html) [6] Bourret , Ronald, XML Database Products, 5 de Junho de 2006 , (http://www.rpbourret.com/xml/XMLDatabaseProds.htm) [7] Exist database documentation, (http://exist.sourceforge.net/documentation.html) [8] Nic, Jirat , XPath Tutorial, 2000, (http://www.zvon.org/xxl/XPathTutorial/General/examples.html) [9] Hunter , Crawford, Java Servlet Programming, O´Reilly & Associates, USA, Outubro de 1998. [10] Riggs, Taivalsaari, Van Peursem, Programming Wireless Devices with the Java 2 Platform , Micro Edition, Addison Wesley, Second Edition, 13 de Junho de 2003. [11] Xquery Tutorial, (http://www.w3schools.com/xquery/xquery_intro.asp) [12] http://www.mysql.com/ [13] Hibernate reference documentation, http://www.hibernate.org/hib_docs/v3/reference/en/html/ [14] Java Platform , Micro Edition, (http://java.sun.com/javame/) [15] Topley, J2ME in a Nutshell, O’Reilly, Março de 2002 [16] Eckel B., Thinking in Java, 3 rd edition, Prentice Hall, New Jersey, 2003 [17] Eckstein R., Loy M., Wood D., Java Swing, O’Reilly , USA, 1998 [18] Topic M., Streaming Media Demystified, Mcgraw-Hill, USA, 2002 [19] Zukowski J., Java AWT reference, O’Reilly , Março 1997 76 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis [20] Helix Universal Server Administration Guide, Maio 2003 http://service.real.com/help/library/guides/helixuniversalserver/realsrvr.htm [21] http://portal.ua.pt/bibliotecad/default1.asp?OP2=0&Serie=0&Obra=31&H1=5&H2=1 [22] http://www-306.ibm.com/software/pervasive/embedded_viavoice_multiplatform/ [23] http://www-306.ibm.com/software/pervasive/embedded_viavoice_enterprise/about/ [24] http://www.windowsfordevices.com/news/NS9104815983.html [25] http://www.speechware.be/english/Tips.php#b [26] http://www.voicesignal.com/news/articles/articles_09_00_02.htm [27] Pereira F., Bernett I, Universal Multimedia Experiences for Tomorrow, IEEE Signal Processing Magazine , Março de 2003. Carlos Bandeirinha, Diogo Areia 77 ANEXO A (Alert-pt.dtd) 78 Relatório de TFC nº224 – Sistemas de distribuição de notícias multimédia para dispositivos móveis <?xml version="1.0" encoding="UTF-8"?> <!--Based on the DTD of the ECHO project--> <!--Adapted by the ALERT project for additional data handling - 6/03/02--> <!--Portuguese Extension --> <!ELEMENT Transcript (VersionGUID, StorySegment*)> <!ELEMENT StorySegment (StoryType?, (TranscriptSegment | VideoClass)+, (UserProfileList? | (ThematicDescriptorList?, GeographicDescriptorList?, OnomasticDescriptorList?, Title?, Abstract?, StoryRepresentation?)))> <!ELEMENT TranscriptSegment (TranscriptGUID, AudioType+, Speaker?, Bandwidth?, SpeakerLanguage?, Time, TranscriptWordList?)> <!--#################### Start GUID Declarations ###################--> <!ELEMENT VersionGUID (#PCDATA)> <!ELEMENT TranscriptGUID (#PCDATA)> <!--#################### End GUID Declarations ####################--> <!ELEMENT StoryType (#PCDATA)> <!-- report, filler, nontrans --> <!ELEMENT UserProfileList (UserProfile*)> <!ELEMENT ThematicDescriptorList (Descriptor*)> <!ELEMENT OnomasticDescriptorList (Descriptor*)> <!ELEMENT GeographicDescriptorList (Descriptor*)> <!ELEMENT TranscriptWordList (Word*)> <!ELEMENT StoryRepresentation (RelevantWord*)> <!ELEMENT Time EMPTY> <!ATTLIST Time start CDATA #REQUIRED end CDATA #REQUIRED reasons CDATA #REQUIRED > <!-- music, speech, noise, ... --> <!ELEMENT AudioType (#PCDATA)> <!ATTLIST AudioType start CDATA #REQUIRED end CDATA #REQUIRED > <!-- known: T | F --> <!ELEMENT Speaker EMPTY> <!ATTLIST Speaker id CDATA #IMPLIED name CDATA #IMPLIED Carlos Bandeirinha, Diogo Areia 79 gender CDATA #IMPLIED known CDATA #IMPLIED > <!-- PT / EN / FR / ... --> <!-- native: T | F --> <!ELEMENT SpeakerLanguage (#PCDATA)> <!ATTLIST SpeakerLanguage native CDATA #IMPLIED > <!-- type: Report, Cut, PivotOn, ... --> <!ELEMENT VideoClass EMPTY> <!ATTLIST VideoClass start CDATA #REQUIRED end CDATA #REQUIRED type CDATA #REQUIRED > <!ELEMENT UserProfile (#PCDATA)> <!ATTLIST UserProfile id CDATA #IMPLIED > <!ELEMENT Descriptor (#PCDATA)> <!ATTLIST Descriptor id CDATA #IMPLIED conf CDATA #IMPLIED > <!ELEMENT Word (#PCDATA)> <!ATTLIST Word start CDATA #IMPLIED end CDATA #IMPLIED conf CDATA #IMPLIED > <!-- ocurrTranscList: string with list of transcriptsegments order number in story: "0,1,5" --> <!ELEMENT RelevantWord (#PCDATA)> <!ATTLIST RelevantWord id CDATA #REQUIRED ocurr CDATA #REQUIRED ocurrTranscList CDATA #REQUIRED > <!ELEMENT <!ELEMENT <!ELEMENT --> <!ELEMENT 80 Title (#PCDATA)> Abstract (#PCDATA)> Bandwidth (#PCDATA)> Gender (#PCDATA)> <!-- Studio, Telephone <!-- M, F -->