Escolar Documentos
Profissional Documentos
Cultura Documentos
Um Framework para
Desenvolvimento de Interfaces
Multimodais em Aplicaes de
Computao Ubqua
USP So Carlos
Fevereiro/2007
Dedicatria
Agradecimentos
Aos meus familiares, Valter, Isabel e Maira, pelo apoio incondicional em todos
os momentos.
A minha namorada, Adriana, pelo carinho e compreenso.
A minha orientadora, Graa Pimentel, por toda a ajuda, confiana e liberdade
com que me permitiu conduzir a pesquisa. E principalmente, pela amizade nesses
anos de convivncia.
Aos meus amigos, ex-companheiros do Laboratrio Intermdia e atuais companheiros da IBM, pelo incentivo, disposio em colaborar e pelos momentos de descontrao.
A FAPESP, pelo apoio financeiro (processo no 03/11994-5).
ii
Resumo
iii
Abstract
Multimodal interfaces process several types of user inputs, such as voice, gestures and pen interaction, in a combined and coordinated manner with the systems
multimedia output. Applications which support multimodality provide a more natural and flexible way for executing tasks with computers, since they allow users
with different levels of abilities to choose the mode of interaction that best fits their
needs. The use of interfaces that run away from the conventional style of interaction,
based in keyboard and mouse, comes together with the concept of ubiquitous computing, which has been established as a research area that studies the social and
technological aspects decurrent from the integration os systems and devices into the
environments. In this context, the work reported here aimed to investigate the implementation of multimodal interfaces in ubiquitous computing applications, by means
of the building of a software framework used for integrating handwriting and speech
modalities.
iv
Sumrio
1 Introduo
1.1 Contextualizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Motivao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4 Publicaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
12
14
15
15
3.2 Bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
17
3.4 Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.5 Frameworks
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.6 Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
25
27
27
27
28
29
30
31
32
34
4.3.6 Ps-Processamento
. . . . . . . . . . . . . . . . . . . . . . . . . . .
35
37
37
4.3.9 Configurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
39
4.4.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
43
44
45
47
47
47
48
. . . . . . . . . . .
49
. . . . . . . . . . .
50
5.4 Especificao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
53
54
5.5 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
55
56
vi
56
57
59
60
5.8 Configurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
61
5.9.1 SpeechBoard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
5.9.2 M4Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
64
6 Trabalhos Relacionados
67
67
68
6.2.1 Put-That-There . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
6.2.2 QuickSet
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
69
70
71
72
73
75
78
82
84
. .
86
88
7 Concluses
89
89
90
91
91
Referncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
vii
viii
Lista de Figuras
13
22
4.1 Viso geral do mtodo de reconhecimento definido por Chan and Yeung
[1999]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
31
36
4.4 Diagrama de classes UML referente ao pacote core da Java Ink API
(por questes de espao, apenas os principais mtodos e atributos so
apresentados). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
41
42
ix
5.1 Exemplo de uma rvore de regras com diversos nveis criada a partir de
sub-categorizao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
5.2 Arquitetura simplifica do JMIS Framework, ilustrando os quatro mdulos principais e seus respectivos nveis.
. . . . . . . . . . . . . . . . . . .
55
58
59
5.5 Diagrama de classes para o mdulo relacionado ao Integrador Multimodal, considerado o ncleo do sistema. . . . . . . . . . . . . . . . . . . .
61
63
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
65
68
69
70
71
72
6.6 Fluxo de informao entre os componentes do W3C Multimodal Interaction Framework [W3C, 2002a]. . . . . . . . . . . . . . . . . . . . . . . . . .
73
80
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
Lista de Tabelas
4.1 Condies para a combinao de primitivas consecutivas [Chan and Yeung, 1999], onde T denota os tipos das primitivas e D suas direes. . .
34
46
62
xi
xii
Lista de Abreviaturas
API Application Programming Interface
AHR Automatic Handwriting Recognition
ASR Automatic Speech Recognition
CBSE Component-Based Software Engineering
COM Component Object Model
CORBA Common Object Request Broker Architecture
DLL Dynamic Link Library
DOM Document Object Model
DTMF Dual Tone Multi-Frequential
EMMA Extensible MultiModal Annotation Markup Language
GUI Graphical User Interface
HTML HyperText Markup Language
HPSG Head-driven Phrase Structure Grammar
IDE Integrated Development Environment
IDL Interface Definition Language
IETF Internet Engineering Task Force
InkML Ink Markup Language
IVR Interactive Voice Response
JAR Java Archive
JEE Java Enterprise Edition
JFC Java Foundation Classes
JMF Java Media Framework
JSAPI Java Speech Application Programming Interface
JSDK Java Software Development Kit
ii
CAPTULO
Introduo
1.1
Contextualizao
O progresso atual no desenvolvimento de tecnologias de hardware tem levado
CAPTULO 1. INTRODUO
Nesse sentido, os contnuos esforos empregados em pesquisas na rea de In-
terao Humano-Computador (IHC) nas ltimas dcadas resultaram no desenvolvimento de interfaces computacionais que suportam formas mais naturais de comunicao, por meio da fala, viso, toque, gestos manuais, etc. As chamadas interfaces multimodais surgiram para tomar vantagem dessas novas modalidades de interao, possibilitando uma maior comunicao com o sistema multi-sensorial humano
atravs do processamento simultneo de diferentes tipos de entrada [Dix et al., 1998].
O objetivo das interfaces multimodais suportar mltiplas modalidades de interao, como por exemplo reconhecimento de voz, gestos e escrita manual, de uma
maneira integrada e sincronizada com a sada multimdia do sistema [Oviatt and Cohen, 2000]. Essa nova classe de interfaces representa uma perspectiva de interao
que pode influenciar enormemente a produtividade dos usurios, alm de permitir
uma maior expressividade na comunicao homem-mquina.
1.2
Motivao
Aplicaes baseadas em interfaces multimodais provem uma maneira mais na-
tural e flexvel para a execuo de tarefas em computadores, uma vez que permitem
que usurios com diferentes nveis de habilidades escolham o modo de interao que
melhor se adequa s suas necessidades e preferncias. Essas caractersticas tm despertado o interesse da comunidade cientfica na construo de sistemas que suportem
o uso de interfaces multimodais, principalmente nas reas ligadas a acessibilidade e
a utilizao de computadores por pessoas portadoras de deficincias.
Entretanto, apesar da evoluo de softwares para processamento isolado de
modalidades, como por exemplo reconhecedores de voz e escrita cada vez mais precisos, e da disponibilidade de equipamentos para manipulao de diferentes tipos de
entrada, como telas sensveis ao toque e dispositivos baseados em caneta, poucas
aplicaes tm explorado as vantagens dessas tecnologias. Uma razo para isso que
o tempo gasto para se implementar uma interface multimodal proibitivo: sistemas
que envolvem esse tipo de interface so mais complexos do que os baseados em interao unimodal, o que torna o seu projeto e implementao uma tarefa demorada e
dispendiosa.
Sobretudo, interpretadores para vrias modalidades so difceis de desenvolver
devido necessidade de conhecimento especializado sobre os domnios dessas aplicaes [Flippo et al., 2003]. Algum que deseja equipar uma aplicao com tais interfaces deve partir do zero, implementando acesso a sensores externos, desenvolvendo
algoritmos para a integrao/desambigao de modalidades e fazendo chamadas a
APIs (Application Programming Interfaces) de baixo-nvel [Flippo et al., 2003]. Mesmo
1.3. OBJETIVOS
para modalidades isoladas, como o caso do reconhecimento de escrita, ainda existem poucas opes de ferramentas de desenvolvimento que possibilitem integr-las
facilmente s aplicaes, sendo a maioria composta de softwares proprietrios.
Alm disso, os sistemas multimodais atuais fazem uso de regras rgidas e sintaxes especficas sobre as modalidades envolvidas, tornando necessrio a adaptao
do usurio e aumentando a curva de aprendizado [Oviatt and Cohen, 2000]. O fato de
no poder interagir com esses sistemas de uma maneira flexvel, utilizando comandos
e semnticas definidas por ele prprio, desestimula o usurio.
Investigaes relativas a prover apoio para o desenvolvimento de interfaces multimodais tem sido reportadas, entre outros, no contexto de aplicaes Web (por exemplo [Honkala and Pohja, 2006; Taib and Ruiz, 2006]), dispositivos moveis (por exemplo
[Serrano et al., 2006; Paterno; and Giammarino, 2006; Taib and Ruiz, 2005; Hanheide
et al., 2005]) e ambientes de realidade virtual (por exemplo Latoschik [2005]; Irawati
et al. [2006]).
Honkala and Pohja [2006] estendem a proposta padro do W3C para especificao de formulrios XForms, em um modelo que combina para XForms com folhas
de estilo e controle de interao multimodais. J Taib and Ruiz [2006] investigam o
uso de interao multimodal para a personalizao de navegao.
Serrano et al. [2006] propem uma abordagem baseada em componentes para
desenvolvimento e avaliao de interfaces multimodais para telefones moveis, baseada
em um trabalho prvio do grupo relativo a componentes de software para prototipao rpida de aplicaes Bouchet et al. [2004]. Paterno; and Giammarino [2006]
apresentam um modelo e uma ferramenta para a criao de aplicaes que combinam
ambientes baseados em voz e interfaces grficas. Hanheide et al. [2005] combinam informao do ambiente e gestos na interao com dispositivos mveis do tipo wearable
device o trabalho combina reconhecimento de voz com viso para reconhecimento
de gestos.
1.3
Objetivos
A computao ubqua tem se estabelecido como uma rea de pesquisa que es-
tuda os aspectos tecnolgicos e sociais decorrentes da integrao de sistemas e dispositivos computacionais ambientes. A premissa bsica para as aplicaes ubquas
mudar o foco de interao para fora do paradigma tradicional de computao
no desktop, fugindo do modelo de interao baseado em teclado, mouse e display
[Abowd and Mynatt, 2000].
CAPTULO 1. INTRODUO
Este projeto teve como objetivo geral investigar os problemas associados in-
1.4
Publicaes
As publicaes obtidas at o momento no contexto deste trabalho foram:
http://coweb.icmc.usp.br/incaserve
http://coweb.icmc.usp.br/coweb/mostra.php?ident=167
Pimentel, M. G. C., Cattelan, R. G., Incio Jr, V. R., Baldochi Jr, L. A., CamachoGuerrero, J. A., Botero, P., Fortes, R. P. M., Pratschke, A., Farah, J. P. S.,
Goularte, R. (2004). Exploiting mobility to document the learning experience.
In: Proceedings of the 1st TIDIA Workshop: E-learning Project, 2004, So Paulo,
pp. 57-62.
Goularte, R., Camacho-Guerrero, J. A., Incio Jr, V. R., Cattelan, R. G. Pimentel, M. G. C. (2004). M4Note: a Multimodal Tool for Multimedia Annotation. In: Proceedings of the 10th WebMedia/2nd IW3C2 LA-Web Joint Conference,
Ribeiro Preto, October 2004, IEEE CS Press, pp.142-149.
Macedo, A. A., Camacho-Guerrero, J. A., Cattelan, R. G., Incio Jr, V. R., Pimentel, M. G. C. (2004). Interaction Alternatives for Linking Everyday Presentations. Technical Report, Instituto de Cincias Matemticas e de Computao,
Universidade de So Paulo. So Carlos, 2004.
Goularte, R., Camacho-Guerrero, J. A., Inacio Jr, V. R., Cattelan, R. G. (2004).
Interactive Multimedia Annotations: Enriching and Extending Content. In: Proceedings of the 2004 ACM Symposium on Document Engineering, Milwaukee-USA,
October 2004, pp. 84-86.
Macedo, A. A., Camacho-Guerrero, J. A., Cattelan, R. G., Incio Jr, V. R., Pimentel, M. G. C. (2004). Interaction Alternatives for Linking Everyday Presentations. In: Proceedings of the 15th ACM Conference on Hypertext and Hypermedia,
Santa Cruz-CA-USA, August 2004, ACM Press, pp. 112-113.
1.5
Estrutura do Documento
O restante deste documento est organizado da seguinte maneira: o Captulo 2
CAPTULO 1. INTRODUO
CAPTULO
Interfaces Multimodais e
Computao Ubqua
2.1
Consideraes Iniciais
Neste captulo so apresentados conceitos fundamentais sobre Interfaces Mul-
timodais e Computao Ubqua, alguns dos trabalhos mais relevantes em cada rea
e noes sobre o Estado da Arte. Devido a ampla abrangncia desses temas, os mesmos sero abordados sob uma perspectiva mais diretamente relacionada ao trabalho
exposto nesta dissertao.
2.2
Interfaces Multimodais
A percepo dos humanos de seu ambiente d-se por meio dos cinco sentidos:
viso, audio, tato, paladar e olfato. Esses sentidos, utilizados de maneira isolada
ou combinada, constituem uma rede sensorial que permite ao crebro obter todo tipo
de informao necessria para a interao com o mundo exterior. Da mesma forma,
a comunicao entre humanos vale-se desses mecanismos para capturar, processar
e trocar informao, seja ela por meio da fala, gestos, expresses faciais, etc. Esse
tipo de comunicao naturalmente multimodal, j que os humanos durante uma
conversa, por exemplo, gesticulam, apontam para objetos, demonstram emoes e
sentimentos, tudo ao mesmo tempo. A interao envolve no apenas componentes
7
lingsticos ou provenientes de um nico canal sensorial, mas sim de mltiplos, simultaneamente. Seria ideal, portanto, que pudssemos fazer uso de todo esse aparato
fsico/biolgico e do carter multi-canal da comunicao humana tambm para nos
comunicar com as mquinas.
Entretanto, no estgio atual da tecnologia, existe ainda uma enorme distncia
entre a interao humano-computador e a interao humano-humano, sendo que
um dos grandes desafios de reas como IHC e IA (Inteligncia Artificial) tornar
essa comunicao o mais prxima possvel da comunicao humano-humano. At
poucos anos atrs, o computador era visto como uma ferramenta passiva que realizava tarefas e cujo objetivo aparentemente era ser um escravo sob o comando
humano. Porm, com a evoluo de softwares baseados em IA, capazes de interpretar
ordens e tomar decises, e de dispositivos eletrnicos capazes de perceber e reagir
a estmulos do ambiente, o conceito de computador tem mudado drasticamente: ele
no mais apenas uma ferramenta que simplesmente executa determinadas tarefas,
mas sim um participante que interage e se comunica de volta com o usurio, inclusive
explicitando suas necessidades [Jokinen and Raike, 2003].
Nesse contexto, o termo multimodal pode ser entendido como vrios modos
ou mltiplas modalidades de interao, onde cada qual pode corresponder a um
dos cinco sentidos fsicos utilizados na comunicao. Assim como no filme Minority
Report [20th Century Fox, 2002], em que as personagens interagem atravs de gestos
manuais com a interface de um computador (Figura 2.1), o objetivo das chamadas
interfaces multimodais tornar a interao humano-computador mais parecida com
a forma segundo a qual os humanos interagem entre si e com o ambiente [Dix et al.,
1998].
Figura 2.1: Cena do filme Minority Report, em que a personagem interage com o
computador por meio de gestos
(fonte: http://www.imdb.com/gallery/ss/0181689).
10
2.3
11
Disponibilidade de tecnologias
A implementao de interfaces que explorem vrias modalidades uma tarefa
complexa e ainda em fase de amadurecimento, dependendo em grande parte do
avano nas pesquisas individuais de cada modalidade. Apenas recentemente ferramentas para programao de aplicaes com, por exemplo, reconhecimento de voz,
se tornaram disponveis.
Apesar disso, tecnologias como o reconhecimento de escrita j se tornaram comuns em tablets e palmtops, e esto agora comeando a aparecer em telefones mveis,
na forma de agendas, gerenciadores de contatos e ferramentas para anotaes pessoais.
Suporte mobilidade
As interfaces baseadas em entrada por voz e/ou caneta so particularmente
efetivas no suporte a mobilidade. As conhecidas limitaes dos dispositivos mveis,
como o tamanho reduzido do display e a ausncia de teclado, podem ser amenizadas"
pelo uso de interao multimodal. Alm disso, diferentemente do teclado e mouse, as
interfaces fsicas dos dispositivos que suportam essas modalidades so compactas e
portteis.
Um outro ponto que, com a atual difuso das redes sem fio e da computao
distribuda, os sistemas de reconhecimento de voz e escrita, que demandam grande
quantidade de processamento e memria, podem ser executados como servios remotos.
Modalidades complementares
A combinao de entradas de voz e de caneta prov uma maior flexibilidade de
interao, na medida em que cada modalidade individualmente se adapta melhor a
um determinado tipo de tarefa ou situao.
A modalidade voz, por exemplo, oferece velocidade na entrada de informaes e
facilidade de uso. Alm disso, libera o usurio do contato direto, permitindo que seus
olhos e mos fiquem livres para a execuo de outras atividades. Segundo Oviatt et al.
[2000], os usurios tendem a preferir a fala para descrever objetos e fatos, relacionar
informaes, como tambm comandar aes do sistema.
J a modalidade caneta preferida na entrada de smbolos e sinais (por exemplo, dgitos e abreviaes), gestos, desenhos, rascunhos e para seleo de objetos na
tela [Oviatt et al., 2000]. A entrada por caneta em domnios como arquitetura e engenharia, onde h necessidade de grficos e informao espacial precisa de pontos,
12
linhas e reas, uma capacidade importante. Essa modalidade tambm suporta melhor a privacidade do usurio e funciona como uma alternativa voz em ambientes
com alto nvel de rudo.
Tratamento de erros
Uma das vantagens da integrao de modalidades o aumento de eficincia no
tratamento de erros, tanto em relao a erros provenientes do usurio como do sistema. Algumas das razes para isso so [Oviatt et al., 2000]: (a) de acordo com o
tipo de tarefa, o prprio usurio ir escolher o modo de interao menos propenso a
erros; (b) o usurio tem a tendncia de trocar de modo de interao aps erros, facilitando a recuperao do sistema; (c) a linguagem do usurio simplificada quando
este interage de maneira multimodal, o que reduz a complexidade do processamento
de linguagem natural e portanto diminui erros de reconhecimento; (d) arquiteturas
multimodais bem desenvolvidas suportam a desambiguao mtua das entradas, em
que a informao semntica de uma modalidade funciona como entrada parcial para
a desambiguao da outra.
2.4
Computao Ubqua
O conceito de computao ubqua surgiu em 1991, quando Mark Weiser, pes-
quisador do Xerox Palo Alto Research Center, introduziu uma nova maneira de fazer
uso dos computadores na vida das pessoas. Segundo ele, facilidades computacionais
deveriam ser incorporadas aos ambientes para auxiliar as tarefas humanas de uma
forma transparente e pouco intrusiva [Weiser, 1991]. Nesse contexto, os computadores no s estariam em todos os lugares, como tambm se comunicando de maneira
autnoma sobre uma rede. Eles se utilizariam de mltiplos sensores para obter dados do ambiente, atuando de modo inteligente de acordo com informaes pessoais
de cada usurio.
Weiser tambm descrevia uma proliferao de dispositivos computacionais ubquos de vrios tamanhos, desde pequenos e pessoais (inch-scale), at grandes e de
uso coletivo (yard-scale). Isso de fato j ocorreu, com a popularizao de dispositivos
pessoais como PDAs, tablets e laptops, e dispositivos maiores, como lousas eletrnicas
(Figura 2.2).
Outro aspecto da viso de Weiser era que novas aplicaes surgiriam para explorar o uso destes dispositivos. Basicamente, o desenvolvimento de tais aplicaes
est relacionado a trs temas:
13
14
2.5
Consideraes Finais
O advento de interfaces multimodais baseadas em reconhecimento de voz, gestos
e outros comportamentos naturais, representa apenas o incio da pesquisa em direo a interfaces com uma percepo sensorial prxima (ou mesmo superior)
humana. Tais interfaces iro eventualmente interpretar entradas contnuas de um
grande nmero de entradas visuais, auditivas e tteis, as quais sero reconhecidas
conforme os usurios desempenham suas atividades [Oviatt, 2002]. O mesmo sistema
poder incorporar e processar informaes relativas ambientes fsicos, de modo a
suportar adaptao inteligente aos usurios. Pesquisas recentes reportam inclusive
o desenvolvimento de interfaces baseadas no reconhecimento de padres de ondas
cerebrais: sistemas inteligentes, conectados por meio eletrodos a regies especficas
do crebro, captam a atividade cerebral e identificam a inteno do usurio, executando movimentos com o mouse [Costa and Cabral Jr., 2000].
A computao ubqua, por sua vez, inspira o desenvolvimento de aplicaes
no centradas no paradigma de interao baseado em teclado-mouse-display. De
maneira oposta ao conceito de realidade virtual, cujo objetivo simular fielmente o
mundo real dentro do computador, em computao ubqua so as aplicaes e objetos
computacionais que se projetam para o mundo exterior, ampliando a perspectiva
humana de interao.
CAPTULO
Conceitos Fundamentais:
Reuso de Software
3.1
Consideraes Iniciais
O reuso de software tem sido um dos principais objetivos da Engenharia de
Software desde o surgimento dessa rea. Seus potenciais benefcios, como aumento
da qualidade, reduo do custo e do tempo de desenvolvimento, tornaram esse tema
de vital interesse tanto para a comunidade cientfica como para a indstria.
Desde o incio da dcada de 70 com o aparecimento da programao modular,
passando pelos anos 80 com a emergncia das linguagens orientadas a objetos, at os
dias de hoje com o modelo de desenvolvimento baseado em componentes, as tcnicas
de reuso de software evoluram continuamente [Bosch et al., 1997]. Nesse contexto,
o captulo ora apresentado aborda os conceitos fundamentais por trs de algumas
das principais tcnicas de reuso, evidenciando similaridades e diferenas entre elas,
e visando fornecer um conhecimento bsico sobre alguns dos termos empregados
neste trabalho.
3.2
Bibliotecas
Uma das primeiras tcnicas de reuso de cdigo foi a utilizao de bibliotecas.
16
cadeias de caracteres, ao invs de terem que ser reimplementadas a cada nova aplicao, passaram a ser reunidas em pores modulares de software e compartilhadas
por diferentes tipos de programas. Isso proporcionou um grande aumento de produtividade no desenvolvimento de software, uma vez que os programadores poderiam
ento focar na construo da aplicao em si, deixando de lado a implementao de
rotinas auxiliares e a involuntria reinveno da roda.
Basicamente, a integrao de bibliotecas pode ser feita de modo esttico, incluindo-se o cdigo objeto (pr-compilado) no programa em tempo de compilao, ou de
modo dinmico, durante a execuo do programa. Esse processo, conhecido como
ligao (do Ingls, linking), permite que as bibliotecas sejam referenciadas a partir
de arquivos separados no disco, sendo muitas vezes no includas no executvel do
aplicativo. As bibliotecas ligadas dinamicamente, tambm conhecidas como Dynamic
Link Libraries (DLLs) no ambiente Windows, podem ser carregadas em memria durante a inicializao ou posteriormente, quando da chamada de uma funo especfica. Usualmente o cdigo de uma DLL ocupa um nico espao em memria que
compartilhado por diferentes programas, os quais executam a mesma pgina fsica
de RAM mapeada em diferentes espaos de endereos [Wikipedia, 2006].
Alm de bibliotecas providas por linguagens de programao, como a C Library
ou a Standard Template Library (STL), includas nas linguagens C e C++, respectivamente, a maioria dos sistemas operacionais modernos tambm fornecem bibliotecas
para chamadas aos servios do sistema. Essas bibliotecas oferecem ainda suporte
maioria dos servios que uma aplicao moderna espera de um sistema operacional,
como: modelo de compartilhamento de objetos, bibliotecas para integrao com interfaces grficas nativas, funes de acesso ao sistemas de arquivos, etc.
Com a difuso das linguagens orientadas a objetos no final dos anos 80 e a
introduo de novos paradigmas de programao, as tcnicas de reuso de software
atingiram um nvel ainda mais alto. A modelagem de caractersticas essenciais de um
problema em classes de objetos e a possibilidade de mais tarde recombin-los para
construir diferentes tipos de sistemas trouxe uma grande facilidade ao desenvolvimento das chamadas bibliotecas de classes.
Uma biblioteca de classes um conjunto de classes projetado para prover funcionalidades reusveis com um propsito genrico [Bachmann et al., 2000].
Um
17
3.3
peas independentes baseia-se fundamentalmente no conceito de interface. Essa abstrao prov um mecanismo que permite controlar as dependncias que surgem entre
os diferentes mdulos de um sistema. Uma interface de programao de aplicao
(do Ingls, Application Programming Interface - API) basicamente uma especificao
em linguagem de programao das propriedades de um mdulo que outros mdulos
clientes podem ou no depender [Bachmann et al., 2000].
Em outras palavras, uma API determina como um conjunto de funcionalidades
de um componente de software pode ser programaticamente utilizado por outros softwares. Ela define um ponto de acesso que permite que diferentes desses elementos
faam requisies, executem tarefas e troquem dados entre si. Dentre as principais
caractersticas das APIs, podemos citar:
Ocultamento de informao: Corresponde capacidade de uma API em esconder
o cdigo, restringindo o acesso lgica interna de programao. Isso vai de
encontro aos princpios de baixo acoplamento e alta coeso da Engenharia de
Software, na medida em que essa caracterstica diminui a dependncia entre
dois mdulos e refora os limites de cada parte do sistema. Alm disso, o ocultamento de cdigo libera o programador usurio da API de compreender detalhes
complexos do seu funcionamento interno [de Souza et al., 2004].
Separao especificao/implementao: Consiste da separao da interface da
API propriamente dita, com seus mtodos e propriedades visveis externamente,
da maneira como os mesmos so implementados e manipulados internamente.
Uma vez definido o conjunto de servios a serem disponibilizados, uma mesma
API pode ter diferentes implementaes, inclusive desenvolvidas por provedores
independentes. Alm disso, essa separao possui um importante papel ao ajudar a coordenar a construo de componentes de um sistema: se os projetistas
concordam com uma interface, ento a implementao interna de dois componentes tambm pode ser feita de maneira relativamente independente, desde que
sejam respeitados os contratos sobre como estes iro se comportar em conjunto
[Fowler, 2002].
18
Interoperabilidade: Uma API tambm pode servir como ponto de ligao entre dois
sistemas distintos, integrando inclusive softwares escritos em diferentes linguagens. Exemplos disso so a Windows API [Microsoft, 2006], que permite que
quaisquer programas acessem e utilizem recursos do sistema operacional (tais
como sistema de arquivos, escalonamento de processos, etc.) e a Java Speech
API [Sun Microsystems, 1998c], que funciona como um discreto intermedirio
entre uma aplicao cliente Java e as vrias engines de reconhecimento e sntese de voz disponveis no mercado.
Estabilidade: APIs so desenvolvidas para mudarem pouco, de forma a manter a
compatibilidade com sistemas que as utilizam e reforar a independncia entre provedores e clientes de APIs. As especificaes tendem a ser o mais bem
projetadas possvel, definindo formalmente assinaturas de mtodos, parmetros
de entrada e dados de sada, de modo que sejam evitadas futuras modificaes.
Entretanto, essa estabilidade no se aplica a implementao interna da API,
que pode mudar conforme a necessidade sem trazer conseqncias aos clientes,
graas separao da interface da implementao.
Muitas vezes uma API provida como parte de um SDK (Software Development
Kit) de uma linguagem de programao, um software ou at mesmo de um hardware.
Algumas companhias protegem suas APIs do acesso pblico, como o caso da Sony
e sua API para o video-game PlayStation 2. Essa API disponibilizada apenas para
desenvolvedores licenciados, possibilitando que a empresa mantenha um certo controle de qualidade sobre os jogos criados para o console. Outras companhias divulgam
suas APIs livremente, como o caso da Microsoft com suas APIs para o Windows e da
Sun com a plataforma Java. Essas companhias utilizam o largo alcance de suas APIs
para propagar seus produtos e aumentar a sua fatia no mercado.
3.4
Componentes
Atualmente no existe um consenso sobre a definio do termo componente na
3.4. COMPONENTES
19
20
3.5
Frameworks
Assim como o conceito de componentes, o termo framework de software en-
3.5. FRAMEWORKS
21
22
Figura 3.1: Inverso de controle: diferena entre bibliotecas, APIs e frameworks (adaptado
de [Bachmann et al., 2000]).
3.6. PATTERNS
23
3.6
Patterns
Frameworks esto intimamente ligados a outras tcnicas de reuso, tais como
24
25
uniformidade na estrutura do software, aumentando assim a produtividade no desenvolvimento e a facilidade na manuteno. Por esse motivo, os padres so utilizados com eficincia na construo de frameworks. Um nico framework geralmente contm muitos padres, o que coloca os frameworks em um nvel de abstrao
diferente dos padres. Padres de projetos so os elementos micro-arquiteturais dos
frameworks, e esses, por sua vez, correspondem implementao concreta de vrios
padres [Johnson, 1997b].
3.7
Consideraes Finais
Conforme apresentado ao longo deste captulo, o reuso uma maneira eficiente
26
CAPTULO
4.1
Consideraes Iniciais
Este captulo prov informaes detalhadas sobre as infraestruturas utilizadas
4.2
Modalidade de Escrita
Com a popularizao de dispositivos de computao mvel, tais como Tablet
28
4.3
29
ponto que influenciou nessa escolha foi o fato de o servio ter sido implementado pelo
prprio aluno, o que facilitaria a modificao e a adaptao do cdigo. A idia era que
o servio JInk fosse estendido para suportar no apenas caracteres, como tambm
gestos, marcas, formas e smbolos provenientes de interao com caneta.
No entanto, durante a fase de anlise de requisitos observou-se que as modalidades de reconhecimento a serem incorporadas ao servio tinham em comum a
definio de novos tipos de caracteres. Assim, ao invs de estender o conjunto de
caracteres suportados apenas para os especificados no projeto, optou-se por generalizar o mecanismo de reconhecimento, de modo que ele pudesse ser configurado para
outros tipos de caracteres. O servio poderia ento ser utilizado em aplicaes de
diferentes domnios, possibilitando ao programador definir os tipos de caracteres a
serem reconhecidos de acordo com a necessidade.
Essa abordagem, alm de aumentar a complexidade do servio, sugeriu que o
mesmo deveria ser implementado de uma forma mais modular e menos acoplada s
aplicaes, de maneira a facilitar o reuso. Sendo assim, o servio foi remodelado
e reimplementado na forma de uma API, denominada Java Ink API (JInk API), cuja
implementao detalhada nas sees seguintes.
4.3.1
Mtodo de Reconhecimento
O propsito desta seo descrever de maneira detalhada o funcionamento do
30
Figura 4.1: Viso geral do mtodo de reconhecimento definido por Chan and Yeung [1999].
Com a estrutura obtida, os caracteres podem ento ser comparados com os modelos pr-fornecidos, na tentativa de encontrar alguma equivalncia. ento aplicado
o algoritmo de Casamento Estrutural Flexvel, que executa uma srie de transformaes na estrutura do caractere de modo a facilitar o reconhecimento. Finalmente,
no ltimo passo do reconhecimento, operaes de ps-processamento so realizadas,
para que ambigidades ou possveis erros de classificao sejam corrigidos. Todos os
estgios aqui descritos sero melhor detalhados nas sees seguintes.
4.3.2
Primitivas Estruturais
O mtodo de reconhecimento proposto por Chan and Yeung [1999] considera
cada caractere como sendo um conjunto de linhas e curvas, organizadas sobre uma
estrutura bi-dimensional. Os elementos que formam esse conjunto so denominados
primitivas estruturais, e so identificados a partir da seqncia de segmentos que
compem cada trao do caractere. So definidos cinco tipos de primitivas: linha,
curva acima (sentido anti-horrio), curva abaixo (sentido horrio), loop e ponto.
Os segmentos so fragmentos de reta que interpolam os pontos gerados pela
discretizao do trao, sendo que cada segmento possui uma direo de escrita (facilmente obtida no reconhecimento on-line). Essa direo segue o modelo de codificao
de Freeman [1974], pelo qual os 360 de movimento no plano so reduzidos a oito
direes, representadas por valores inteiros de 0 a 7, como mostrado na Figura 4.2a.
Assim, um valor inteiro associado para cada segmento do trao, representando a
direo aproximada na qual este se enquadra. Os valores obtidos so concatenados
em uma string, sendo que segmentos consecutivos com direes iguais so unidos
31
em um s segmento (Figura 4.2b). Uma direo tambm associada a cada primitiva identificada, sendo calculada atravs do segmento obtido entre os pontos inicial
e final da primitiva (Figura 4.2c).
Figura 4.2: (a) Direes e valores utilizados na codificao de Freeman [1974]. (b) Exemplos
de caracteres e concatenao de segmentos e traos. (c) Identificao das primitivas e clculo
da direo, onde os pontos representam o incio e o fim de cada primitiva.
Essas estruturas podem ser expressas por uma gramtica G = (VT , VN , P, S),
onde:
VT = {Linha, CurvaAcima, CurvaAbaixo, Loop, Ponto, 0, 1, 2, 3, 4, 5, 6, 7} representa
o conjunto de smbolos terminais;
VN = {Caractere, ConjuntoDeTraos, Trao, ConjuntoDeSegmentos, Segmento,
ConjuntoDePrimitivas, Primitiva, TipoPrimitiva, Direo} so os smbolos noterminais;
P = {Caractere ConjuntoDeTraos;
ConjuntoDeTraos Trao | (Trao, ConjuntoDeTraos);
Trao (ConjuntoDeSegmentos, ConjuntoDePrimitivas);
ConjuntoDeSegmentos Segmento | (Segmento, ConjuntoDeSegmentos);
ConjuntoDePrimitivas Primitiva | (Primitiva,ConjuntoDePrimitivas);
Segmento Direo;
Primitiva (TipoPrimitiva, Direo);
TipoPrimitiva Linha | CurvaAcima | CurvaAbaixo | Loop | Ponto;
Direo 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 }
so as regras de produo;
S o smbolo inicial (um Caractere).
4.3.3
Conjunto de Modelos
Antes do reconhecimento necessrio definir um conjunto bsico de modelos
para cada classe de caractere. Esses modelos sero posteriormente utilizadas para o
32
4.3.4
cadas por meio de uma srie de operaes realizadas sobre os segmentos que formam
cada trao do caractere.
Identificao de Primitivas
Como explicado na Seo 4.3.2, cada segmento possui uma direo de escrita,
codificada em um valor inteiro de 0 a 7. Essas direes so armazenadas seqencialmente em uma string, partindo do ponto inicial ao ponto final de cada trao do
caractere.
A extrao da estrutura de um trao comea pela identificao de conjuntos de
segmentos que correspondem a uma mesma primitiva. Pequenas variaes de direo
entre segmentos consecutivos so mantidas e representadas em um nico trao, ao
passo que variaes bruscas de direo implicam na quebra do trao. Posteriormente,
cada trao dar origem a uma primitiva. Alm disso, segmentos consecutivos com
direes iguais so agrupados em um nico segmento, reduzindo o tamanho da string.
Esses casos podem ser resumidos da seguinte forma:
Dados si e si+1 dois segmentos consecutivos, com 1 i N 1 e N igual ao
nmero de segmentos no trao, e d(sk ) a direo do k-simo segmento, temos:
33
Remoo de Zig-Zag
Uma outra operao realizada durante a extrao da estrutura a remoo
de zig-zag. Esse tipo de problema ocorre geralmente devido baixa qualidade do
dispositivo de captura ou estilos ruins de escrita. Para resolv-lo pode-se simplesmente extrair os pontos mdios de cada segmento e conect-los novamente, de modo
a suavizar a trajetria do trao, reduzindo o conjunto de pontos de sua estrutura.
Entretanto, isso pode fazer com que a posio dos pontos mude e, dependendo de
quantas vezes essa operao for executada, pode deformar o caractere e prejudicar o
reconhecimento.
Identificao de Loops
Depois de obter a estrutura preliminar necessrio verificar a ocorrncia de
determinadas sub-estruturas, tais como loops, e testar a possibilidade de combinao
entre primitivas.
Uma das maneiras de se identificar loops por meio da anlise da distncia dos
pontos do trao em relao a um ponto fixo. Sempre que esta distncia for menor que
um limitante e os pontos no pertenam ao mesmo segmento, retornado um valor
-1 indicando que um loop foi encontrado.
Em geral, um loop pode se localizar em trs diferentes posies no trao: no
comeo, no meio e no fim. Quando o loop est no comeo, o ponto inicial fixado e
o mtodo acima pode ser utilizado para detectar sua ocorrncia. O mesmo pode ser
utilizado quando o loop est no fim, com a diferena que o ponto a ser fixado o final.
J quando o loop est no meio, so utilizadas as duas extremidades do trao. Estas
vo sendo deslocadas uma em direo outra e o teste vai sendo executado conforme
a distncia entre elas diminui.
Combinao de primitivas
Algumas vezes um trao pode ser quebrado devido baixa qualidade da escrita
ou do dispositivo de captura. Desse modo, faz-se necessrio checar cada par de
primitivas consecutivas no conjunto de primitivas do caractere. Se algumas condies
forem satisfeitas, possvel combin-las em uma nica nova primitiva. A Tabela
apresenta algumas dessas condies e primitivas resultantes das combinaes.
De acordo com a tabela, para combinar duas linhas necessrio que elas possuam a mesma direo. Para combinar duas curvas preciso inicialmente determinar o TipoUniao, que descreve como elas esto conectadas. Esse tipo nada mais
do que a primitiva resultante da unio do ltimo segmento da primeira primitiva e
34
Primitiva 2:
{T2 , D2 }
{Linha, D2 }
{CurvaAcima, D1 } ou
{CurvaAbaixo, D1 }
{CurvaAcima, D2 } ou
{CurvaAbaixo, D2 }
Condio
D1 = D2
T1 = T2 = TipoUniao
Nova Primitiva:
{TN , DN }
{Linha, D1 }
{T1 , DN }
Tabela 4.1: Condies para a combinao de primitivas consecutivas [Chan and Yeung,
1999], onde T denota os tipos das primitivas e D suas direes.
4.3.5
35
Nveis de Deformao
H quatro nveis de deformao, sendo que o processo termina assim que um
modelo equivalente (resultante de deformao ou no) encontrado ou terminam os
nveis e o caractere rejeitado. A seguir apresentada uma descrio sobre esses
nveis.
Nvel 1: Nenhuma deformao. A estrutura do caractere no modificada, sendo
que para uma equivalncia ser encontrada o caractere deve ter estrutura idntica
de um dos modelos.
Nvel 2: Deformao no tipo das primitivas. A estrutura do caractere sofre alteraes no tipo de suas primitivas. Por exemplo, uma Linha se torna um de seus
tipos vizinhos, isto , uma CurvaAcima ou CurvaAbaixo, j que o tipo Linha
o meio-termo entre eles. Os tipos CurvaAcima e CurvaAbaixo podem apenas se
transformar numa Linha, pois esses tipos no so vizinhos. A direo de cada
primitiva mantida sem alteraes. Um exemplo apresentado na Figura 4.3a,
no qual so geradas oito variaes distintas do caractere T.
Nvel 3: Deformao na direo das primitivas. Nesse caso, cada primitiva tem sua
direo alterada para suas direes vizinhas, de acordo com o esquema de codificao descrito na Seo 4.3.2. Assim, uma primitiva {Linha, 5} pode se tornar
{Linha, 4} ou {Linha, 6}. Como exemplo, o mesmo caractere T apresentado na Figura 4.3b ao lado de suas oito variaes. Primitivas como Loop e
Ponto, cuja direo invlida, no sofrem o efeito dessas deformaes.
Nvel 4: Deformao simultnea no tipo e direo. Quando nenhum modelo encontrado nos passos anteriores, ento utilizada a deformao simultnea no
tipo e na direo de cada primitiva do caractere. Como resultado, um nmero
muito maior de variaes gerado. O mesmo T, nesse passo, gera 80 variaes,
sendo que cada uma ser testada com o conjunto de modelos.
4.3.6
Ps-Processamento
Utilizando o Casamento Estrutural Flexvel, caracteres que no encontrariam e-
36
4.3.7
37
Especificao de Requisitos
Durante a fase de reformulao do servio de reconhecimento JInk, foi definido
4.3.8
Modelagem e Implementao
A estrutura da API composta por trs pacotes: core, util e demo. O primeiro,
38
pelo reconhecimento e pelo suporte ao tratamento de eventos. O segundo, util, possui as classes utilitrias responsveis pela configurao da API, gerenciamento de
usurios e manipulao de arquivos XML. Por fim, o pacote demo contm as aplicaes desenvolvidas com a API e utilizadas como prova de conceito. Nesta seo so
descritos as funcionalidades e os relacionamentos das classes e interfaces do pacote
core e apresentada a sua modelagem UML.
Do ponto de vista arquitetural, a principal classe da Java Ink API a InkRecognizer, por servir de ponto de ligao entre a API e a aplicao que a utiliza.
Essa classe engloba as duas classes responsveis pelo reconhecimento de fato dos
caracteres: InkStructureExtractor e InkStructureMatcher. A primeira efetua a
extrao da estrutura dos traos, sendo encarregada da identificao das primitivas
que formam cada trao. Ela faz uso de outra classe, InkGeometric, que implementa
uma srie de algoritmos geomtricos para a identificao de intersees entre segmentos, clculo de distncia entre pontos e linhas, etc. Valendo-se desses mtodos a
classe InkStructureExtractor realiza operaes de suavizao, elimina distores,
identifica loops e junes nos traos e obtm as primitivas estruturais. Aps isso, a
classe InkStructureMatcher, que contm os mtodos relativos ao algoritmo de Casamento Estrutural Flexvel (CEF), efetua o reconhecimento do caractere, baseando-se
nas primitivas obtidas no processo anterior.
A classe InkType, por sua vez, representa os tipos de caracteres suportados
pelo reconhecedor, que podem ser definidos pelo programador. Cada tipo composto
por um conjunto de smbolos e modelos, e define determinadas propriedades relacionadas ao seu reconhecimento. Os modelos, implementados pela classe InkModel,
representam algumas das variaes de cada caractere, que devem ser fornecidas pelo
usurio para que seja construda uma base de exemplos e o reconhecedor (mais especificamente, um objeto da classe InkStructureMatcher) possa compar-los com
os caracteres de entrada. A busca por um modelo semelhante no linear, sendo efetuada em vrios nveis e com o caractere de entrada sofrendo mltiplas deformaes
em sua estrutura, de acordo com o algoritmo de CEF. Assim, cada instncia da classe
InkModel possui um smbolo, definido pela classe InkSymbol, e um caractere, representado pela classe InkCharacter.
Os objetos da classe InkSymbol correspondem aos possveis elementos que podem ser associados aos modelos. Como exemplo, os smbolos do tipo Dgito, seriam:
0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. As propriedades, descritas pela classe
InkProperties, servem para informar, por exemplo, que os traos no podem ser invertidos ou ter sua ordem de escrita permutada, caractersticas necessrias quando
do reconhecimento de assinaturas. J os objetos da classe InkCharacter so constitudos por um conjunto de traos, representados por instncias da classe InkStroke,
39
e sua funo identificar quais traos pertencem a um mesmo agrupamento, executando para isso operaes de unificao e segmentao. Essa classe tambm possui
um objeto da classe InkPositionMask, que especifica a posio relativa entre os
traos que compem cada caractere atravs de uma mscara.
A classe InkStroke composta por objetos InkSegment e InkPrimitive. O
primeiro se refere aos segmentos de reta que interpolam os pontos obtidos pela discretizao da escrita no dispositivo, e correspondem s unidades bsicas que formam
cada trao. J o segundo, corresponde aos elementos primitivos que definem a estrutura do caractere, identificados pelo InkStructureExtractor, e que so utilizados
pelo InkStructureMatcher durante a execuo do algoritmo de CEF.
Por fim, a interface InkResultListener responsvel pela notificao dos eventos resultantes do reconhecimento, representados pela classe InkResultEvent. Uma
aplicao que deseja receber callbacks desses eventos deve registrar-se no objeto
InkRecognizer e prover a implementao da interface InkResultListener, possibilitando-a manipular os resultados da maneira mais apropriada ou mesmo realizar
um ps-processamento do caractere reconhecido (para remoo de ambigidades,
por exemplo). A Figura 4.4 apresenta o diagrama de classes do pacote descrito nesta
seo.
4.3.9
Configurao
A aplicao responsvel pela customizao e controle da Java Ink era de difcil
entendimento, englobando numa mesma interface informao relacionada configurao/programao da API (de interesse apenas do desenvolvedor) e controles do
reconhecedor em tempo de execuo (de interesse do usurio). Assim, foram criadas
duas aplicaes independentes: o Painel de Configurao, responsvel pelo gerenciamento de tipos de caracteres, propriedades e smbolos permitidos, e o Painel de Controle, que possibilita a seleo de usurios, monitoramento do reconhecedor, adio e
remoo de modelos, etc. Essas ferramentas so mostradas na Figura 4.5.
4.4
com outras companhias como IBM, Apple, AT&T e Philips, define uma interface de
software que permite aos desenvolvedores utilizar as vantagens da tecnologia de reconhecimento e sntese de voz em aplicaes Java1 .
1
http://java.sun.com
40
Figura 4.4: Diagrama de classes UML referente ao pacote core da Java Ink API (por
questes de espao, apenas os principais mtodos e atributos so apresentados).
41
4.4.1
Arquitetura
A arquitetura bsica de uma aplicao desenvolvida sobre a JSAPI composta
42
43
Implementaes da JSAPI
A JSAPI um pouco diferente das demais extenses Java, uma vez que a Sun Microsystems no prov nenhuma implementao de referncia para ela. Ao contrrio,
a Sun disponibiliza uma lista de terceiros que possuem produtos que implementam a
interface. O website oficial da Java Speech2 lista vrias companhias como provedoras
de produtos compatveis, sendo que algumas esto descritas a seguir:
FreeTTS [Sun Microsystems, 2001]: Consiste de uma implementao open source,
escrita totalmente em Java. baseada na Flite 1.1, uma engine para sntese
de voz desenvolvida na Carnegie Mellon University. A ltima verso da FreeTTS
inclui suporte parcial a JSAPI, oferecendo somente o recurso de sntese de voz.
Speech for Java [IBM, 1998a]: Essa implementao baseada no produto comercial
da IBM para reconhecimento e sntese de voz, o ViaVoice. A tecnologia do ViaVoice suporta o reconhecimento de discurso contnuo e permite o treinamento do
reconhecedor, de maneira a ajust-lo voz do usurio e aumentar sua preciso.
TalkingJava SDK [Cloudgarden, 2001]: uma implementao completa da API, compatvel com vrios engines de reconhecimento e sntese de voz. Tambm inclui
pacotes para redirecionamento de udio, permitindo, por exemplo, que o stream
de udio seja gravado/lido em arquivos ou enviado/recebido atravs de uma
rede. Ela faz uso de outra implementao da Sun, o Java Media Framework
[Sun Microsystems, 1998a].
4.4.2
ouvir a voz de um usurio e determinar o que foi dito. Entretanto, as tecnologias atuais ainda no suportam o reconhecimento de voz irrestrito, que a habilidade para
ouvir qualquer fala em qualquer contexto e transcrev-la corretamente. Assim, para
alcanar uma maior preciso e um tempo de resposta razovel, os atuais reconhecedores de voz restringem o que pode ser ouvido utilizando gramticas.
A Java Speech Grammar Format (JSGF) [Sun Microsystems, 1998b] define uma
maneira de descrever tais gramticas, conhecidas como gramticas de comando e
controle ou gramticas regulares, de um modo independente de plataforma e do tipo
de engine utilizada. A JSGF utiliza uma representao textual que legvel e editvel
por desenvolvedores e computadores, e que pode ser includa no cdigo da aplicao.
2
http://java.sun.com/products/java-media/speech
44
especificam os tipos de construes verbais que um usurio pode dizer. Por exemplo,
uma gramtica simples para controle de programas deve ouvir por abra o arquivo
ou feche a janela, como exemplificado a seguir. As regras, por sua vez, podem conter
combinaes de texto (tokens) ou referncias outras regras.
A maioria dos reconhecedores possui um vocabulrio para cada linguagem suportada. Entretanto, no possvel incluir 100% de uma linguagem, como por exemplo, nomes, termos tcnicos e palavras estrangeiras. Para problemas como esse, uma
aplicao ou um usurio podem incluir o token inexistente, junto com a sua pronncia, de modo a assegurar o reconhecimento.
Exemplo de uma Gramtica
Este exemplo derivado da listagem abaixo, sendo explicado a seguir.
#JSGF V1.0 ISO8859-1 pt;
grammar comandos;
public <comando> = <acao> <objeto>;
<acao> = /10/ abra | /5/ feche | /1/ exclua | /1/ mova;
<objeto> = [o | a] (arquivo | janela | menu);
A primeira linha de cdigo indica a verso da JSGF usada, o esquema de codificao dos caracteres e a linguagem utilizada. Em seguida, definido o nome da
gramtica e o conjunto de regras. Neste exemplo, a gramtica comandos possui uma
nica regra do tipo public, a regra <comando>, que considerada o ponto inicial
para o reconhecedor. Essa regra definida pela concatenao de duas regras privadas, <acao> e <objeto>. A regra <acao> possui uma lista de aes e seus respectivos pesos, indicando, por exemplo, que a ao abra mais propensa a ocorrer do
que as outras. J a regra <objeto>, definida pelos artigos opcionais o ou a, e
obrigatoriamente uma das alternativas entre arquivo, janela e menu.
4.4.3
humana, possibilitando que usurios e aplicaes forneam textos que sero convertidos em udio. Os sintetizadores so desenvolvidos para produzir um som de voz o
mais natural possvel, de modo semelhante aos seres humanos. Entretanto, a fala
humana um processo complexo, e a habilidade dos sintetizadores em reproduzir
esta capacidade limitada. Uma vez que os sintetizadores no compreendem o que
45
dizem, no possvel esperar que eles utilizem o estilo ou a entonao corretos para
cada frase.
Nesse sentido, a Java Speech Markup Language (JSML) [Sun Microsystems,
1999] permite s aplicaes fornecer informaes adicionais sobre como um texto
deve ser convertido em som, aumentando a qualidade e a naturalidade da fala. Os
documentos JSML podem incluir informao estrutural sobre pargrafos e sentenas,
permitindo controlar a reproduo de palavras, enfatizar partes do texto e definir caractersticas como o ritmo e a velocidade da fala.
A JSML pode ser usada em uma grande variedade de aplicaes para reproduzir
texto das mais variadas fontes, incluindo e-mail, informaes de bases de dados, pginas Web, palavras de processadores de documentos, etc. A aplicao responsvel
por converter o contedo de informao e format-lo para texto JSML, usando para
isso conhecimento sobre como a sada deve ser produzida.
Apesar da JSML possuir similaridades com o formato HTML, os papis de ambas
so diferentes, pois a linguagem HTML especializada na apresentao visual da informao, enquanto que a JSML especializada na apresentao sonora do contedo
da fala. A JSML tambm um subconjunto da linguagem XML, sendo portanto um
padro aberto, independente de plataforma e de fcil extenso.
Elementos da JSML
Os elementos da JSML podem ser containers, que possuem sub-elementos e/ou
texto a ser falado, ou elementos vazios. Alguns tipos de elementos podem conter
um ou mais atributos, que so usados para fornecer informao adicional sobre o
elemento. Uma lista dos elementos da sintaxe JSML apresentada na Tabela 4.2,
junto de alguns exemplos.
4.5
Consideraes Finais
O propsito deste captulo foi descrever as duas infraestruturas utilizadas no
contexto deste projeto, fornecendo uma viso detalhada sobre suas arquiteturas. A
JInk API uma biblioteca de classes Java que possibilita a construo de interfaces
baseadas em interao por caneta. Um dos objetivos com a implementao da JInk
que ela tivesse um mtodo de reconhecimento genrico, que possibilitasse o reconhecimento no apenas caracteres, como tambm gestos, formas e traos especficos
de um determinado domnio. Desse modo a API pode ser configurada para diferentes tipos de aplicaes, podendo um caractere ser reconhecido e associado a um
46
Descrio
Especifica que o texto contido um
pargrafo.
SENT
SAYAS
EMP
BREAK
PROS
MARKER
ENGINE
Exemplo
<PARA> Este um curto
pargrafo. </PARA><PARA> O
assunto mudou, ento este um
novo pargrafo. </PARA>
<SENT> Ela disse: <SENT> "Vou
embora amanh..." </SENT></SENT>
<SAYAS SUB="i trs e" > IEEE
</SAYAS>
<EMP LEVEL="reduced" > Silncio!
O beb est dormindo! </EMP>
<BREAK SIZE="small"/>
<PROS RATE="50"VOL="+100%" >
Querem fazer o favor de ficar
quietos! </PROS>
Responda: <MARKER
MARK="sim_ou_nao"/> Sim ou no?
O cachorro faz <ENGINE
ENGID="AnimalSinth1.0"
DATA="dog" > </ENGINE>
elemento grfico, comando a ser executado, ou qualquer outro objeto definido pelo
programador.
A JSAPI fornece uma interface de alto nvel para a implementao de interfaces
de voz. A arquitetura coerente da API, junto de sua padronizao de classes e interfaces, alm de extensa documentao, foram fundamentais para a sua integrao
ao JMIS Framework. Alm disso, a JSAPI prove uma camada de abstrao sobre as
engine de voz utilizada, de forma que o framework multimodal no fica dependente
de um produto em especfico, podendo usar diferentes implementaes da API. Isso
tambm garante um aumento na portabilidade das aplicaes desenvolvidas.
CAPTULO
O Projeto Desenvolvido:
JMIS Framework
5.1
Consideraes Iniciais
O JMIS Framework (Java Multimodal Ink and Speech Framework) consiste de
uma infraestrutura reusvel para integrao de interfaces de escrita e voz cujo foco
facilitar a prototipao rpida de aplicaes multimodais. Este captulo tem por
objetivo descrever o projeto e a implementao dessa infraestrutura.
5.2
Fuso de Modalidades
A principal caracterstica de um sistema multimodal a sua capacidade em
combinar diferentes tipos de entrada individuais, process-las utilizando uma tcnica de integrao e retornar um resultado contendo algum significado especfico
para a aplicao. Essa funcionalidade, tambm conhecida como fuso multimodal,
responsvel por resolver ambigidades entre as modalidades de entrada, detectando
preferncias do usurio ou possveis estilos de interao, de modo a aumentar a preciso do sistema. Normalmente isso feito por meio de regras ou informaes de
contexto fornecidas pela aplicao. A entrada de informao redundante tambm
considerada de grande utilidade para a reduo da incerteza e aumento da confiabilidade da fuso multimodal, por exemplo, quando h rudo em uma das entradas ou
47
48
5.3
49
Multimodal baseada em Unificao [Johnston, 1998]. Embora seja apenas um aprimoramento da primeira, a segunda tcnica suporta um nvel mais completo de integrao e possui caractersticas mais complexas para representao das entradas.
Essas duas abordagens sero discutidas nesta seo.
5.3.1
senvolvida por Johnston et al. [1997]. Eles propem uma arquitetura baseada no
conceito de estruturas de caractersticas tipadas (do Ingls, typed feature structures)
para representar a contribuio semntica das diferentes entradas. Assim, para cada
interao gerada uma estrutura de caractersticas contendo informaes sobre a
interpretao da entrada, como tipo, timestamp, probabilidade e outros dados especficos de cada modalidade.
A unificao uma operao que determina a compatibilidade de duas peas
de informao; caso elas sejam compatveis, gerado um nico resultado que pode
ser interpretado pelo sistema. Essa compatibilidade especificada por meio de caractersticas que funcionam como restries, indicando quais entradas so ou no
aceitas. Por exemplo, se uma dada entrada de voz pode ser unificada com um gesto
de linha, uma estrutura pode ser associada essa entrada com uma caracterstica denominada localizao cujo valor requerido seja um objeto do tipo linha. Baseando-se
nessas informaes, o integrador ento identifica a melhor combinao em potencial
e gera uma estrutura final que represente a interpretao.
Cohen et al. [1997] descrevem uma implementao dessa tcnica no sistema
QuickSet, que possui uma interface multimodal baseada em reconhecimento de voz
e gestos com caneta para interao com mapas e simulaes militares. Nesse exemplo, se o usurio diz criar trincheira aqui, a seguinte estrutura de caractersticas
gerada:
objeto :
modalidade :
voz
timestamp :
131621738
probabilidade : 0.85
localizacao :
linha
trincheira
comando
Enquanto fala, se o usurio faz um gesto de linha com a caneta, uma segunda
estrutura representando essa interao tambm gerada:
50
objeto :
cor :
modalidade :
caneta
131622560
timestamp :
probabilidade : 0.9
vermelho
linha
comando
Por fim, se o integrador multimodal identifica essas estruturas como complementares, um resultado com um maior nvel semntico criado, e a probabilidade
desse resultado corresponde multiplicao das probabilidades das estruturas de
entrada:
objeto :
cor :
vermelho
probabilidade : 0.76
acao :
criar_trincheira
linha
resultado
5.3.2
uma ampla gama de aplicaes, o integrador proposto por Johnston et al. [1997]
permite somente estruturas que podem ser rvores unrias ou binrias de um nvel
de profundidade. Isso limita a combinao a um nico comando de voz e um nico
gesto, no sendo possvel a integrao de entradas mais complexas. Para sobrepor
essa deficincia, Johnston [1998] props uma evoluo da sua tcnica, desenvolvendo
um formalismo completo para uma gramtica multimodal.
Nessa tcnica, a representao de expresses multimodais segue o modelo sinttico de gramticas como a HPSG (Head-Driven Phrase Structure Grammar) [Pollard
and Sag, 1994]. Frases e gestos passam a ser vistos como elementos terminais no processo de parsing, sendo tambm referenciados como bordas lxicas. Os componentes
de interpretao atribuem representaes gramaticais essas entradas na forma de
51
estruturas de caractersticas, de maneira similar tcnica anterior. A integrao multimodal realizada a partir de um algoritmo de parsing que testa a combinao das
bordas lxicas, utilizando para isso um conjunto de regras e restries pr-definidas.
As regras da gramtica multimodal so produes na forma LHS DT R1 DT R2
onde LHS, DT R1 e DT R2 so estruturas de caractersticas. Esse esquema de regras
organizado hierarquicamente, permitindo que sub-regras especficas herdem restries de regras mais genricas. Assim, a estratgia bsica de integrao definida por
Johnston et al. [1997] se torna apenas mais uma regra em um dos mltiplos nveis
da rvore de regras, como exemplificado no esquema abaixo:
categoria :
(c1 )
modalidade :
(m1 )
dtr1 :
tempo
:
(t
)
1
probabilidade
:
(p
)
rhs :
categoria
:
(c
)
2
modalidade :
(m2 )
dtr :
tempo :
(t
)
probabilidade : (p2 )
categoria :
(cr )
(mr )
lhs : modalidade :
tempo :
(tr )
probabilidade : (pr )
categoria(c1 , c2 ) (cr )
modalidade(m1 , m2 ) (mr )
restricoes :
sobrepoe(t1 , t2 ) segue(t1 , t2 )
tempo_total(t1 , t2 ) (tr )
prob_comb(p1 , p2 ) (pr )
52
clusive formar condies complexas usando operadores lgicos como (ou), (e),
e (negao). Por exemplo, a restrio temporal sobrepoe(t1 , t2 ) segue(t1 , t2 ) estabelece que a borda dtr1 deve sobrepor ou preceder a borda dtr2 .
J a restrio
modalidade(m1 , m2 ) (mr ) indica que a modalidade resultante da unio de duas bordas com modalidades m1 e m2 deve ser mr . Caractersticas auxiliares e restries no
relevantes explicao do mtodo foram omitidas.
Uma vez que as regras da gramtica multimodal tm que ser binrias, a soluo
para a definio de comandos que envolvam mais de dois elementos ou que possuam
interpretaes complexas feita a partir de sub-categorizao. Uma regra pode ser
formada pela combinao de outras sub-regras, de uma maneira recursiva. Desse
modo, uma interao envolvendo trs bordas lxicas, por exemplo, pode ser representada por duas regras: uma regra A formada pela composio de duas sub-regras a1
e a2 , e uma segunda regra composta pelo resultado de A e B. Essa sub-categorizao
de regras demonstrada na Figura 5.1.
Figura 5.1: Exemplo de uma rvore de regras com diversos nveis criada a partir de
sub-categorizao.
Por meio dessa tcnica, um amplo escopo de entradas multimodais pode ser
representado, incluindo a combinao de mltiplas interaes de voz e gestos em
um nico comando. A utilizao do esquema de regras e restries permite que essas combinaes sejam descritas da maneira que for considerada mais conveniente,
alm de suportar a generalizao da arquitetura para possibilitar a adio de outras
5.4. ESPECIFICAO
53
5.4
Especificao
Nesta seo so apresentados os requisitos funcionais e no-funcionais identifi-
cados para
5.4.1
Requisitos No-Funcionais
Como requisitos comuns a quaisquer frameworks orientados a objetos, o JMIS
54
5.4.2
Requisitos Funcionais
Foram identificados os seguintes requisitos funcionais para o JMIS Framework:
5.5
Arquitetura
A arquitetura do JMIS Framework pode ser decomposta em quatro mdulos prin-
55
5.6
Modelagem e Implementao
A arquitetura definida para o JMIS Framework utiliza como base duas APIs para
56
do framework se deu na criao e na adaptao de componentes auxiliares que realizassem a ligao das APIs com o Integrador Multimodal e, posteriormente, do
Componente Multimodal com a aplicao cliente.
Tendo essas dificuldades em vista, esta seo expe alguns detalhes da lgica de
programao dos componentes do JMIS, a modelagem de classes UML e o funcionamento de cada mdulo.
5.6.1
Componente Multimodal
O Componente Multimodal a principal interface entre a aplicao cliente e o
JMIS Framework. Ele responsvel pelo tratamento da entrada proveniente da aplicao, pelo controle do fluxo interno de dados e pela notificao de eventos de integrao. Assim, ele funciona tanto como um porta de entrada de interao unimodal,
como tambm como uma porta de sada de interao multimodal.
O Componente Multimodal formado por uma nica classe abstrata de nome
MultimodalComponent, e cuja inteno dessa esconder os detalhes de configurao
dos mdulos do framework da aplicao cliente. Essa classe implementa o padro de
projeto Client Facade e utilizada para gerenciar os objetos responsveis pelos mdulos de escrita e voz, alocar reconhecedores, configurar listeners de eventos, carregar
gramticas e arquivos de propriedades. Se essa sequncia de tarefas fosse implementada pela aplicao, alm de tornar complexa a integrao, criaria dependncias
entre as camadas de apresentao e a lgica interna do framework. Assim, ao invs
de gerenciar mltiplos componentes no-relacionados a lgica da aplicao e explicitamente definir o relacionamento entre eles, o desenvolvedor simplesmente chama os
mtodos de fachada dessa classe, a qual por sua vez executa o processamento.
Para que a MultimodalComponent funcione adequadamente so necessrios
trs passos: (1) que a aplicao adicione essa classe como listener de eventos do
mouse, de modo que o mdulo de processamento de escrita possa receber os dados
de entrada; (2) que as gramticas de regras relacionados ao reconhecimento de voz
sejam definidas; (3) que a classe seja estendida e tenha seus mtodos abstratos implementados. Este ltimo passo um gancho que possibilita que a aplicao implemente
seu prprio tratamento em resposta aos eventos de integrao multimodal.
5.6.2
Mdulo de Escrita
O mdulo de escrita, composto pela JInk API e suas classes adaptadoras, tem
57
mouse disparado na aplicao e recebido pela classe MultimodalComponent automaticamente redirecionado para a InkController, que manipula internamente os
componentes de reconhecimento da JInk fazendo chamadas aos mtodos dessa API.
As classes adaptadoras so utilizadas para implementar a manipulao dos
eventos resultantes do reconhecimento. As classes InkCharacterAdapter e InkWordAdapter so instanciadas na InkController e implementam interfaces providas pela JInk, de modo que sempre que um caractere ou palavra forem reconhecidos,
essas classes so notificadas. Elas ento efetuam a interpretao da entrada reconhecida, convertendo-a num formato padro utilizado pelo Integrador Multimodal.
Esse formato representado pela classe Interaction.
A classe Interaction uma estrutura usada para representar metadados sobre
a interao. Ao invs de enviar apenas o resultado do reconhecimento para o Integrador Multimodal, as classes adaptadoras geram um evento do tipo Interaction.
Esse evento compartilhado pelos mdulos de escrita e voz, e disponibiliza informaes como: modalidade de entrada, tipo de interao (por exemplo, gestos, caracteres ou palavras), intervalo de tempo (incio e fim), probabilidade de acerto e as
tags que identificam o resultado. Alm disso, ela possui um atributo genrico usado
para insero de dados especficos da modalidade. No caso de escrita, esse atributo
preenchido por um objeto do tipo InkContent, que armazena informaes sobre o
trao, como limites (coordenadas) no plano, centride, etc.
Uma vez criada a representao da interao, esse evento disparado para os
ouvintes da interface InteractionListener, dentre os quais a classe MultimodalIntegrator uma delas. Essa classe responsvel pela unificao das entradas,
sendo detalhada mais a frente. Na Figura 5.3 apresentada a modelagem UML das
classes e interfaces do mdulo de escrita e os relacionamento entre elas.
5.6.3
Mdulo de Voz
O mdulo de voz tem uma arquitetura similar a do mdulo de escrita. A principal
classe desse mdulo a SpeechController, que tambm implementa o padro Controller e instanciada pelo MultimodalComponent. A SpeechController usada
para gerenciar os componentes da JSAPI como o reconhecedor e o sintetizador de
voz, configurar propriedades da engine e caractersticas do udio, alm de habilitar
ou desabilitar componentes. Essa classe tambm realiza tratamento de erros durante
a inicializao: caso uma engine de voz no esteja disponvel, a aplicao continua
funcionando sem essa modalidade.
58
O mdulo de voz disponibiliza ainda uma classe para gerenciamento de gramticas, a SpeechGrammarManager. Ela facilita a criao de gramticas de regras e de
ditado, alm de permitir que listeners sejam associados a uma gramtica especfica.
Ela tambm possibilita que as gramticas sejam habilitadas quando requerido, realizando as modificaes necessrias no reconhecedor da JSAPI.
59
5.6.4
Integrador Multimodal
O Integrador Multimodal o ncleo do JMIS Framework. ele que efetiva-
mente realiza a unificao dos eventos de entrada, por meio de uma implementao
do mtodo definido por Johnston [1998] e descrito na Seo 5.3.2. O mdulo de integrao multimodal mapeia os elementos descritos no mtodo, tais como regras e
restries, alm de se comunicar com os demais componentes do framework.
As regras de integrao multimodal determinam o que pode ou no ser unificado. Elas so implementadas pela classe IntegrationRule, que possui campos
como nome, categoria e restries. As restries definem as condies que uma regra deve satisfazer para que uma unificao seja bem-sucedida, e so implementadas
pela classe IntegrationConstraints. O algoritmo suporta atualmente a verificao
de restries como: durao mxima das interaes, atraso mximo permitido entre
elas, probabilidade combinada mnima e se as interaes devem ou no se sobrepor.
Essa classe tambm pode ser estendida para incluir novas condies.
Juntamente com as restries, a classe IntegrationRule possui duas referncias para sub-regras, atravs dos atributos leftSubRule e rightSubRule. Esses
atributos permitem que uma regra armazene recursivamente outras sub-regras, pos-
60
fazer o binding com o cdigo da aplicao cliente. Esse componente possui ainda
uma classe para gerenciamento de regras multimodais, a IntegrationRuleManager,
que permite a adicionar ou remover regras do integrador em tempo de execuo, alm
de carregar ou salvar as regras definidas em um arquivo no formato XML. A Figura 5.5
apresenta o diagrama UML para o Integrador Multimodal (algumas classes j apresentadas anteriormente so relacionadas novamente, para a facilitar a compreenso).
5.7
Estrutura de Pacotes
A estrutura do JMIS Framework foi dividida em pacotes. Alm de ser uma prtica
comum em aplicaes desenvolvidas sob a plataforma Java, essa organizao possibilita correlacionar classes e interfaces, facilitando a compreenso do framework.
Uma breve explicao sobre os pacotes e suas funes apresentada na Tabela 5.1:
5.8. CONFIGURAO
61
5.8
Configurao
Para facilitar a configurao do JMIS Framework foi implementada uma inter-
face grfica, como ilustrado pela Figura 5.6. Essa ferramenta possibilita a adio/remoo de regras que sero utilizadas pelo integrador multimodal.
As regras so
definidas em hierarquias, tal como no algoritmo implementado, podendo ser compostas e reorganizadas. A interface tambm permite a definio de restries, disponibilizando todas as opes para o usurio de uma maneira bastante intuitiva. Alm
disso, o conjunto de regras pode ser importado e exportado em arquivos XML, de
modo que mltiplas aplicaes/usurios possam personalizar a aplicao.
5.9
62
Pacote
br.usp.icmc.jmis.core
br.usp.icmc.jmis.core.event
br.usp.icmc.jmis.core.util
br.usp.icmc.jmis.ink
br.usp.icmc.jmis.ink.event
br.usp.icmc.jmis.speech
br.usp.icmc.jmis.speech.event
br.usp.icmc.jmis.gui
br.usp.icmc.jmis.gui.conf
Funo
Define as principais classes do framework,
correspondentes ao ncleo de processamento multimodal.
Contm as classes e interfaces responsveis
pelo suporte ao tratamento de eventos do
JMIS Framework.
Disponibiliza classes utilitrias para manipulao de arquivos e propriedades, de uso
interno do framework.
Engloba as classes de integrao com a JInk
API, usadas no controle do reconhecedor e
na representao de contedo de escrita.
Contm as classes utilizadas para manipulao de eventos de escrita e sua converso em
interpretao multimodal.
Engloba as classes de integrao com a JSAPI, usadas no controle do reconhecedor,
sintetizador e gerenciador de gramticas.
Contm as classes utilizadas para manipulao de eventos de voz e sua converso em
interpretao multimodal.
Disponibiliza um conjunto de ferramentas
grficas usadas para facilitar a configurao
e integrao do JMIS a outras aplicaes.
Contm classes utilitrias usadas para internacionalizao da interface de configurao e
localizao de recursos.
Tabela 5.1: Resumo dos pacotes e suas respectivas funes no JMIS Framework.
5.9.1
SpeechBoard
A SpeechBoard uma aplicao prottipo que estende um componente de soft-
ware desenvolvido para captura de apresentaes e anotaes colaborativas em ambientes de computao ubqua, utilizado na arquitetura do iClass [Cattelan et al.,
2003]. O objetivo dessa implementao foi integrar elementos de interao baseados em interfaces multimodais, tornando a operao do dispositivo de captura mais
user-friendly.
A SpeechBoard 5.7 incorpora uma interface baseada em escrita manual juntamente com uma interface de voz. Os resultados obtidos com a implementao da
SpeechBoard possibilitam aos usurios do sistema controlar e interagir com a aplicao por meio de comandos de voz e gestos, alm de poder realizar anotaes baseadas
em discurso oral ou por meio do reconhecimento de escrita.
63
O uso de interfaces multimodais em aplicaes de captura que envolvem apresentaes, aulas e reunies pode se tornar uma importante ferramenta, j que vrias
caractersticas dessas aplicaes podem ser exploradas por interfaces multimodais.
64
Por exemplo, temos nesses ambientes grandes displays compartilhados onde, alm
do uso indispensvel da voz, o apresentador pode gesticular e apontar para pontos na
tela, alm de fazer anotaes e desenhos sobre o contedo.
5.9.2
M4Note
A SpeechBoard foi usada na construo de uma aplicao [Macedo et al., 2004]
que realiza o relacionamento semntico entre a informao que est sendo apresentada e o contedo capturado de outras sesses, permitindo assim a criao de ligaes
entre os documentos.
A ferramenta M4Note (MultiMedia MultiModal Annotation Tool) [Goularte et al.,
2004] uma aplicao multimodal que executa em Tablet PCs e permite a captura de
vdeo, a criao de anotaes e a gerao de documentos XML a partir do contedo
multimdia capturado. Pode-se interagir com o fluxo de vdeo durante a atividade
de captura, selecionando-se quadros especficos para serem anotados. As anotaes
podem ser realizadas com tinta eletrnica em uma rea de edio pr-determinada
ou por meio de reconhecimento de voz, sendo, em ambos os casos, convertidas para
texto.
Os quadros de vdeo anotados so transformados em imagens JPEG e, a exemplo do vdeo capturado, armazenados em disco. Ao final do processo de uso da ferramenta, so gerados documentos XML agregando todos os fluxos de mdia capturados
(vdeo, udio, imagens, slides, strokes e texto). A interface grfica da ferramenta
apresentada na Figura 5.8.
5.10
Consideraes Finais
Esta seo teve por objetivo apresentar os detalhes da infraestrutura multimodal
construda, descrevendo as tcnicas utilizadas, a especificao dos requisitos, modelagem e implementao. Ao final do captulo foram apresentados alguns exemplos de
aplicaes desenvolvidas utilizando o JMIS Framework.
65
Figura 5.8: Interface da ferramenta M4Note: no canto superior esquerdo, o painel para
visualizao do vdeo; no canto superior direito, a rea de edio dos quadros selecionados
com tinta eletrnica; na parte inferior, linha do tempo com thumbnails das anotaes.
66
CAPTULO
Trabalhos Relacionados
6.1
Consideraes Iniciais
No passado, interagir com um computador significava sentar em frente a um
desktop e utilizar teclado e mouse para faz-lo executar tarefas. Hoje, com a disponibilidade de equipamentos mveis de alta capacidade e conectividade sem fio, essas
tarefas esto migrando para outros dispositivos e exigindo novos requisitos de interao. possvel ler e-mails, acessar a Internet ou fazer compras on-line dentro de um
carro em movimento, utilizando um smartphone ou mesmo um celular.
Novas modalidades de interao esto se tornando essenciais para suportar os
estilos atuais de interao e proporcionar experincias mais ricas para o usurio.
nesse ponto que as interfaces multimodais tem se sobressado. Elas possibilitam um
aumento na eficincia com que a informao pode ser obtida/gerada, alm de permitir
entradas paralelas da maneira que o usurio considerar mais conveniente. A usabilidade e a acessibilidade aprimorada dos sistemas multimodais torna-os passveis de
acomodar um grande nmero de tarefas nos mais diversos ambientes.
Este captulo tem por objetivo apresentar uma viso geral sobre alguns dos trabalhos mais relevantes e o estado da arte na rea de Interfaces Multimodais, ilustrando a variabilidade de sistemas onde essas interfaces so bem acolhidas. So
ainda detalhadas algumas das principais tecnologias e linguagens que esto atualmente em discusso pela indstria, visando o estabelecimento de padres para a
construo de aplicaes multimodais.
67
68
6.2
Aplicaes Multimodais
A quantidade de aplicaes que fazem uso de interfaces multimodais tem cres-
cido rapidamente, abrangendo desde sistemas baseados em realidade virtual utilizados para simulao e treinamento [Duncan et al., 1999] at aplicaes mdicas [Holzman, 1999] e sistemas de identificao [Jain and Ross, 2004]. No sentido de demonstrar essa diversidade so apresentados nesta seo alguns exemplos de aplicaes
nos quais a interao multimodal utilizada.
6.2.1
Put-That-There
Uma das primeiras demonstraes do conceito de interfaces multimodais foi
6.2.2
69
QuickSet
As interfaces multimodais mais recentes deixaram de utilizar apenas a entrada
Figura 6.2: QuickSet [Cohen et al., 1997]: Interao multimodal em diversos ambientes.
6.2.3
70
fones de ouvido e microfone para entrada de voz (Figura 6.3). Conforme o mdico
fala ao microfone, o FMA reconhece os dados de entrada associados com os campos
especficos e preenche o registro do paciente. O mdico pode tambm consultar esse
registro perguntando, por exemplo, qual o estado clnico do paciente.
J o FMC um sistema para ser utilizado em tablets. Ele permite ao mdico
alterar o registro atravs da voz ou de uma interface baseada em caneta. O mdico
pode tambm criar anotaes desenhadas mo livre ou por meio de udio, ou usar
os dois simultaneamente. Neste caso, ele simplesmente assinala com a caneta campos ou partes do corpo humano (Figura 6.3), enquanto descreve os problemas com o
paciente. As informaes armazenadas podem ser obtidas quando o mdico toca com
a caneta os pontos marcados.
6.2.4
71
usurio apenas inicia a conversa e o sistema se encarrega de requisitar as informaes necessrias para completar a tarefa. Isso faz com que o usurio memorize os
comandos mais naturalmente.
A interface grfica do sistema, visualizada atravs de uma tela sensvel ao toque,
fornece um modo alternativo e ao mesmo tempo complementar de interao, permitindo, por exemplo, que os usurios a utilizem quando o carro est parado ou
fornecendo dicas de comandos de voz correspondentes. Alm disso, a arquitetura
do gerenciador de dilogo faz uma separao entre a lgica de interao e as fontes
dos sinais de entrada, permitindo que o usurio inicie um dilogo por voz e o finalize atravs da interface grfica. A Figura 6.4 apresenta uma imagem do interior do
veculo e uma das configuraes de tela.
6.2.5
72
6.3
lizando linguagens de programao tradicionais, estruturadas ou orientadas a objetos, como C, C++ e Java. Programadores usavam essas linguagens para controlar
o fluxo das aplicaes e invocar componentes de baixo-nvel, como reconhecedores,
sintetizadores de voz e tocadores de udio. Embora poderosas, a utilizao dessas
linguagens em ambientes distribudos como a Web era uma tarefa complicada, devido
a variabilidade de tecnologias e padres suportados em cada cliente. Essa dificuldade
de integrao limitava a portabilidade dos sistemas multimodais, restringindo-os ao
ambiente desktop e ao modelo de aplicaes stand-alone.
73
6.3.1
ficao que descreve como o suporte a interao multimodal pode ser implementado
no ambiente Web a partir de padres definidos pelo W3C. Ele pode ser visto como
uma base para o desenvolvimento de aplicaes multimodais em termos de linguagens de marcao, scripts, guidelines e outros recursos. O framework implementado
utilizando o padro DOM (Document Object Model), o qual responsvel por especificar interfaces que permitem aos programas acessar e atualizar dinamicamente o
contedo, a estrutura e o estilo de documentos.
A proposta do MMIF identificar e relacionar os principais componentes de
um sistema multimodal, determinando quais linguagens podem ser utilizadas para
descrever e manipular a informao proveniente de cada componente. O objetivo
propor uma abstrao de uma arquitetura que suporte as vrias modalidades de
entrada/sada disponveis atualmente e que possa ser estendida para incluir modalidades que venham a surgir no futuro.
O MMIF pode ser dividido em trs mdulos principais: componentes de entrada,
gerenciador de interao e componentes de sada. A Figura 6.6 ilustra de maneira
simplificada os componentes do framework e o fluxo de informao entre eles.
74
Componentes de Entrada
Os componentes de entrada correspondem ao mdulo do sistema responsvel
por capturar, processar e interpretar os diversos modos de interao do usurio.
Esses componentes so divididos em trs categorias [W3C, 2002a]:
Componentes de Reconhecimento: Capturam os diversos modos de interao do
usurio e traduzem as entradas em um formato padro para serem processadas
posteriormente. O reconhecimento pode utilizar gramticas descritas por linguagens de marcao, de modo a restringir o escopo de entradas permitidas e
aumentar a preciso do sistema. Alguns exemplos de componentes de reconhecimento incluem voz, escrita, gestos, viso, etc.
Componentes de Interpretao: Processam os resultados dos componentes de reconhecimento, atribuindo-lhes semntica. Cada componente de interpretao
identifica o significado da entrada do usurio, como por exemplo, diferentes
formas de se pronunciar um mesmo comando ou vrias representaes de um
nico gesto, podem ser resolvidas por esse componente. A sada resultante de
cada componente de interpretao pode ser expressa utilizando a linguagem
EMMA (detalhada na Seo 6.3.6).
Componente de Integrao: Combina as sadas de mltiplos componentes de integrao. Um exemplo seria a integrao de entradas de voz e gestos, em que o
usurio aponta para um objeto e o movimenta atravs de comandos de voz. O
componente detecta a inteno do usurio a partir da fuso das duas modalidades e gera um resultado final de acordo com regras de integrao previamente
definidas.
Gerenciador de Interao
O gerenciador de interao o componente lgico que controla o fluxo de dados
e coordena a execuo dos mltiplos componentes de entrada e sada. O gerenciador
responsvel por manter o estado e o contexto da aplicao, de modo a responder
aos eventos de entrada e gerar as sadas apropriadas [W3C, 2002a].
Um componente de sesso utilizado pelo gerenciador para armazenar informaes sobre estado, o que pode ser til em aplicaes baseadas em sesses (tais
como jogos multiplayer, reunies e ferramentas colaborativas) ou quando uma aplicao prov mltiplos modos de interao que podem ser escolhidos em tempo de
execuo pelo usurio. J o contexto controlado por um componente de sistema e
75
ambiente, o qual fornece informaes sobre capacidades dos dispositivos, preferncias do usurio e condies do ambiente.
Em algumas arquiteturas o gerenciador de interao pode ser implementado
como um nico componente. Em outras, ele pode ser tratado como uma composio
de componentes menores, ou ainda estar distribudo entre os componentes de entrada
e sada.
Componentes de Sada
Os componentes de sada so utilizados para gerar um ou mais modos de sada
para o usurio, tais como voz sintetizada, udio, texto, grficos e animaes. Esses
componentes so divididos em trs categorias [W3C, 2002a]:
Componente de Gerao: Determina quais modalidades de sada sero utilizadas
para retornar informao para o usurio, podendo selecionar uma nica modalidade de sada ou modalidades complementares. A linguagem de representao
interna usada para descrever a sada do componente de gerao ainda est em
fase de especificao.
Componentes de Estilizao: Adiciona informao sobre como a sada ser apresentada ao usurio. Por exemplo, um componente de estilizao para displays
grficos pode especificar como os objetos sero posicionados na tela, enquanto
que um componente para voz pode inserir pausas e variaes no texto que ser
renderizado por um sintetizador. A sada dos componentes de estilizao pode
ser representada em linguagens especficas para cada componente de renderizao, como por exemplo, SSML para componentes de sntese de voz, tags XHTML
e SVG para componentes grficos e SMIL para sadas multimdia.
Componentes de Renderizao: Converte a informao proveniente do componente
de estilizao em um formato facilmente entendido pelo usurio. Por exemplo,
um componente renderizao visual pode mostrar um vetor de pontos como um
grfico, ou um sintetizador de voz converter texto em voz.
6.3.2
o de dados baseada na Extensible Markup Language (XML) [W3C, 1996] que permite
descrever entradas de tinta digital provenientes de interao com caneta eletrnica.
A InkML parte da especificao definida pelo W3C para a construo de aplicaes
76
77
Mensagens em tinta digital: Transmisso bi-direcional de tinta digital, principalmente atravs de redes sem fio, possibilitando que usurios mveis escrevam
e/ou desenhem nas telas de seus dispositivos e enviem essas informaes. O
receptor pode ser outro usurio em seu computador desktop, tablet, palmtop,
telefone celular ou mesmo uma mquina de fax.
Integrao com outras mdias: Uma foto tirada com uma cmera digital ou um desenho criado em um tablet PC, por exemplo, podem ser anotados de tal forma
que a tinta digital possa ser sincronizada com um comentrio falado. A anotao
de tinta poderia ser usada para indexar a imagem, por exemplo associando uma
marca especfica para distinguir diferentes categorias.
Gravao e recuperao de anotaes: Uma aplicao pode, por exemplo, permitir
que usurios gravem anotaes escritas manualmente com tinta digital e depois
as recuperem utilizando palavras-chave associadas anotao. Essas palavraschave seriam, basicamente, partes do texto transcrito por um reconhecedor de
escrita.
Preenchimento eletrnico de formulrios: Essa atividade pode ser amplamente facilitada, provendo uma maneira natural e robusta para a entrada de dados
em dispositivos sem teclado. Sistemas de reconhecimento de escrita manual
podero inclusive serem disponibilizados na rede na forma de Web Services. Um
exemplo de aplicao seria no processamento de transaes financeiras, onde
um usurio paga a compra de um livro pela Web por meio de sua assinatura,
que reconhecida por um software verificador de assinaturas.
Entrada por caneta em sistemas multimodais: Interfaces multimodais podem integrar de maneira robusta e flexvel entradas provenientes de interao com
caneta e outras modalidades, como a fala. A robustez provm da redundncia
entre as modalidades, que possibilita que erros ou imprecises de reconhecedores individuais sejam compensados. J a flexibilidade vm do fato que os
usurios podem escolher qual modalidade mais apropriada para executar uma
determinada tarefa, em um dado momento. Por exemplo, em ambientes onde
h muito rudo ou h a necessidade de privacidade, a modalidade baseada em
caneta prefervel.
Elementos principais e Sintaxe da InkML
A InkML ainda est em fase de definio, sendo que atualmente a linguagem especifica apenas um conjunto bsico de elementos, suficiente para o desenvolvimento
de aplicaes simples que utilizam tinta digital [W3C, 2003b]. O elemento raiz de um
78
documento InkML dado pela marcao <ink>. Para descrever traos contguos de
tinta, o elemento o <trace>, que armazena uma seqncia de pontos correspondentes s coordenadas X e Y da posio da caneta. Atributos tais como cor e espessura do trao so descritos pelo elemento <brush>, e traos que possuem as mesmas
caractersticas (por exemplo, escritos com a mesma cor) podem ser agrupados em um
elemento <traceGroup>.
O elemento <captureDevice> usado para armazenar informaes sobre o dispositivo de captura, como por exemplo, a taxa de amostragem e a resoluo. Para aplicaes colaborativas, em que mltiplos usurios compartilham uma rea de edio
e a tinta digital pode vir de diferentes dispositivos, o elemento <context> permite
representar informaes pertinentes ao contexto de cada usurio. J o elemento
<traceRef> prov uma rotulagem semntica dos traos.
genrico que pode ser usado por aplicaes para descrever o tipo de trao representado (por exemplo, escrita manual, desenho, etc.). Em todos os casos a especificao da InkML utiliza valores pr-definidos para elementos no especificados no
documento.
Por ser uma linguagem derivada da XML, a InkML pode ser estendida, de modo
que podem ser criados elementos especficos de aplicaes para complementar a descrio fornecida pelos seus elementos bsicos. Por exemplo, uma marcao do tipo
<page> pode ser til em uma aplicao que manipula documentos com mltiplas
pginas. Ou ento, em aplicaes que processam formulrios, um elemento <field>
pode ser til para indicar um grupo de traos pertencentes a um campo particular.
A combinao de elementos InkML com outros elementos XML deve evitar ambigidades, de modo que preciso utilizar qualificadores como namespaces.
As aplicaes que utilizam interfaces com tinta digital podem ser categorizadas
em dois tipos bsicos: aquelas que capturam todo o contedo e o armazenam para
posterior processamento, tal como aplicaes de baseadas em formulrios, nas quais
os campos so preenchidos em tablets ou palmtops e depois processadas remotamente; e aquelas em que a captura e a transmisso de tinta digital ocorre em tempo
real. A InkML oferece suporte para a manipulao de ambos tipos de aplicaes, utilizando para isso um conjunto especfico de marcaes [W3C, 2003b], que no sero
tratadas neste documento.
6.3.3
ainda em definio pelo W3C que permite a criao e o controle de dilogos em aplicaes distribudas baseadas em interao por voz. Ele prov suporte a funcionali-
79
Arquitetura do VoiceXML
O VoiceXML possibilita que servios associados ao processamento e recuperao de dados sejam disponibilizados a servios de voz, utilizando para isso a
tradicional arquitetura cliente-servidor. Nessa arquitetura, os clientes, que vo desde
desktops com grande poder de processamento e memria (cliente pesado) telefones
celulares (cliente leve) com grandes limitaes de recursos, tm acesso aos dados do
sistema por meio de diferentes servidores, como ilustrado na Figura 6.7.
Na arquitetura apresentada na Figura 6.7, o servidor HTTP armazena os documentos, executa a lgica da aplicao e realiza o acesso ao banco de dados. No
caso do cliente pesado, esse servidor processa diretamente a requisio e envia um
documento VXML (junto a um XHTML para a apresentao visual, por exemplo) como
80
resposta. Esse documento interpretado por um voice browser no cliente, que utiliza localmente uma engine para o reconhecimento (entrada) e sntese (sada) de voz.
Desse modo, todo o processamento da voz realizado no cliente.
No caso de um cliente leve, a voz processada remotamente por um servidor de
voz. Esse ltimo atua como um intermedirio, obtendo o documento VXML do servidor HTTP e sintetizando a voz para o cliente. Ele tambm responsvel por reconhecer
a entrada de voz vinda do cliente e, de acordo com a lgica de interao descrita no
VXML, sintetizar a resposta ou convert-la numa requisio para o servidor HTTP.
81
Um dilogo tambm pode ser composto de vrios sub-dilogos, que so semelhantes chamadas de funo em programao estruturada. Eles permitem que a
interao seja passada para um novo dilogo e depois retornada para o dilogo principal, armazenando o estado da interao antes da chamada. Os sub-dilogos podem
representar tarefas ou seqncias de dilogos comuns que podem ser reutilizados por
outros documentos.
A listagem abaixo apresenta um exemplo de dilogo, no qual a aplicao pede
ao usurio que escolha uma bebida e ento submete a resposta ao servidor:
<?xml version="1.0" encoding="UTF-8"?>
<vxml xmlns="http://www.w3.org/2001/vxml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/vxml
http://www.w3.org/TR/voicexml20/vxml.xsd" version="2.0">
<form>
<field name="bebida">
<prompt>Voc gostaria de tomar gua, suco ou caf?</prompt>
<grammar src="bebida.grxml" type="application/srgs+xml"/>
</field>
<block>
<submit next="http://www.bebida.exemplo.com/bebida2.jsp"/>
</block>
</form>
</vxml>
82
6.3.4
83
pondente informao que o sistema necessita obter do usurio; (2) uma seo
de apresentao que, juntamente com objetos grficos, contm os templates para
a gerao de dilogos com o usurio; (3) uma seo de script que inclui a lgica
de inferncia para controlar o fluxo do dilogo e atingir o objetivo da pgina.
Essa separao contribui para que uma interface de voz SALT seja fracamente
acoplada estrutura da pgina (por exemplo, um formulrio HTML), permitindo
que os componentes de voz e dilogos sejam reutilizados.
Amplo Escopo de Dispositivos: O padro SALT no foi projetado para nenhum tipo
de dispositivo em particular, mas sim para um amplo escopo de arquiteturas. O
modelo genrico com que o SALT implementa a integrao de voz possibilita que
ele seja utilizado desde PCs a telefones, requerendo um custo mnimo para sua
adaptao a diferentes dispositivos.
Utilizao em Mltiplos Cenrios: O SALT permite que uma mesma aplicao tambm seja utilizada em diferentes cenrios: (1) multimodal, onde uma pgina
visual pode ser aprimorada com uma interface de voz no mesmo dispositivo;
(2) cross-modal, em que uma nica pgina de aplicao pode ser reutilizada de
diferentes modos em diferentes dispositivos (por exemplo, somente visual ou somente voz).
Elementos da SALT
A SALT no possui elementos de controle, de modo que os desenvolvedores devem embuti-la em outras linguagens hospedeiras para especificar o fluxo de execuo
e interao. O ncleo da linguagem SALT uma coleo de objetos que possibilitam que uma aplicao manipule entradas/sadas de voz e comunique-se com outros
componentes de baixo-nvel como gerenciadores de discurso, interfaces de telefonia,
etc. Os elementos SALT so independentes de linguagem de programao e incluem:
<prompt>: Utilizada para especificar a sada do sistema, essa tag apresenta
gravaes de udio e voz sintetizada para o usurio. O elemento <prompt> tambm possui comandos para gerenciar a execuo das mdias, como play, pause,
stop e controles de velocidade e volume.
<listen>: Utilizada para especificar a entrada do sistema, essa tag reconhece
palavras e frases ditas pelo usurio. Ela pode ser usada de trs modos: (1)
automatic, empregada em cenrios de telefonia ou sem interao manual, nos
quais a prpria aplicao controla quando iniciar ou parar o reconhecimento;
(2) single, para aplicaes do tipo push-to-talk, em que o reconhecimento
explicitamente controlado pelo usurio; (3) multiple, usada em aplicaes de
84
6.3.5
volvida para a construo de interfaces multimodais. Assim como a SALT, os programadores utilizam a X+V para inserir elementos de voz em aplicaes Web. Entretanto,
ao invs de inventar novas tags, a X+V reutiliza as tags existentes no XHTML 1.1 e no
VoiceXML 2.0.
O XHTML consiste basicamente de HTML compatvel com as regras de formatao do XML e o padro atual para construo de pginas Web. J o VoiceXML
foi desenvolvido para a criao de dilogos de adio e voz sintetizada, reconhecimento
de voz e DTMF, como mencionado na Seo 6.3.3. Juntos, o XHTML e o VoiceXML
provem um suporte rico e padronizado para a integrao de interfaces de voz ao
tradicional ambiente grfico da Web.
O padro X+V ainda est em desenvolvimento, sendo que apenas em 2002, IBM,
Motorola e Opera Software submeteram a especificao do X+V ao W3C. O objetivo
era definir um padro que satisfizesse um conjunto de caractersticas como flexibilidade, facilidade de uso e adaptao a diferentes tipos de dispositivos. Assim como o
VoiceXML, o X+V surgiu em resposta demanda crescente por interao baseada em
voz para pequenos dispositivos mveis, permitindo que os mesmos suportem interao visual (por caneta ou teclado), interao por voz, ou ambos [IBM Corp., 2004].
85
Arquitetura da X+V
Uma aplicao Web multimodal escrita em X+V composta por trs elementos
principais [IBM Corp., 2004]: um documento XHTML, que pode ser visto como um
continer para as marcaes visuais (formulrios, campos de texto, caixas de seleo,
imagens, etc.); fragmentos de marcaes VoiceXML (campos de voz, formulrios, etc.);
e um continer para a marcao de eventos XML, que correlacionam os elementos
visuais aos de voz e definem seu comportamento.
A X+V utiliza a noo de documentos e formulrios.
Um nico documento
VoiceXML pode conter mltiplos formulrios de voz, que por sua vez podem ser embutidos em documentos XHTML para criar aplicaes multimodais. Essas aplicaes
so compatveis com diferentes plataformas e dispositivos, podendo ser executadas
em browsers multimodais, browsers visuais apenas ou em sistemas baseados somente em voz, como IVRs. A Figura 6.8 ilustra essa caracterstica.
86
dulos para sntese de voz, gerenciamento de gramticas e dilogos. Uma vez que o
ambiente de uma aplicao Web orientado a eventos, a X+V incorpora o framework
DOM usado no padro de eventos XML. Com isso, eventos HTML do tipo on mouseover ou on input focus so utilizados para criar a correlao entre as marcaes de
voz e visuais.
X+V versus SALT
X+V e SALT so linguagens de marcao para a criao de aplicaes Web que
suportam interao por voz. Embora ambas linguagens tenham conceitos bastantes
similares, existem algumas diferenas fundamentais entre elas [IBM Corp., 2004]:
1. A SALT no amarrada a nenhuma linguagem de marcao visual ou modelo
de eventos. Pelo contrrio, ela um conjunto genrico de tags que pode ser
inserido em vrias outras linguagens. Isso faz com que ela requeira um continer
para prover o fluxo de execuo da aplicao, embora ela no defina um. J a
X+V pode usar tanto um formulrio VoiceXML (que possui seu prprio fluxo
de interao na forma de um algoritmo de interpretao de formulrios), como
tambm o fluxo da linguagem hospedeira XHTML.
2. Uma aplicao desenvolvida em SALT utilizando uma linguagem hospedeira especfica deve ser adaptada para cada ambiente de execuo distinto (por exemplo, celulares ou PDAs de diferentes fabricantes).
6.3.6
uma linguagem de marcao desenvolvida para uso em sistemas que realizam a interpretao semntica de entradas como voz, escrita manual, etc. A EMMA possibilita
87
Nesse exemplo, o elemento <emma:interpretation> corresponde interpretao gerada pelo reconhecedor. O atributo <emma:mode> especifica a modalidade de
entrada, enquanto que o atributo <emma:confidence> informa a probabilidade de acerto do reconhecimento (taxa de preciso); os atributos <emma:start> e <emma:end>
informam o timestamp inicial e final da entrada, respectivamente.
Os elementos
88
Tipos de Dados
Tipicamente, um documento EMMA pode conter trs tipos de dados que so
utilizadas para descrever a informao entrada pelo usurio:
Dados de Instncia: Correspondem representao em XML de uma interpretao
da entrada do usurio. So marcaes especficas da aplicao cuja informao
relevante para um consumidor de documentos EMMA.
Modelo de Dados: Consiste das restries na estrutura e no contedo de uma instncia. O modelo de dados geralmente um esquema pr-estabelecido pela
aplicao, podendo tambm no ser especificado.
Metadados: Correspondem s anotaes associadas aos dados obtidos na instncia.
Os valores das anotaes so adicionados pelos processadores de entrada em
tempo de execuo.
A principal vantagem da adoo de um padro comum de representao de dados como o EMMA, com relao a interoperabilidade [Larson, 2003]. Componentes
de diferentes fabricantes podero ser acoplados em uma aplicao multimodal e trabalhar em conjunto. Por exemplo, um reconhecedor de voz de um fabricante A, um
reconhecedor de escrita de um fabricante B, um componente de integrao de um
fabricante C, e um gerenciador de interao de um fabricante D, conseguiro trocar
informaes EMMA entre si. EMMA poder ser utilizada ento como uma linguagem
de intercmbio entre componentes de sistemas multimodais.
6.4
Consideraes Finais
Este captulo teve por objetivo descrever alguns exemplos de aplicaes comu-
mente referenciadas pela literatura, alm de fornecer uma viso geral das tecnologias e padres que esto atualmente em fase de especificao na rea de interfaces
multimodais. O uso desses padres dever proporcionar uma maior agilidade no
desenvolvimento de sistemas multimodais, alm de assegurar a compatibilidade das
aplicaes entre diferentes tipos de dispositivos e softwares, facilitando a extenso e
o reuso de componentes.
CAPTULO
Concluses
7.1
Consideraes Iniciais
Interfaces multimodais que suportam simultaneamente diferentes tipos de en-
trada do usurio esto se tornando cada vez mais comuns. reas de pesquisa como
Interao Humano-Computador e Computao Ubqua tem concentrado esforos para
melhor explorar as capacidades desse tipo de interface, seja por meio da construo
de infraestruturas de hardware ou do desenvolvimento de novas aplicaes. A literatura reporta diversas tcnicas e aplicaes que utilizam esse conceito para proporcionar experincias mais ricas de interao aos usurios. Os ganhos em termos de
usabilidade e acessibilidade com a implementao de interfaces multimodais justificam o seu alto custo de desenvolvimento.
Atualmente, vrios consrcios da indstria tambm tem se mobilizado com o
objetivo de definir padres e linguagens para o desenvolvimento de interfaces multimodais. O uso de multimodalidade no ambiente Web pode ser um fator fundamental
para a popularizao desse tipo de interface. Alm disso, a padronizao permite que
uma mesma aplicao execute em diferentes plataformas e dispositivos, garantindo a
portabilidade e diminuindo custos atravs do reuso de software.
Enquanto estes padres ainda no esto totalmente definidos, iniciativas individuais como a do trabalho aqui reportado tentam suprir a falta de ferramentas de
suporte ao desenvolvimento de aplicaes multimodais. Este trabalho teve como objetivo investigar a construo de uma infraestrutura para facilitar o desenvolvimento de
89
90
CAPTULO 7. CONCLUSES
7.2
Resultados e Contribuies
Dentre os principais resultados obtidos e contribuies, pode-se citar:
7.3
91
7.4
Trabalhos futuros
Como continuidade da pesquisa aqui apresentada, se faz oportuna a realizao
de sesses de experimento do framework e de desenvolvimento de aplicaes no contexto de disciplinas de Interao Usurio-Computador e de Computao Ubqua. A
avaliao da interao do usurio com interfaces multimodais tem sido reportada em
vrios contextos tais como o de objetos tangveis Taib and Ruiz [2005]; Petridis et al.
[2006] e de usurios mveis Jost et al. [2005].
A conduo de avaliaes relacionadas a reusabilidade do JMIS Framework tambm outro ponto a ser trabalhado. Devido ao curto tempo de implementao, ainda
no foi realizada nenhuma comparao em termos de mtricas, linhas de cdigo ou
esforo de implementao necessrio com e sem o uso do framework.
Os vrios trabalhos realizados com suporte de verses preliminares do framework proposto (listados na Seo 1.4) no realizaram experimentos formais com
92
CAPTULO 7. CONCLUSES
Referncias Bibliogrficas
20th Century Fox (2002). Minority Report. Movie. Directed by Steven Spielberg.
Abowd, G. D. and Mynatt, E. D. (2000). Charting past, present, and future research in
ubiquitous computing. ACM Trans. on Computer-Human Interaction, 7(1):2958.
Alexander, C., Ishikawa, S., Silverstein, M., Jacobson, M., Fiksdahl-King, I., and Angel, S.
(1977). A Pattern Language. Oxford University Press, New York, NY, USA.
Apache Software Foundation (2000).
Struts.
http://struts.apache.org. Acessado em 20/09/2006.
Disponvel
na
Internet
em
Bachmann, F., Bass, L., Buhman, C., Comella-Dorda, S., Long, F., Robert, J., Seacord, R.,
and Wallnau, K. (2000). Technical Concepts of Component-Based Software Engineering.
Technical report, Carnegie Mellon University - Software Engineering Institute.
Barthelmess, P., Kaiser, E., Lunsford, R., McGee, D., Cohen, P., and Oviatt, S. (2006). Humancentered collaborative interaction. In HCM 06: Proceedings of the 1st ACM international
workshop on Human-centered multimedia, pages 18, New York, NY, USA. ACM Press.
Bolt, R. A. (1980). Put-That-There: Voice and Gesture at the Graphics Interface. Computer
Graphics, 14(3):26270.
Bosch, J., Molin, P., Mattsson, M., and Bengtsson, P. (1997). ObjectOriented Frameworks Problems and Experiences.
Bouchet, J., Nigay, L., and Ganille, T. (2004). Icare - software components for rapidly developing multimodal interfaces. In ICMI 04: Proceedings of the 6th International Conference on
Multimodal Interfaces, pages 251258, New York, NY, USA. ACM Press.
Brown, A. W. and Short, K. (1997). On Components and Objects: The Foundations of
Component-Based Development. In SAST 97: Proceedings of the 5th International Symposium on Assessment of Software Tools (SAST 97), pages 112121, Washington, DC, USA.
IEEE Computer Society.
93
94
REFERNCIAS BIBLIOGRFICAS
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., and Stal, M. (1996). PatternOriented Software Architecture: A System of Patterns. John Wiley & Sons, Inc., New York,
NY, USA.
Carnegie Mellon University (2004).
CMU Sphinx.
http://cmusphinx.org. Acessado em 30/08/2006.
Disponvel
na
Internet
em
Cattelan, R. G., Andrade, A. R., Rocha, C. F. P., and Pimentel, M. G. C. (2003). iClass: um
sistema para captura e acesso de sesses em ambiente educacional. Revista Eletrnica
de Iniciao Cientfica (REIC) da SBC. Disponvel na Internet em http://www.sbc.org.br/reic.
Acessado em 10/09/2006., page 19.
Cattelan, R. G., Jr, V. R. I., and Pimentel, M. G. C. (2005). Pervasive Imaging: a Capture and
Access Perspective. In Proceedings of the 2005 Workshop of Pervasive Image Capture and
Sharing.
Chai, J. Y., Prasov, Z., Blaim, J., and Jin, R. (2005). Linguistic theories in efficient multimodal reference resolution: an empirical investigation. In IUI 05: Proceedings of the 10th
international conference on Intelligent user interfaces, pages 4350, New York, NY, USA. ACM
Press.
Chan, K. F. and Yeung, D. Y. (1999). Recognizing on-line handwritten alphanumeric characters through flexible structural matching. Pattern Recognition, 32(7):10991114.
Cloudgarden
(2001).
TalkingJava
SDK.
Disponvel
http://www.cloudgarden.com/JSAPI. Acessado em 30/08/2006.
na
Internet
em
Cohen, P. R., Darlymple, M., Pereira, F. C. N., Sullivan, J. W., Gargan, R. A., Schlossberg,
J. L., and Tyler, S. W. (1989). Synergic Use of Direct Manipulation and Natural Language.
In In Proceedings of the Conference on Human Factors in Computing Systems - (CHI 89),
pages 227233, Austin, TX.
Cohen, P. R., Johnston, M., McGee, D., Oviatt, S., Pittman, J., Smith, I., Chen, L., and Clow,
J. (1997). QuickSet: Multimodal interaction for distributed applications. In Proceedings of
the Fifth ACM International Multimedia Conference, pages 3140.
Corradini, A., Mehta, M., Bernsen, N.-O., Martin, J.-C., and Abrilian, S. (2003). Multimodal
Input Fusion in Human-Computer Interaction - On the Example of the on-going NICE
Project. In To appear in Proceedings of the NATO-ASI Conference on Data Fusion for Situation Monitoring, Incident Detection, Alert and Response Management, Yerevan, Armenia.
Costa, E. J. X. and Cabral Jr., E. F. (2000). EEG-based discrimination between imagination of
left and right hand movements using adaptive gaussian representation. Journal of Medical
Engineering and Physics, 22(5):345348.
D. L. Hall and J. Llinas (1997). An Introduction to Multisensor Data Fusion. In Proceedings
of the IEE, volume 85, pages 623.
REFERNCIAS BIBLIOGRFICAS
95
de Souza, C. R. B., Redmiles, D., Cheng, L.-T., Millen, D., and Patterson, J. (2004). Sometimes
you need to see through walls: a field study of application programming interfaces. In CSCW
04: Proceedings of the 2004 ACM conference on Computer supported cooperative work, pages
6371, New York, NY, USA. ACM Press.
Dix, A. J., Finlay, J. E., Abowd, G. D., and Beale, R. (1998). Human-Computer Interaction.
Prentice Hall, Second Edition edition.
Duncan, L., Brown, W., Esposito, C., Holmback, H., and Xue, P. (1999). Enhancing virtual
maintenance environments with speech understanding. Technical report, Boeing M&CT
TechNet. Intranet publication.
Fayad, M. and Schmidt, D. C. (1997). Object-oriented Application Frameworks. Communications of the ACM, 40(10):3238.
Flippo, F., Krebs, A., and Marsic, I. (2003). A framework for rapid development of multimodal
interfaces. In Proceedings of the 5th International Conference on Multimodal Interfaces, pages
109116. ACM Press.
Forsberg, A., Dieterich, M., and Zeleznik, R. (1998). The Music Notepad. In UIST 98: Proceedings of the 11th Annual ACM Symposium on User Interface Software and Technology, pages
203210, New York, NY, USA. ACM Press.
Fowler, M. (2002). Public versus Published Interfaces. IEEE Software, 19:1819.
Freeman, H. (1974). Computer processing of line drawing images. ACM Computing Surveys,
6(1):5798.
Froehlich, G., Hoover, H. J., Liu, L., and Sorenson, P. G. (1997). Hooking into Object-Oriented
Application Frameworks. In International Conference on Software Engineering, pages 491
501.
Froehlich, G., Hoover, J., Liu, L., and Sorenson, P. (1998). Designing Object-Oriented Frameworks.
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995). Design Patterns: Elements of
Reusable Object-Oriented Software. Addisson-Wesley, Toronto, Ontario. Canada.
Goularte, R., Camacho-Guerrero, J. A., Incio Jr., V. R., and Cattelan, R. G. (2004). M4Note:
a multimodal tool for multimedia annotation. In Proceedings of the WebMedia & LA-Web
2004 Joint Conference (SBC/IW3C)(to appear).
Han, J. Y. (2005). Low-Cost Multi-Touch Sensing through Frustrated Total Internal Reflection.
In UIST 05: Proceedings of the 18th Annual ACM Symposium on User Interface Software and
Technology, pages 115118, New York, NY, USA. ACM Press.
Hanheide, M., Bauckhage, C., and Sagerer, G. (2005). Combining environmental cues & head
gestures to interact with wearable devices. In ICMI 05: Proceedings of the 7th international
conference on Multimodal interfaces, pages 2531, New York, NY, USA. ACM Press.
96
REFERNCIAS BIBLIOGRFICAS
Harrison, B. L. et al. (1998). Squeeze me, hold me, tilt me! an exploration of manipulative
user interfaces. In Proc. of the ACM Conference on Human Factors in Computing Systems.
Hauptmann, A. G. and McAvinney, P. (1993). Gestures with Speech for Graphics Manipulation. International Journal of Man-Machine Studies, 38:231249.
Holzman, T. G. (1999). Computer-human interface solutions for emergency medical care.
Interactions, 6(3):1324.
Honkala, M. and Pohja, M. (2006). Multimodal interaction with xforms. In ICWE 06: Proceedings of the 6th International Conference on Web Engineering, pages 201208, New York, NY,
USA. ACM Press.
IBM
(1998a).
Speech
for
Java.
Disponvel
na
Internet
http://www.alphaworks.ibm.com/tech/speech. Acessado em 30/08/2006.
IBM
(1998b).
ViaVoice.
Disponvel
na
Internet
306.ibm.com/software/voice/viavoice. Acessado em 30/08/2006.
em
em
http://www-
REFERNCIAS BIBLIOGRFICAS
97
98
REFERNCIAS BIBLIOGRFICAS
Microsoft
(1999).
Microsoft
Agent.
Disponvel
http://www.microsoft.com/msagent. Acessado em 30/08/2004.
na
Internet
em
Microsoft (2006).
Windows API Reference.
Disponvel na Internet em
http://msdn2.microsoft.com/en-us/library/aa383749.aspx. Acessado em 20/12/2006.
Microsoft Corp. (2006). Speech Application Language Tags (SALT). Disponvel na Internet em
http://www.microsoft.com/speech/evaluation/speechtags. Acessado em 20/12/2006.
Morimoto, C. H., Koons, D., Amir, A., Flickner, M., and Zhai, S. (1999). Keeping an Eye
for HCI. In Proceedings of the XII Brazilian Symposium in Computer Graphics and Image
Processing - SIBGRAPI, pages 171176, State University of Campinas, So Paulo, Brazil.
Nock, H. J., Iyengar, G., and Neti, C. (2004). Multimodal processing by finding common cause.
Communications of the ACM, 47(1):5156.
Oviatt, S., DeAngeli, A., and Kuhn, K. (1997). Integration and Synchronization of Input Modes
During Multimodal Human-Computer Interaction. In In Proceedings of the Conference on
Human Factors in Computing Systems - (CHI 97), pages 415422, Atlanta, GA.
Oviatt, S. L. (2002). The Human-Computer Interaction Handbook: Fundamentals, Evolving
Technologies and Emerging Applications, chapter 14, Multimodal Interfaces, pages 286304.
Lawrence Erlbaum Assoc.
Oviatt, S. L. and Cohen, P. R. (2000). Multimodal interfaces that process what comes naturally. Communications of the ACM, 43(3):4553.
Oviatt, S. L., Cohen, P. R., Wu, L., Vergo, J., Duncan, L., Suhm, B., Bers, J., Holzman, T.,
Winograd, T., Landay, J., Larson, J., and Ferro, D. (2000). Designing the User Interface
for Multimodal Speech and Gesture Applications: State-of-the-art Systems and Research
Directions. Human Computer Interaction, 15(4):263322.
Palm (1997). Graffiti. Disponvel na Internet em http://www.palm.com/us/products/input.
Acessado em 30/12/2006.
Pan, S., Shen, S., Zhou, M. X., and Houck, K. (2005). Two-way adaptation for robust input
interpretation in practical multimodal conversation systems. In IUI 05: Proceedings of the
10th international conference on Intelligent user interfaces, pages 3542, New York, NY, USA.
ACM Press.
Paterno;, F. and Giammarino, F. (2006). Authoring interfaces with combined use of graphics
and voice for both stationary and mobile devices. In AVI 06: Proceedings of the working
conference on Advanced visual interfaces, pages 329335, New York, NY, USA. ACM Press.
Petridis, P., Mania, K., Pletinckx, D., and White, M. (2006). Usability evaluation of the epoch
multimodal user interface: designing 3d tangible interactions. In VRST 06: Proceedings of
the ACM symposium on Virtual reality software and technology, pages 116122, New York,
NY, USA. ACM Press.
REFERNCIAS BIBLIOGRFICAS
99
Pieraccini, R., Dayanidhi, K., Bloom, J., Dahan, J., Phillips, M., Goodman, B. R., and Prasad,
K. V. (2004). Multimodal conversational systems for automobiles. Communications of the
ACM, 47(1):4749.
Plamondon, R. and Srihari, S. N. (2000). On-Line and Off-Line Handwriting Recognition: A
Comprehensive Survey. IEEE Transactions on Pattern Analysis and Machine Intelligence,
22(1):6384.
Pollard, C. and Sag, I. A. (1994). Head-Driven Phrase Structure Grammar. University of Chicago
Press and CSLI Publications, Chicago, Illinois.
Pree, W. (1999). In Building Application Frameworks: Object-Oriented Foundations of Framework Design, chapter Hot-Spot-Driven Development, pages 379393. John Wiley & Sons,
Inc.
Pressman, R. S. (2002). Software Engineering - A Practitioners Approach. McGraw-Hill, 5th
edition.
R. R. Murphy (1996). Biological and Cognitive Foundations of Intelligent Data Fusion. IEEE
Transactions on Systems, Man, and Cybernetics, 26:4251.
SALT Forum (2002). Speech Application Language Tags (SALT) 1.0 Specification. Disponvel
na Internet em http://www.saltforum.org. Acessado em 20/12/2006.
SALT Forum (2006). Speech Application Language Tags (SALT) - Technical White Paper.
Disponvel na Internet em http://www.saltforum.org. Acessado em 20/12/2006.
Schmidt, D. C. and Buschmann, F. (2003). Patterns, Frameworks, and Middleware: Their
Synergistic Relationships. In ICSE 03: Proceedings of the 25th International Conference on
Software Engineering, pages 694704, Washington, DC, USA. IEEE Computer Society.
Serrano, M., Nigay, L., Demumieux, R., Descos, J., and Losquin, P. (2006). Multimodal
interaction on mobile phones: development and evaluation using acicare. In MobileHCI 06:
Proceedings of the 8th Conference on Human-computer Interaction with Mobile Devices and
Services, pages 129136, New York, NY, USA. ACM Press.
Sharma, R., Pavlovi, V. I., and Huang, T. S. (1998). Toward Multimodal Human-Computer
Interface. Proceedings of the IEEE, 86(5):853869.
Sun Microsystems (1996).
Java Platform.
Disponvel
http://java.sun.com/downloads. Acessado em 20/09/2006.
na
Internet
em
100
REFERNCIAS BIBLIOGRFICAS
Internet
em
Taib, R. and Ruiz, N. (2005). Evaluating tangible objects for multimodal interaction design.
In OZCHI 05: Proceedings of the 19th conference of the computer-human interaction special
interest group (CHISIG) of Australia on Computer-human interaction, pages 14, Narrabundah, Australia, Australia. Computer-Human Interaction Special Interest Group (CHISIG) of
Australia.
Taib, R. and Ruiz, N. (2006). Multimodal interaction styles for hypermedia adaptation. In
IUI 06: Proceedings of the 11th international conference on Intelligent user interfaces, pages
351353, New York, NY, USA. ACM Press.
Tse, E., Shen, C., Greenberg, S., and Forlines, C. (2006). Enabling interaction with single user
applications through speech and gestures on a multi-user tabletop. In AVI 06: Proceedings
of the working conference on Advanced visual interfaces, pages 336343, New York, NY, USA.
ACM Press.
W3C (1996). XML - Extensible Markup Language.
www.w3c.org/XML. Acessado em 06/07/2006.
REFERNCIAS BIBLIOGRFICAS
101
Wang, K. (2002). SALT: An XML Application for Web-based Multimodal Dialog Management.
In NLPXML 02: Proceedings of the 2nd Workshop on NLP and XML, pages 18, Morristown,
NJ, USA. Association for Computational Linguistics.
Weiser, M. (1991). The computer for the 21st century. Scientific American, 265(3):94104.
Westeyn, T., Brashear, H., Atrash, A., and Starner, T. (2003). Georgia Tech Gesture Toolkit:
Supporting Experiments in Gesture Recognition. In Proceedings of the 5th international
conference on Multimodal interfaces, pages 8592. ACM Press.
Wikipedia
(2006).
Library
(computing).
Disponvel
na
Internet
http://en.wikipedia.org/wiki/Library_(computing). Acessado em 20/12/2006.
em
Zhao, W., Chellappa, R., Phillips, P. J., and Rosenfeld, A. (2003). Face recognition: A literature
survey. ACM Computing Surveys, 35(4):399458.