Você está na página 1de 119

SERVIO DE PS-GRADUAO DO ICMC-USP

Data de Depsito: 16/02/2007


Assinatura:

Um Framework para
Desenvolvimento de Interfaces
Multimodais em Aplicaes de
Computao Ubqua

Valter dos Reis Incio Jnior

Orientadora: Profa. Dra. Maria da Graa Campos Pimentel

Dissertao apresentada ao Instituto de Cincias


Matemticas e de Computao ICMC-USP, como parte
dos requisitos para obteno do ttulo de Mestre em
Cincias de Computao e Matemtica Computacional.

USP So Carlos
Fevereiro/2007

Um Framework para Desenvolvimento de


Interfaces Multimodais em Aplicaes de
Computao Ubqua

Valter dos Reis Incio Jnior

Dedicatria

A Deus, pela oportunidade de viver experincias


que por vezes nos fazem questionar a Sua razo,
mas que sempre se revelam passos necessrios e
enobrecedores do carter e da natureza humana.

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

Interfaces multimodais processam vrios tipos de entrada do usurio, tais como


voz, gestos e interao com caneta, de uma maneira combinada e coordenada com a
sada multimdia do sistema. Aplicaes que suportam a multimodalidade provem
um modo mais natural 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. O uso de interfaces que
fogem do estilo convencional de interao baseado em teclado e mouse vai de encontro ao conceito de computao ubqua, que tem se estabelecido como uma rea de
pesquisa que estuda os aspectos tecnolgicos e sociais decorrentes da integrao de
sistemas e dispositivos computacionais ambientes. Nesse contexto, o trabalho aqui
reportado visou investigar a implementao de interfaces multimodais em aplicaes
de computao ubqua, por meio da construo de um framework de software para
integrao de modalidades de escrita e voz.

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5 Estrutura do Documento . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Interfaces Multimodais e Computao Ubqua

2.1 Consideraes Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2 Interfaces Multimodais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3 Interao por Voz e Caneta . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.4 Computao Ubqua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2.5 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

3 Conceitos Fundamentais: Reuso de Software

15

3.1 Consideraes Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

3.2 Bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

3.3 APIs - Application Programming Interfaces . . . . . . . . . . . . . . . . . .

17

3.4 Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

3.5 Frameworks

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

3.6 Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

3.7 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

4 Infraestruturas de Escrita e Voz: JInk API e JSAPI

27

4.1 Consideraes Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

4.2 Modalidade de Escrita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

4.3 Java Ink API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

4.3.1 Mtodo de Reconhecimento . . . . . . . . . . . . . . . . . . . . . . .

29

4.3.2 Primitivas Estruturais . . . . . . . . . . . . . . . . . . . . . . . . . .

30

4.3.3 Conjunto de Modelos . . . . . . . . . . . . . . . . . . . . . . . . . .

31

4.3.4 Extrao e Reconstruo da Estrutura . . . . . . . . . . . . . . . .

32

4.3.5 Casamento Estrutural Flexvel . . . . . . . . . . . . . . . . . . . . .

34

4.3.6 Ps-Processamento

. . . . . . . . . . . . . . . . . . . . . . . . . . .

35

4.3.7 Especificao de Requisitos . . . . . . . . . . . . . . . . . . . . . . .

37

4.3.8 Modelagem e Implementao . . . . . . . . . . . . . . . . . . . . . .

37

4.3.9 Configurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

4.4 Java Speech API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

4.4.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

4.4.2 JSGF - Java Speech Grammar Format . . . . . . . . . . . . . . . .

43

4.4.3 JSML - Java Speech Markup Language . . . . . . . . . . . . . . . .

44

4.5 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

5 O Projeto Desenvolvido: JMIS Framework

47

5.1 Consideraes Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

5.2 Fuso de Modalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

5.3 Tcnicas de Integrao Multimodal Utilizadas . . . . . . . . . . . . . . . .

48

5.3.1 Integrao Multimodal baseada em Unificao

. . . . . . . . . . .

49

5.3.2 Gramtica Multimodal baseada em Unificao

. . . . . . . . . . .

50

5.4 Especificao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

5.4.1 Requisitos No-Funcionais . . . . . . . . . . . . . . . . . . . . . . .

53

5.4.2 Requisitos Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . .

54

5.5 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

5.6 Modelagem e Implementao . . . . . . . . . . . . . . . . . . . . . . . . . .

55

5.6.1 Componente Multimodal . . . . . . . . . . . . . . . . . . . . . . . .

56

vi

5.6.2 Mdulo de Escrita . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

5.6.3 Mdulo de Voz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

5.6.4 Integrador Multimodal . . . . . . . . . . . . . . . . . . . . . . . . . .

59

5.7 Estrutura de Pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

5.8 Configurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

5.9 Avaliao: Aplicaes Construdas . . . . . . . . . . . . . . . . . . . . . .

61

5.9.1 SpeechBoard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

62

5.9.2 M4Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

64

5.10 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

64

6 Trabalhos Relacionados

67

6.1 Consideraes Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

6.2 Aplicaes Multimodais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

68

6.2.1 Put-That-There . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

68

6.2.2 QuickSet

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

6.2.3 Field Medic Information System . . . . . . . . . . . . . . . . . . . .

69

6.2.4 Ford Model U Concept Car . . . . . . . . . . . . . . . . . . . . . . .

70

6.2.5 Multi-Touch Interaction Wall . . . . . . . . . . . . . . . . . . . . . .

71

6.3 Linguagens e Padres Multimodais . . . . . . . . . . . . . . . . . . . . . .

72

6.3.1 W3C MMIF - Multimodal Interaction Framework . . . . . . . . . .

73

6.3.2 InkML - Ink Markup Language . . . . . . . . . . . . . . . . . . . . .

75

6.3.3 VoiceXML - Voice Extensible Markup Language . . . . . . . . . . .

78

6.3.4 SALT - Speech Application Language Tags . . . . . . . . . . . . . .

82

6.3.5 X+V - XHTML + Voice . . . . . . . . . . . . . . . . . . . . . . . . . .

84

6.3.6 EMMA - Extensible MultiModal Annotation markup language

. .

86

6.4 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

88

7 Concluses

89

7.1 Consideraes Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

7.2 Resultados e Contribuies . . . . . . . . . . . . . . . . . . . . . . . . . . .

90

7.3 Limitaes e Problemas Encontrados . . . . . . . . . . . . . . . . . . . . .

91

7.4 Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

91

Referncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

vii

viii

Lista de Figuras

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). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2 Exemplos de dispositivos de computao ubqua: PDA, Tablet PC e lousa


eletrnica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

3.1 Inverso de controle: diferena entre bibliotecas, APIs e frameworks


(adaptado de [Bachmann et al., 2000]). . . . . . . . . . . . . . . . . . . . .

22

4.1 Viso geral do mtodo de reconhecimento definido por Chan and Yeung
[1999]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

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. . . . . . . . . . . . . . . . . . . . . . . .

31

4.3 Verses deformadas do caractere T resultantes de alterao no tipo (a)


e na direo (b) das primitivas (adaptado de [Chan and Yeung, 1999]). .

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

4.5 Interfaces do Painel de Configurao ( esquerda) e do Painel de Controle


( direita) da Java Ink API. . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

4.6 Arquitetura bsica de uma aplicao Java utilizando a JSAPI. . . . . . . . . .

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

5.3 Diagrama de classes UML para o mdulo de escrita. . . . . . . . . . . . .

58

5.4 Diagrama de classes UML para o mdulo de voz. . . . . . . . . . . . . . .

59

5.5 Diagrama de classes para o mdulo relacionado ao Integrador Multimodal, considerado o ncleo do sistema. . . . . . . . . . . . . . . . . . . .

61

5.6 Interface de configurao do JMIS Framework: gerao do conjunto de


regras e definio de propriedades. . . . . . . . . . . . . . . . . . . . . . .

63

5.7 Interfaces da SpeechBoard e dos mdulos de reconhecimento de voz e


escrita.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

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. . . . . . . . . . . . . . . . . . .

65

6.1 Put-That-There [Bolt, 1980], um dos primeiros sistemas multimodais. . . . . .

68

6.2 QuickSet [Cohen et al., 1997]: Interao multimodal em diversos ambientes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

6.3 Interfaces multimodais do FMA e do FMC [Holzman, 1999]. . . . . . . . .

70

6.4 Carro-conceito Ford Model U: interior do veculo e interface grfica com


tela sensvel ao toque [Pieraccini et al., 2004]. . . . . . . . . . . . . . . . .

71

6.5 Exemplos de aplicaes construdas utilizando a tecnologia do MultiTouch [Han, 2005]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

72

6.6 Fluxo de informao entre os componentes do W3C Multimodal Interaction Framework [W3C, 2002a]. . . . . . . . . . . . . . . . . . . . . . . . . .

73

6.7 Exemplo de uma arquitetura cliente-servidor utilizando VoiceXML. . . .

80

6.8 Mltiplos formulrios VoiceXML embutidos em um documento XHTML.


O resultado uma aplicao multimodal X+V que executa em diferentes
dispositivos.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

4.2 Conjunto de elementos da JSML. . . . . . . . . . . . . . . . . . . . . . . .

46

5.1 Resumo dos pacotes e suas respectivas funes no JMIS Framework. . .

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

JSGF Java Speech Grammar Format


JSML Java Speech Markup Language
MFC Microsoft Foundation Classes
MVC Model-View-Controller
MMIF Multimodal Interaction Framework
ORB Object Request Broker
SALT Speech Application Language Tags
SDK Software Development Kit
SGML Standard Generalized Markup Language
SMIL Synchronized Multimedia Integration Language
SRGS Speech Recognition Grammar Specification
SSML Speech Synthesis Markup Language
STL Standard Template Library
SVG Scalable Vector Graphics
TTS Text-To-Speech
VoiceXML Voice Extensible Markup Language
W3C World Wide Web Consortium
WML Wireless Markup Language
WWW World-Wide Web
X+V XHTML+Voice
XHTML Extensible HyperText Markup Language
XML Extensible Markup Language

ii

CAPTULO

Introduo

1.1

Contextualizao
O progresso atual no desenvolvimento de tecnologias de hardware tem levado

a um crescente aumento nas capacidades dos computadores, tornando-os menores,


mais rpidos e baratos. Isso vem possibilitando uma ampla difuso desses equipamentos pelos mais diversos ambientes, atingindo um nmero cada vez maior de
usurios. Dispositivos como telefones celulares, handhelds, laptops e superfcies
eletrnicas em geral j se tornaram parte do cotidiano das pessoas, sendo considerados indispensveis para a manuteno do estilo de vida moderno.
Entretanto, um problema inerente ao uso dos computadores que muitas vezes
os usurios so obrigados a mudar seus hbitos e mtodos de trabalho para adaptarem-se a eles. Embora a evoluo dos softwares tenha acompanhado de perto
o desenvolvimento dos hardwares, h uma enorme demanda por sistemas que sejam fceis de usar (alta usabilidade) e que no interfiram muito na maneira das
pessoas realizarem suas tarefas (pouco intrusivos). As interfaces grficas baseadas
no paradigma WIMP (Windows, Icons, Menus and Pointers), por exemplo, apesar de
representarem uma evoluo em relao s interfaces textuais, requerem ainda um
aprendizado especfico significativo, sobretudo para as pessoas que no utilizam o
computador no seu dia-a-dia.

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-

tegrao de interfaces multimodais, especificamente as que envolvem interao por


caneta e voz, a aplicaes de computao ubqua. Para tanto, foi proposta a construo de um conjunto de componentes de software que agregassem as funcionalidades de reconhecimento de escrita manual, interpretao de gestos, smbolos e
formas desenhados manualmente, verificao de assinaturas, reconhecimento e sntese de voz. A idia era que esses componentes fossem estruturados sob a forma de
um framework, denominado Java Multimodal Ink and Speech (JMIS Framework), de
maneira a facilitar a sua utilizao por outros programadores.
As atividades desenvolveram-se no contexto de dois projetos de pesquisa: o Projeto InCA-SERVE 1 , que consiste de uma cooperao internacional entre o ICMCUSP,
no Brasil, e o Georgia Institute of Technology (GaTech), nos EUA, e tem como objetivo a construo de aplicaes de computao ubqua que enfatizam os processos de
captura e acesso de informao em ambientes tais como salas de aulas e reunies;
e o Projeto Applied Mobile Technology Solutions in Learning Environments2 , que o
resultado de uma parceria entre a Hewlett-Packard Company e a USP, e tem por objetivo explorar a utilizao de infraestruturas de computao mvel em atividades de
ensino e aprendizagem em ambientes universitrios. Esses projetos serviram de base
para a implementao de aplicaes prova-de-conceito, de modo a testar o framework
desenvolvido.

1.4

Publicaes
As publicaes obtidas at o momento no contexto deste trabalho foram:

Cattelan, R. G., Incio Jr, V. R., Pimentel, M. G. C. (2005). Pervasive Imaging:


a Capture and Access Perspective. In: Proceedings of the 2005 Workshop of
Pervasive Image Capture and Sharing, 2005, Tokio, Japan.
Macedo, A. A., Bulco Neto, R. F., Camacho-Guerrero, J. A., Jardim, C. H., Cattelan, R. G., Incio Jr, V. R., Pimentel, M. G. C. (2005). Linking Everyday Presentations through Context Information.In: Proceedings of the 3rd IW3C2 Latin
American Web Congress, 2005, Buenos Aires, pp. 1-8.
Goularte, R., Camacho-Guerrero, J. A., Incio Jr, V. R., Cattelan, R. G. Pimentel, M. G. C. (2005). M4Note: a Multimodal Tool for Multimedia Annotation.
In: Cadernos de Computao do ICMC-USP, So Carlos, May 2005, Vol. 6, No.
01, pp. 113-131.
1
2

http://coweb.icmc.usp.br/incaserve
http://coweb.icmc.usp.br/coweb/mostra.php?ident=167

1.5. ESTRUTURA DO DOCUMENTO

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

resume alguns fundamentos sobre as reas de pesquisa de interfaces multimodais


e computao ubqua; o Captulo 3 discute conceitos bsicos sobre reuso de software; o Captulo 4 detalha as duas infraestruturas envolvidas na implementao do
framework multimodal; o Captulo 5 descreve o projeto desenvolvido e os resultados
obtidos; o Captulo 6 apresenta alguns dos trabalhos relacionados; e o Captulo 7
apresenta as concluso do trabalho, contribuies e trabalhos futuros.

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

CAPTULO 2. INTERFACES MULTIMODAIS E COMPUTAO UBQUA

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).

2.2. INTERFACES MULTIMODAIS

Geralmente, quando utilizamos uma interface de computador, fazemos uso de


um dispositivo de entrada por vez, seja digitando, clicando o mouse, falando ou apontando com uma caneta magntica (como por exemplo, em tablets e lousas eletrnicas).
Essa maneira unimodal de expressar nossa inteno longe de ser satisfatria: alguns exemplos onde essa afirmao se torna evidente so quando pressionamos uma
tecla errada ou quando temos que navegar por uma srie de menus apenas para
mudar a cor de um objeto. A seguir so discutidas algumas razes prticas, biolgicas e at mesmo matemticas que justificam o uso da interao multimodal em IHC
[Sharma et al., 1998]:
Razes Prticas: Os sistemas de IHC atuais apresentam vrias desvantagens do
ponto de vista de eficincia. Embora estejamos habituados a utiliz-los, dispositivos como o teclado e o mouse so desajeitados e inconvenientes para uso em
certos aplicaes como, por exemplo, em ambientes de realidade virtual imersiva. Diversos estudos confirmam que as pessoas preferem utilizar mltiplas
modalidades para a manipulao de objetos virtuais [Hauptmann and McAvinney, 1993] [Oviatt et al., 1997]. Hauptmann and McAvinney [1993] concluram
que 71% dos indivduos pesquisados preferem utilizar as mos e a voz para controlar esses objetos do que uma nica modalidade isolada. Oviatt et al. [1997]
tambm demonstrou que 95% das pessoas tendem a utilizar gestos junto com a
voz para a tarefa de manipulao de mapas. Cohen et al. [1989] mostrou que as
modalidades tambm podem se complementar: gestos manuais so considerados ideais para manipulao direta de objetos, ao passo que a linguagem natural
mais bem aplicada em tarefas descritivas.
Razes Biolgicas: Uma argumentao racional para o uso de mltiplas modalidades pode ser encontrada na natureza: seres humanos bem como outros animais
integram mltiplos sentidos para interagir com o ambiente. Estudos revelam
que os diferentes sinais sensoriais so inicialmente capturados em reas distintas do crebro, convergindo ento para uma nica rea no colculo superior e
gerando um sinal resultante [R. R. Murphy, 1996]. A grande maioria (cerca de
75%) dos neurnios dessa regio do crebro so multi-sensoriais. Isso sugere
fortemente que o uso da multimodalidade em IHC seria desejvel, especialmente
se o objetivo for incorporar naturalidade de comunicao.
Razes Matemticas: Outras razes para a integrao de modalidades tem origem
do campo da Fuso de Dados.

O objetivo da Fuso de Dados pesquisar

maneiras de otimizar a integrao de diferentes sinais sensoriais (como por


exemplo, radar, infra-vermelho, etc.) para a deteco de alvos. A combinao
de mltiplos sensores provm da anlise estatstica de dados, que estabelece

10

CAPTULO 2. INTERFACES MULTIMODAIS E COMPUTAO UBQUA


que a desvantagem em se utilizar um nico sensor se d pela inadequao desse
sensor em reduzir a incerteza para a tomada de deciso. Essa incerteza surge
quando alguma caracterstica est ausente, ou o sensor no mede corretamente
todos os atributos necessrios ou quando as observaes so ambguas. Por
outro lado, estatisticamente vantajoso combinar mltiplas observaes de uma
mesma fonte, pois a redundncia melhora as estimativas e aumentam a preciso
do sistema [D. L. Hall and J. Llinas, 1997].

A utilizao simultnea de vrios canais sensoriais, ou modos de comunicao,


tais como viso e audio, aumenta a capacidade humana de absoro e troca de informao e evita que apenas um canal seja sobrecarregado [Dix et al., 1998]. A idia
que interfaces multimodais suportem de maneira flexvel a comunicao humanocomputador, permitindo assim que usurios com diferentes preferncias e nveis de
habilidades escolham o modo como iro interagir. Por exemplo, usurios com deficincias visuais ou motoras podem sentir-se mais confortveis ao utilizar uma interface baseada em voz, ao passo que usurios com problemas na fala ou audio
podem achar a interao por caneta ou gestos mais eficiente. A flexibilidade de interao inclui tanto a escolha de qual modalidade usar como tambm a possibilidade
de combinar diferentes tipos de entradas ou alternar entre os modos a qualquer momento. Isso vai de encontro ao conceito de computao ubqua (Seo 2.4) segundo o
qual os sistemas computacionais que devem se adaptar s pessoas, ao contrrio do
que acontece atualmente na maioria das aplicaes.
H ainda um crescente interesse no projeto de interfaces multimodais que explorem tecnologias baseadas em viso computacional, tais como reconhecimento de
faces [Zhao et al., 2003], gestos manuais [Westeyn et al., 2003] e rastreamento de
olhar [Morimoto et al., 1999]. Em contraste aos modos de entrada ativos como a
fala ou a escrita, nos quais o usurio interage explicitamente com o sistema, as tecnologias baseadas em viso permitem modos de entrada passivos, exigindo o mnimo
de interferncia e no desviando a ateno do usurio na execuo de suas tarefas
[Oviatt, 2002].

2.3

Interao por Voz e Caneta


Atualmente, sistemas envolvendo interao com voz e caneta constituem um

campo de pesquisa bastante em evidncia na rea de interfaces multimodais. Isso se


deve a uma srie de fatores, descritos a seguir.

2.3. INTERAO POR VOZ E CANETA

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

CAPTULO 2. INTERFACES MULTIMODAIS E COMPUTAO UBQUA

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:

2.4. COMPUTAO UBQUA

13

Figura 2.2: Exemplos de dispositivos de computao ubqua: PDA, Tablet PC e lousa


eletrnica.

Captura e acesso de experincias: Aplicaes de computao ubqua que tentam


automatizar a captura de experincias e prover acesso flexvel informao
capturada so de muita utilidade. Nos ltimos anos, sobretudo em funo da
difuso da multimdia nos ambientes computacionais, o homem passou a utilizar o computador como forma de capturar e armazenar memrias, por meio de
documentos tradicionais, hiperdocumentos ou arquivos de udio e vdeo. Esse
tipo de aplicao apresenta um amplo espao de pesquisa para a integrao de
interfaces multimodais, uma vez que as atividades de captura poderiam ser manipuladas e controladas de diferentes formas, provendo uma ubiqidade ainda
maior. O acesso s informaes armazenadas tambm seria facilitado, incluindo
a possibilidade de manipulao da informao multimdia por meio de interao
multimodal [Laverty and Defee, 1997].
Computao ciente de contexto: Aplicaes de computao ubqua precisam ser
cientes de contexto, isto , ser capazes de adaptar seu comportamento de acordo
com informaes obtidas do ambiente fsico e computacional. Muitas aplicaes
ainda tm procurado obter informaes simples de contexto, tais como informaes de localizao e identificao, mas numerosos desafios ainda impedem
a representao de contexto de forma reusvel e bem definida [Abowd and Mynatt, 2000]. Pesquisas recentes reportam o uso de interfaces multimodais com o
intuito de fornecer mecanismos para obteno de informaes de contexto [Nock
et al., 2004].
Interfaces naturais: As pessoas desejam interfaces que possibilitem diferentes formas de interao entre seres humanos e computadores. Similarmente s interfaces multimodais, o objetivo das interfaces naturais suportar as formas
comuns de expresso humana, porm de uma maneira transparente, tal como
as pessoas interagem com o mundo fsico. Alguns trabalhos tentam explorar o
uso de objetos concretos com o intuito de manipular artefatos computacionais,
criando o conceito de interfaces tangveis [Ishii and Ullmer, 1997]. H ainda

14

CAPTULO 2. INTERFACES MULTIMODAIS E COMPUTAO UBQUA


pesquisas relacionadas ao uso de sensores em dispositivos computacionais, de
modo a permitir que a manipulao fsica desses dispositivos seja corretamente
interpretada pelas aplicaes que os controlam [Harrison et al., 1998].

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.

Operaes comuns, tais como ordenaes, funes numricas e de manipulao de


15

16

CAPTULO 3. CONCEITOS FUNDAMENTAIS: REUSO DE SOFTWARE

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

exemplo seria um conjunto de classes para manipulao de colees de objetos, tais


como listas, pilhas e filas. As bibliotecas de classes no impem nenhum modelo de
arquitetura particular aplicao; elas apenas provem as funcionalidades que podem ajud-la a executar uma tarefa. Tais funcionalidades so fornecidas em baixonvel e o desenvolvedor o responsvel pela interconexo entre a biblioteca e aplicao. As bibliotecas de classes se tornaram mais comuns quando do surgimento de

3.3. APIS - APPLICATION PROGRAMMING INTERFACES

17

plataformas como a Java [Sun Microsystems, 1996], contendo um rico conjunto de


bibliotecas embutidas na prpria linguagem e mecanismos bem definidos de extenso, providos por meio de interfaces e pacotes (JARs - Java Archives).

3.3

APIs - Application Programming Interfaces


A habilidade para reutilizar mdulos de software e montar aplicaes a partir de

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

CAPTULO 3. CONCEITOS FUNDAMENTAIS: REUSO DE SOFTWARE

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

literatura. Muitos autores tentam defin-lo utilizando elementos que os permitem


caracteriz-lo sob diferentes ticas. Meijler and Nierstrasz [1997], por exemplo, sustentam que um componente uma abstrao de uma estrutura de software utilizada
para construir sistemas maiores que esconde os detalhes de implementao da estrutura menor. Tais estruturas ou peas de software so como caixas-pretas, possuindo um conjunto limitado de regras que funcionam como plugues, especificando
como elas podem ser combinadas. Assim, ao invs de ter que modificar a implementao interna de um componente para adaptar suas funcionalidades, o usurio

3.4. COMPONENTES

19

(cliente) apenas altera o comportamento do mesmo por meio de parmetros de configurao.


Brown and Short [1997], por sua vez, caracterizam um componente como um
conjunto de servios reusveis disponibilizados independentemente. Por conjunto
de servios reusveis entenda-se como o conjunto de capacidades que um componente prov e que outros componentes podem utilizar. No entanto, para que isso
seja possvel, o componente deve fornecer uma especificao completa e precisa dos
servios que ele oferece e de sua interface, de forma que uma implementao desenvolvida baseada em tal especificao se adeqe perfeitamente. Isso tambm possibilita que a implementao dos servios seja modificada sem afetar a utilizao do
componente, permitindo que os clientes continuem utilizando a mesma interface.
A outra parte da definio, disponibilizados independentemente, refere-se ao
fato de que em geral um componente desenvolvido sem conhecimento sobre o contexto onde ser utilizado. Isso enfatiza a noo de que componentes so construdos para colaborar entre si para realizar uma tarefa, mas no para interferir um no
outro. Em particular, dois componentes no podem ter dependncias entre si, podendo ser inclusive desenvolvidos em linguagens e plataformas distintas, ou ainda,
serem passveis de substituio sem que gerem algum efeito colateral no sistema
como um todo.
Atualmente, devido a grande concorrncia no setor de software, sistemas complexos precisam ser construdos em curtos perodos de tempo, com nfase na qualidade e no baixo custo de desenvolvimento. Tais requisitos fizeram com que surgisse
uma abordagem mais organizada de reuso, conhecida como Engenharia de Software
Baseada em Componentes (do Ingls, Component-Based Software Engineering - CBSE)
[Pressman, 2002]. O objetivo da CBSE tornar o processo de desenvolvimento mais
simples e gil, atravs da utilizao de componentes pr-construdos, padronizados
e que podem ser integrados a diferentes aplicaes. As aplicaes so projetadas
utilizando-se padres arquiteturais especficos para cada domnio e montadas a partir de componentes, resultando em um software de qualidade e em um curto perodo
de desenvolvimento.
Essa abordagem levou ao surgimento dos chamados produtos COTS (commercial
off-the-shelf ): componentes especialmente desenvolvidos para comercializao e prontos para o uso, os quais geralmente implementam interfaces padronizadas. Assim,
um sistema baseado em componentes pode envolver produtos de mltiplos fornecedores e ao mesmo tempo no depender de nenhum em especfico. Outro motivador
que o uso de componentes de terceiros no depende de ferramentas ou conhecimento
sobre o funcionamento interno do componente que s o fabricante possui [Bachmann
et al., 2000].

20

CAPTULO 3. CONCEITOS FUNDAMENTAIS: REUSO DE SOFTWARE


Com o impacto do CBSE, vrias companhias importantes e consrcios da inds-

tria tm proposto padres para o desenvolvimento de componentes, dentre os quais


podemos citar [Pressman, 2002]:
OMG CORBA: Especificado pelo OMG (Object Management Group), o padro CORBA
(Common Object Request Broker Architecture) define uma arquitetura comum
para negociao entre objetos distribudos. Ela se baseia na utilizao de um
intermediador de requisio de objetos (do Ingls, Object Request Broker - ORB),
que fornece diversos servios para permitir que componentes troquem informao entre si independentemente de sua localizao. A integrao dos componentes CORBA garantida por meio do uso de uma linguagem de interface
denominada IDL (Interface Definition Language) e os objetos se comunicam enviando solicitaes de servios ao ORB, usando o paradigma cliente/servidor.
Microsoft COM: O Modelo de Objetos de Componentes (Component Object Model COM) desenvolvido pela Microsoft fornece uma especificao para a integrao
de componentes reusveis produzidos por diferentes fornecedores em uma aplicao rodando sob o sistema operacional Windows. O COM constitudo basicamente por dois elementos: interfaces COM (implementadas pelos objetos) e um
conjunto de mecanismos para efetuar o registro e a troca de mensagens entre
esses componentes. O COM tambm largamente usado em produtos como o
Microsoft Office para permitir, por exemplo, que um documento Word referencie
dinamicamente dados em uma planilha Excel.
Sun JavaBeans: O sistema de componentes reutilizveis JavaBeans uma infraestrutura CBSE porttil, independente de plataforma, desenvolvida pela Sun
Microsystems para a linguagem de programao Java. O objetivo quando da
sua criao era que os componentes JavaBeans fossem utilizados como blocos simples de construo de aplicaes, podendo ser compostos, conectados e
customizados visualmente atravs de uma IDE (Integrated Development Environment). Para que uma classe seja considerada um JavaBean ela deve obedecer
certas convenes de nomes, propriedades e comportamentos, de modo a garantir a intercambialidade e padronizar o acesso s funcionalidades do componente.

3.5

Frameworks
Assim como o conceito de componentes, o termo framework de software en-

contra diversas definies na literatura. Dentre elas, a mais comumente citada


a de Johnson and Foote [1988]: um framework um conjunto de classes que incorpora um projeto (design) abstrato de solues para uma famlia de problemas

3.5. FRAMEWORKS

21

relacionados. Em outras palavras, um framework uma arquitetura de software


semi-completa, reutilizvel, e que pode ser adaptada para produzir aplicaes personalizadas dentro de um domnio especfico.
Os frameworks so principalmente uma forma de reuso de projeto, alm de
cdigo [Johnson, 1997b]. O projeto de um sistema normalmente descrito em termos
de componentes, de como estes interagem e colaboram entre si, quais as responsabilidades de cada um, a lgica de controle e o fluxo de informao. Um framework define
esses elementos de tal forma que no apenas componentes individuais so utilizados,
mas toda a estrutura de relacionamentos, decises de projeto e padres identificados
em um domnio de aplicao.
De acordo com Fayad and Schmidt [1997], os principais benefcios dos frameworks orientados a objetos tem origem na modularidade, reusabilidade e extensibilidade que eles provem aos desenvolvedores, como descrito a seguir:
Modularidade: Frameworks aumentam a modularidade por meio do encapsulamento
de implementaes volteis atrs de interfaces estveis. A modularidade de um
framework ajuda a aprimorar a qualidade do software devido ao impacto localizado de mudanas no projeto ou na implementao. Isso reduz o esforo
necessrio para a compreenso e manuteno do software existente.
Reusabilidade: As interfaces estveis oferecidas pelos frameworks aumentam a reusabilidade atravs da definio de componentes genricos que podem ser reaplicados
para criar novas aplicaes. Essa reusabilidade se aproveita do conhecimento de
domnio e do esforo empregado por desenvolvedores experientes na construo
do framework, de modo a evitar recriar e revalidar solues para requisitos comuns de aplicaes e desafios de projeto que sejam recorrentes.
Extensibilidade: Um framework aumenta a extensibilidade por meio de ganchos
(hooks) e gabaritos (templates), que consistem de pontos adaptveis da arquitetura providos explicitamente e que permitem s aplicaes especializarem suas
classes e agregarem novas caractersticas e servios. Os ganchos podem ser
vistos como espaos reservados ou pontos flexveis nos quais as aplicaes
acoplam seus comportamentos particulares ao framework, sendo normalmente
oferecidos como mtodos abstratos sem implementao. Um gabarito, por sua
vez, define um comportamento abstrato ou um fluxo genrico de controle que
implementa a lgica de interao dos objetos internos do framework e realiza
chamadas a mtodos-gancho [Pree, 1999].
Uma das caractersticas dos frameworks a chamada inverso de controle
[Johnson, 1997a]. Tradicionalmente, um desenvolvedor usa uma biblioteca ou com-

22

CAPTULO 3. CONCEITOS FUNDAMENTAIS: REUSO DE SOFTWARE

ponente escrevendo um programa que chama as suas funes ou mtodos quando


necessrio. O desenvolvedor responsvel pela estrutura e pelo controle de fluxo do
programa, decidindo quando e como utilizar tais recursos. Em um framework, a estrutura principal reutilizada e o cdigo do programa plugado nela, sendo que as
classes definidas pelo desenvolvedor que so chamadas pelo framework. O framework que determina a estrutura e o fluxo de controle do programa, se comunicando
por meio de mensagens enviadas a classes abstratas e interfaces num processo conhecido como callback. Tais classes e interfaces so especializadas e implementadas,
provendo o comportamento especfico da aplicao. Assim, quando um evento ocorre,
o framework chama um mtodo pr-definido em um componente registrado como ouvinte (listener), que por sua vez realiza o processamento definido pela aplicao em
resposta ao evento. A Figura 3.1 ilustra essa diferena no fluxo de controle.

Figura 3.1: Inverso de controle: diferena entre bibliotecas, APIs e frameworks (adaptado
de [Bachmann et al., 2000]).

Os frameworks podem ser classificados de acordo com a sua forma de reuso


em caixa-branca ou caixa-preta [Fayad and Schmidt, 1997]. Nos frameworks caixabranca (white-box) as aplicaes recorrem a tcnicas como herana e ligao dinmica
para estender o framework. Assim, as funcionalidades so customizadas especializandose classes e sobrecarregando-se mtodos-gancho pr-definidos. Essa abordagem requer dos desenvolvedores de aplicao maior conhecimento sobre a estrutura do
framework e detalhes de seu funcionamento interno, tornando-os, portanto, mais
difceis de utilizar. Nos frameworks caixa-preta (black-box), o reuso ocorre por meio
de composio. As funcionalidades so configuradas e customizadas por meio de componentes parametrizveis e pela integrao destes s aplicaes. Como resultado, os
frameworks caixa-preta so mais fceis de utilizar que os frameworks caixa-branca,
porm mais difceis de construir, j que os desenvolvedores necessitam prever interfaces e ganchos que atinjam um conjunto mais amplo de casos de uso.

3.6. PATTERNS

23

A especializao de um framework ocorre em pontos pr-definidos denominados


hot-spots [Pree, 1999]. Estes pontos, tambm conhecidos como pontos-variveis,
representam as partes especficas das aplicaes cujo comportamento pode ser modificado ou adaptado e so considerados lugares ideais para a insero de ganchos.
Em contraste, os pontos-fixos (frozen spots) representam os aspectos comuns do
framework que so compartilhados pelas aplicaes, incluindo componentes bsicos
e o relacionamento entre eles. Eles so implementados por completo e usados sem
alterao em todas as instncias do framework [Froehlich et al., 1998].
O conceito de frameworks vem sendo utilizado h dcadas e nos mais diversos
domnios. Entretanto, os exemplos mais populares tm sua origem no domnio das
interfaces grficas de usurio. Frameworks como MacApp e X-windows, criados na
dcada de 80, tiveram um importante papel no desenvolvimento de interfaces para
os ambientes Macintosh e Unix, respectivamente. Posteriormente, o MFC (Microsoft
Foundation Classes), o JFC (Java Foundation Classes) surgiram para disponibilizar
esses recursos para plataformas PC. Atualmente, alguns frameworks bastante conhecidos so o Struts [Apache Software Foundation, 2000] e o JSF (Java Server Faces)
[Sun Microsystems, 2004], que implementam o padro MVC (Model-View-Controller)
para aplicaes Web desenvolvidas sob a plataforma JEE (Java Enterprise Edition).

3.6

Patterns
Frameworks esto intimamente ligados a outras tcnicas de reuso, tais como

padres (patterns). Os padres representam um conjunto de solues recorrentes


para problemas de projeto de software dentro de contextos especficos [Fayad and
Schmidt, 1997]. Padres e frameworks facilitam o reuso pela captura de estratgias
bem sucedidas de desenvolvimento. A principal diferena entre eles que os frameworks focam no reuso de projetos concretos, algoritmos e componentes codificados
em uma linguagem de programao particular, ao passo que os patterns tm seu foco
no reuso de projetos abstratos, modelos conceituais e micro-arquiteturas de software
independentes de implementaes especficas.
Nas ltimas dcadas, programadores e arquitetos de software experientes tm
contribudo para a criao de uma literatura que documente esses padres, de modo
a possibilitar no apenas o reuso de software em si, mas tambm o reuso de conhecimento. Assim, desenvolvedores com menos experincia podem se valer de solues
comprovadamente eficazes para resolver problemas conhecidos, causando um aumento de produtividade e na qualidade do produto final. De acordo com Schmidt and
Buschmann [2003], os padres podem ser classificados em trs tipos:

24

CAPTULO 3. CONCEITOS FUNDAMENTAIS: REUSO DE SOFTWARE

Padres de projeto: provem um esquema para refinar os elementos internos de


um software e o relacionamento entre eles, descrevendo uma estrutura comum
que resolva um problema genrico de projeto dentro de um contexto particular
[Gamma et al., 1995].
Padres arquiteturais: expressam a estrutura organizacional de um sistema de software como um todo, definindo um conjunto de sub-sistemas e guidelines para o
relacionamento entre eles, alm de especificar suas responsabilidades [Buschmann
et al., 1996].
Linguagens de padres: renem um conjunto de padres relacionados para definir
um vocabulrio comum sobre problemas de desenvolvimento de software e provem
um processo para a resoluo sistemtica desses problemas [Alexander et al.,
1977].
Dentre estes tipos, os mais comumente utilizados so os padres de projeto.
Um padro de projeto descrito essencialmente por meio das seguintes informaes
[Gamma et al., 1995]: um nome, que seja sugestivo e exprima a idia principal do
padro; um contexto, apontando as situaes mais freqentes nas quais o problema
costuma ocorrer; o problema que ele resolve, indicando quando o padro deve ser
aplicado; e uma soluo, descrevendo os elementos que compem o projeto, seus
relacionamentos e responsabilidades.
Um exemplo de padro de projeto o padro MVC (do Ingls, Model-ViewController). Esse padro enderea o problema da construo de interfaces para interao com o usurio [Froehlich et al., 1997]. Normalmente tais interfaces so alvos
de constantes modificaes, de acordo com a adio de novas funcionalidades ao
software, e sofrem com a necessidade de prover diferentes mtodos de acesso (por
exemplo, atravs de um boto, teclado, menu, etc.) e formas de visualizao (por
exemplo, atravs de uma janela de aplicao, pgina Web, arquivo, etc.).
Esses problemas sugeriram a criao do padro MVC, que desvincula a interface da aplicao de suas funcionalidades separando-a em trs reas: processamento
(modelo), sada (viso) e entrada (controlador). O modelo encapsula os dados e as
funcionalidades da aplicao em si; a viso apresenta os dados manipulados pelo
modelo, sendo que mltiplas vises podem ser acopladas a um nico modelo para
apresentar os dados de diferentes maneiras; e o controlador, que recebe a entrada
do usurio e invoca mtodos do modelo para executar a tarefa desejada. Cada viso
tem seu prprio controlador e os mesmos podem ser alterados para prover diferentes
mtodos de entrada.
Os padres de projeto alm de fornecerem exemplos a serem seguidos e modelos que podem ser adaptados a aplicaes com diferentes necessidades, garantem a

3.7. CONSIDERAES FINAIS

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

de se aprimorar a produtividade e a qualidade do software. Nos dias atuais, em que


o desenvolvimento de novos produtos orientado por fatores como tempo e custos,
a reutilizao de modelos bem definidos, padres maduros e implementaes largamente testadas, pode ser uma condio determinante para o sucesso ou o fracasso
de um produto de software [Schmidt and Buschmann, 2003].
Inicialmente, a maioria dos softwares focava no reuso de cdigo apenas, reaproveitando partes de programas existentes ou criando bibliotecas para um escopo
genrico de aplicaes. Com a disseminao das tcnicas de programao orientada
a objetos na dcada de 90, uma nova abordagem foi concebida. Sistemas complexos e
de grande porte passaram a ser construdos a partir de infra-estruturas semi-prontas,
como componentes e frameworks. Os componentes enfatizam a modularidade e o
baixo acoplamento s aplicaes, atendendo a um requisito especfico e podendo ser
substitudos por outros que realizem as mesmas tarefas. J os frameworks fornecem
uma arquitetura pr-definida em que a aplicao deve se adaptar, provendo funcionalidades mais genricas, porm dentro de um determinado domnio.
Assim, baseando-se nos conceitos aqui apresentados, foi proposta uma arquitetura de um framework multimodal que integrasse as modalidades de voz e escrita,
como mencionado no Captulo 1. O resultado dessa arquitetura, detalhes de projeto
e implementao so apresentados no prximo captulo.

26

CAPTULO 3. CONCEITOS FUNDAMENTAIS: REUSO DE SOFTWARE

CAPTULO

Infraestruturas de Escrita e Voz:


JInk API e JSAPI

4.1

Consideraes Iniciais
Este captulo prov informaes detalhadas sobre as infraestruturas utilizadas

na implementao do framework multimodal proposto. A Java Ink uma API de


reconhecimento de escrita desenvolvida pelo aluno e que foi estendida para se adequar
aos requisitos desse projeto. Grande parte do esforo de implementao se deu na
modificao dessa API e na sua integrao ao framework. A JSAPI, por sua vez,
uma interface definida pela Sun Microsystems [1998c] que possibilita a construo
de interfaces de voz em aplicaes Java. Ela foi integrada ao framework como parte
do mdulo de voz, e sua arquitetura discutida neste captulo.

4.2

Modalidade de Escrita
Com a popularizao de dispositivos de computao mvel, tais como Tablet

PCs, PDAs e smartphones, as interfaces baseadas em entrada por caneta esto se


tornando cada vez mais comuns. Conforme o uso dessa modalidade se expande,
as aplicaes passam a no apenas oferecer funcionalidades bsicas de agenda e
telefone, como tambm programas de e-mail, editores de textos e acesso a WorldWide Web (WWW). Para suportar essas atividades, alm de um mini-teclado (que pode
27

28

CAPTULO 4. INFRAESTRUTURAS DE ESCRITA E VOZ: JINK API E JSAPI

ser fsico ou projetado em uma tela sensvel ao toque), normalmente os aparelhos


provem algum sistema para reconhecimento de escrita manual.
O reconhecimento de escrita, isto , a transcrio das entradas manuais em caracteres manipulveis por computadores (tais como o ASCII), um tema em pesquisa
a mais de trinta anos. Diferentes abordagens tm sido propostas na tentativa de se
obter sistemas de reconhecimento mais precisos, as quais incluem desde o uso de
modelos matemtico-estatsticos, mtodos baseados em anlise estrutural, at tcnicas envolvendo inteligncia artificial [Plamondon and Srihari, 2000].
Basicamente, o reconhecimento de caracteres pode ser classificado em dois
tipos: off-line e on-line. O reconhecimento off-line foca no processamento de imagens previamente obtidas, nas quais so analisadas as disposies e nveis de cores
dos pixels, sem levar em conta informaes de tempo ou de direo de escrita dos
traos. J no reconhecimento on-line, o processamento ocorre durante a escrita,
sendo fornecida a seqncia exata dos pontos que compem os traos, possibilitando
assim calcular sua direo.
Algumas estratgias so utilizadas para facilitar o processo de reconhecimento,
como a demarcao de reas de escrita, a definio de conjuntos de caracteres permitidos ou a restrio da maneira como os mesmo devem ser escritos. Em alguns casos os reconhecedores so especficos para algum domnio, como caracteres msica
[Forsberg et al., 1998] ou associados ao projeto de interfaces [Lin et al., 2000].
Atualmente, existem sistemas comerciais que fazem uso de alfabetos prprios,
como o Graffiti [Palm, 1997], que possui um conjunto de caracteres similar ao alfabeto
Romano. Embora possua taxa de preciso acima de 99%, esse sistema restringe a
escrita do usurio a um estilo pr-definido, aumentando a curva de aprendizado e
tornando a interao com o dispositivo menos natural.

4.3

Java Ink API


Durante sua pesquisa de iniciao cientfica realizada no perodo de Julho de

2002 a Dezembro de 2003, o autor desta dissertao esteve investigando o problema


do reconhecimento on-line de caracteres de escrita manual. Esse trabalho resultou
no desenvolvimento de um servio denominado Java Ink (JInk), que consistia de um
conjunto de classes Java que implementavam as funcionalidades bsicas de um reconhecedor de caracteres [Incio Jr., 2003].
Em vista da indisponibilidade de um software de reconhecimento no-proprietrio, de cdigo aberto e que se adequasse aos requisitos funcionais do framework
multimodal aqui proposto, optou-se por integrar o servio JInk ao projeto. Outro

4.3. JAVA INK API

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

mtodo de reconhecimento utilizado pela JInk API, que baseia-se no algoritmo de


Casamento Estrutural Flexvel [Chan and Yeung, 1999], bem como fornecer uma viso
da complexidade de sua implementao.
Esse mtodo foi escolhido aps a realizao de uma ampla reviso bibliogrfica,
onde foram analisadas caractersticas como: eficincia e preciso no reconhecimento,
dificuldade de implementao e capacidade de extenso. Contudo, necessrio ressaltar
que o foco deste trabalho no est na avaliao ou comparao de tcnicas de reconhecimento, mas sim na disponibilizao de uma infra-estrutura bsica para a construo de interfaces multimodais envolvendo interao por escrita manual.
O mtodo de reconhecimento proposto por Chan and Yeung [1999] dividido em
trs estgios principais: Extrao e Reconstruo da Estrutura, Casamento Estrutural Flexvel e Ps-Processamento, como representado na Figura 4.1.
Basicamente, o que existe aps a escrita do caractere apenas uma seqncia
de pontos, representados por suas respectivas coordenadas. O primeiro passo identificar as primitivas que compem cada caractere, atravs da extrao da estrutura,
sendo que neste estgio algumas formas de reconstruo podem ser empregadas.

30

CAPTULO 4. INFRAESTRUTURAS DE ESCRITA E VOZ: JINK API E JSAPI

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

4.3. JAVA INK API

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

CAPTULO 4. INFRAESTRUTURAS DE ESCRITA E VOZ: JINK API E JSAPI

teste de casamento, no qual o caractere apresentado ser comparado com os modelos


pr-definidos.
Os modelos devem ser distintos, isto , no podem possuir o mesmo nmero de
primitivas com os mesmos tipos e direes. Diferentes classes de caracteres tambm
podem ter diferentes nmeros de modelos, dependendo da complexidade da estrutura.
Na implementao da JInk API so fornecidos mtodos que permitem que cada
usurio especifique seu prprio conjunto de modelos, melhorando a preciso do algoritmo pela personalizao do reconhecedor. Em alguns casos possvel tambm fazer
combinaes com os traos dos caracteres e reduzir o nmero de modelos.

4.3.4

Extrao e Reconstruo da Estrutura


Neste estgio, as primitivas estruturais que compem o caractere so identifi-

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:

|d(si ) d(si+1 )| = 1, manter os segmentos e o trao;


|d(si ) d(si+1 )| > 1, manter os segmentos e quebrar o trao;

|d(si ) d(si+1 )| < 1, unir os segmentos e manter o trao.

4.3. JAVA INK API

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

CAPTULO 4. INFRAESTRUTURAS DE ESCRITA E VOZ: JINK API E JSAPI


Primitiva 1:
{T1 , D1 }
{Linha, D1 }

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.

do primeiro segmento da segunda primitiva. Comparando o TipoUniao obtido com


os tipos de ambas as curvas possvel determinar se essas devem ou no ser combinadas.

4.3.5

Casamento Estrutural Flexvel


Aps extrair a estrutura final do caractere possvel ento compar-lo ao con-

junto de modelos. Entretanto, devido aos diferentes estilos e variabilidade natural


que ocorre durante a escrita, a probabilidade do caractere apresentado ser exatamente igual algum dos modelos pr-fornecidos baixa. O mtodo de Casamento Estrutural Flexvel tenta resolver esse problema executando uma srie de deformaes
na estrutura do caractere, por meio de alteraes na sua forma e direo, garantindo
assim robustez e eficcia no reconhecimento.
O algoritmo em alto nvel do mtodo de Casamento Estrutural Flexvel desenvolvido por Chan and Yeung [1999], corresponde a:
Algorithm 1 Casamento Estrutural Flexvel
1: function CEF(C)
2:
Carregar o conjunto de modelos em M ;
3:
Extrair a estrutura E do caractere C;
4:
Inicializar o nvel de deformao N 1;
5:
while N 4 do
Tenta os quatro nveis de deformao
6:
Obter a estrutura deformada D def ormeEstrutura(N, E);
7:
Procurar o modelo equivalente Q testeCasamento(C, M );
8:
if Q = N ulo then
9:
return Q;
10:
else
11:
N = N + 1;
12:
end if
13:
end while
14:
return N ulo;
No foi encontrada nenhuma equivalncia
15: end function

4.3. JAVA INK API

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-

quivalncia direta com os modelos pr-definidos podem ser reconhecidos. Entretanto,


ao mesmo tempo que o mtodo diminui a taxa de rejeio ele pode gerar muitos
resultados equivocados, j que a flexibilidade dada ao caractere cada vez maior
conforme aumenta o nvel de deformao.

36

CAPTULO 4. INFRAESTRUTURAS DE ESCRITA E VOZ: JINK API E JSAPI

Figura 4.3: Verses deformadas do caractere T resultantes de alterao no tipo (a) e na


direo (b) das primitivas (adaptado de [Chan and Yeung, 1999]).

Assim, torna-se necessrio executar passos adicionais para verificar a adequao


do resultado e desfazer ambigidades. De modo geral, h dois tipos principais de ambigidades:
Caracteres distintos representados pela mesma estrutura. Por exemplo, os caracteres L e T podem ser classificados com a mesma estrutura {{Linha, 6},
{Linha, 0}}. Para resolver essa ambigidade, deve-se considerar a posio
relativa dos traos vertical e horizontal: se o trao horizontal estiver acima do
ponto mdio do trao vertical, este classificado como T; caso contrrio,
classificado como um L.
Similaridades entre caracteres. Devido ao fato de alguns caracteres serem muito
parecidos, resultados equivocados so bastante comuns. Como exemplo, temos
o caso de caracteres como 1 e 7, 9 e g, u e y, etc. O algoritmo que
possibilita distinguir u de y por exemplo, que so definidos pelas primitivas {{CurvaAcima, 0}, {Linha, 6}}, resolve essa ambigidade atravs da
comparao da altura das duas primitivas.
A desvantagem do ps-processamento que para cada grupo de caracteres
suscetvel erro de reconhecimento necessrio escrever uma rotina especfica para
trat-lo. Na verso atual da JInk API a operao de ps-processamento definida por
meio de uma interface, na qual a aplicao que a implementa cuida de executar sua
verificao de erros aps receber o callback. Para o caso de reconhecimento de letras
e dgitos, fornecida uma implementao default.
Em uma avaliao realizada por Chan and Yeung [1999], o mtodo foi testado com dados obtidos de 150 usurios, e as taxas de reconhecimento foram de
98.60% para dgitos, 98.49% para letras maisculas e 97.44% para letras minsculas. Quando os casos de rejeio foram excludos do clculo, as taxas subiram para
99.93%, 99.53% e 98.07%, respectivamente.

4.3. JAVA INK API

4.3.7

37

Especificao de Requisitos
Durante a fase de reformulao do servio de reconhecimento JInk, foi definido

que a API deveria atender aos seguintes requisitos:


1. Deve suportar o reconhecimento on-line de caracteres de escrita manual nocursiva (os caracteres devem estar separados);
2. Deve permitir a extenso dos tipos de caracteres suportados. Ex: um programador pode definir os tipos Gestos, Formas Geomtricas, Alfabeto Japons
Hiragana, Letras Gregas, etc.;
3. Deve possibilitar que o programador especifique o conjunto de smbolos para
cada tipo de caracteres suportado. Ex: para o tipo Letras Gregas, os smbolos
podem ser , , , , , etc.;
4. Deve permitir que cada usurio treine seu prprio conjunto de modelos de caracteres, de forma a aumentar a preciso do reconhecedor;
5. Deve prover interfaces de programao responsveis por notificar a ocorrncia
de eventos relacionados ao reconhecimento;
6. Deve possibilitar que o mtodo de reconhecimento utilizado, baseado no algoritmo de Casamento Estrutural Flexvel [Chan and Yeung, 1999], tenha seus parmetros e restries configurveis;
7. Deve suportar diferentes formas de unificao/segmentao dos caracteres. Ex:
algumas aplicaes exigem que os traos sejam agrupados de acordo com sua
posio relativa, enquanto outras demandam que esse processo seja feito de
acordo com o tempo de escrita de cada trao;
8. O reconhecimento deve poder ser executado de maneira concorrente aplicao,
como um processo independente;
9. Deve suportar a manipulao de arquivos XML com informao de tipos, smbolos, modelos e outras configuraes do usurio;
10. A configurao da API deve poder ser feita via uma interface grfica, por meio de
um painel de controle que efetue a gerao automtica dos arquivos XML;

4.3.8

Modelagem e Implementao
A estrutura da API composta por trs pacotes: core, util e demo. O primeiro,

core, contm as classes e interfaces correspondentes ao ncleo da API, responsveis

38

CAPTULO 4. INFRAESTRUTURAS DE ESCRITA E VOZ: JINK API E JSAPI

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,

4.4. JAVA SPEECH API

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

Java Speech API


A Java Speech API, desenvolvida pela Sun Microsystems [1998c] em cooperao

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

CAPTULO 4. INFRAESTRUTURAS DE ESCRITA E VOZ: JINK API E JSAPI

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).

A Java Speech API (JSAPI) dividida em dois ncleos: o reconhecimento, que


permite processar a entrada de voz do usurio e determinar o que foi o falado; e a
sntese, que permite que uma sada de voz seja sintetizada a partir do texto gerado
por uma aplicao ou usurio. O processamento da voz propriamente dito no
realizado pelo software Java, uma vez que a API constitui-se apenas de uma especificao padro que possibilita s aplicaes acessarem os recursos de reconhecedores
e sintetizadores especficos (engines).
O reconhecimento de voz realizado com base em gramticas, definidas pelo
programador durante a fase de implementao. Elas so classificadas em dois tipos:
Gramtica de Regras: Faz uso de regras pr-estabelecidas, que especificam o que
pode ser dito, restringindo o conjunto de possveis entradas por parte do usurio.
Por meio de um arquivo texto escrito em um formato especial de definio de
gramticas, o JSGF (Java Speech Grammar Format) [Sun Microsystems, 1998b],

4.4. JAVA SPEECH API

41

Figura 4.5: Interfaces do Painel de Configurao ( esquerda) e do Painel de Controle (


direita) da Java Ink API.

so determinadas exatamente todas as possveis palavras ou frases que podem


ser pronunciadas. Cada regra pode ser associada a um evento especfico, que
ser gerado toda vez que uma ocorrncia da regra for identificada. Uma explicao mais detalhada sobre a JSGF apresentada na Seo 4.4.2.
Gramtica de Ditado: utilizada no reconhecimento de discurso contnuo, em que
o usurio pronuncia as palavras em seqncia, porm sem uma ordem prdeterminada. Este tipo de gramtica mais complexo, devido ao maior tamanho
do vocabulrio e ausncia de regras, exigindo um processamento computacional mais elaborado. De modo a aumentar a preciso deste tipo de gramtica
possvel utilizar gramticas voltadas para reas especficas de conhecimento,
tais como direito e medicina, que sero usadas para o reconhecimento de palavras
tcnicas ou comuns em um determinado domnio.
A sntese de voz realizada com base em uma linguagem de marcao denominada JSML (Java Speech Markup Language) [Sun Microsystems, 1999], que segue o
padro XML. Desse modo, palavras ou mesmo frases inteiras podem ser facilmente
sintetizadas pela transformao de cadeias de caracteres em voz digitalizada (text-tospeech). A JSML tambm especifica o modo como o som dever ser gerado, permitindo
alterar propriedades como tom de voz, ritmo e volume. Esses e outros recursos sero
explicados mais detalhadamente na Seo 4.4.3.

4.4.1

Arquitetura
A arquitetura bsica de uma aplicao desenvolvida sobre a JSAPI composta

por vrios itens, estruturados em camadas. Conforme apresentado na Figura 4.6, a

42

CAPTULO 4. INFRAESTRUTURAS DE ESCRITA E VOZ: JINK API E JSAPI

aplicao Java, em um nvel mais alto, utiliza os recursos de reconhecimento e/ou


sntese de voz de uma engine atravs de uma implementao da API. Essa implementao funciona como um driver, cuidando das peculiaridades de acesso de cada
engine que ela se prope a tornar compatvel, de modo que as suas funcionalidades
sejam providas seguindo as especificaes e padres descritos pela API.

Figura 4.6: Arquitetura bsica de uma aplicao Java utilizando a JSAPI.

Em um nvel mais baixo, a engine acessa os recursos de hardware da mquina,


por meio do sistema operacional. Assim, os eventos de E/S como o udio captado
pelo microfone ou emitido pelos auto-falantes so tratados pelo sistema operacional e
re-direcionados engine ou ao hardware de som, de acordo com a direo do fluxo.
Engines
A arquitetura da JSAPI baseada em um conjunto de classes abstratas e interfaces que representam a viso do programador da engine, porm, sem fazer referncia a um produto especfico. Essa engine pode ser tanto uma soluo implementada
em hardware quanto em software (ou um hbrido das duas), executando localmente
ou em um servidor. Ela tambm pode ser escrita em Java ou em qualquer outra
linguagem, desde que seja possvel o acesso s funes da engine a partir de um
programa Java.
Diferentes implementaes de engines possuem diferentes funcionalidades. Algumas possuem capacidade para assimilar padres de fala, utilizar dicionrios para
contextos especficos ou fazer uso de diferentes tipos de sintetizadores, enquanto outras no implementam nenhuma dessas funcionalidades. Alguns exemplos de engines
mais conhecidos so os softwares ViaVoice [IBM, 1998b], Microsoft Agent [Microsoft,
1999] e o Sphinx, desenvolvido pela Carnegie Mellon University [2004].

4.4. JAVA SPEECH API

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

JSGF - Java Speech Grammar Format


Os sistemas de reconhecimento provem aos computadores a habilidade para

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

CAPTULO 4. INFRAESTRUTURAS DE ESCRITA E VOZ: JINK API E JSAPI


Basicamente, uma gramtica composta por um conjunto de regras que juntas

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

JSML - Java Speech Markup Language


Um sintetizador de voz prov ao computador a habilidade para reproduzir a voz

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

4.5. CONSIDERAES FINAIS

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

CAPTULO 4. INFRAESTRUTURAS DE ESCRITA E VOZ: JINK API E JSAPI


Elementos
PARA

Descrio
Especifica que o texto contido um
pargrafo.

SENT

Especifica que o texto contido uma


sentena.
Especifica como o texto deve ser pronunciado.
Especifica que o texto deve ser pronunciado com nfase.
Especifica uma parada durante a fala.
Especifica propriedades da fala, tais
como volume, ritmo, freqncia.

SAYAS
EMP
BREAK
PROS

MARKER
ENGINE

Requisita uma notificao quando a


fala alcana este marcador.
Fornece instrues para um sintetizador especfico.

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>

Tabela 4.2: Conjunto de elementos da JSML.

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

CAPTULO 5. O PROJETO DESENVOLVIDO: JMIS FRAMEWORK

informao incompleta provida pelo usurio.


Os sinais de entrada provenientes das vrias modalidades podem ser combinados em diversos nveis, sendo que a literatura aponta duas abordagens principais,
conhecidas como fuso em nvel caracterstico (feature level) e fuso em nvel semntico (semantic level) [Corradini et al., 2003]:
Fuso em Nvel Caracterstico: Tambm conhecido como fuso cedo, esse tipo de
integrao geralmente utilizado para modalidades de entrada fortemente acopladas ou sincronizadas, tais como fala e movimento dos lbios. Nesse processo,
o reconhecimento de uma modalidade influencia o curso do reconhecimento do
outro. A fuso cedo no recomendada para modalidades que diferem substancialmente no contedo de informao e tempo de entrada, como voz e gestos por
caneta, alm de requerer uma grande quantidade de dados para treinamento e
possuir um alto custo computacional.
Fuso em Nvel Semntico: Essa segunda abordagem, tambm conhecida como fuso tarde, mais aplicada para modalidades pouco acopladas e que diferem na
sua escala de tempo (assncronas). As informaes provenientes dos reconhecedores individuais so normalmente representadas por estruturas de caractersticas na forma de pares atributo-valor e combinadas depois. Geralmente as entradas possuem timestamps que so integrados em conformidade com funes
de vizinhana temporal e algoritmos de casamento recursivo de estruturas de
caractersticas.
De acordo com Corradini et al. [2003], a fuso em nvel semntico oferece uma
srie de vantagens sobre a fuso em nvel caracterstico. Primeiramente, os reconhecedores para cada modalidade podem ser treinados separadamente e integrados
sem necessidade de serem retreinados no caso da insero de uma nova modalidade.
Alm disso, produtos comerciais (off-the-shelf ) podem ser utilizados para modalidades
padro como, por exemplo, reconhecimento de voz. Uma vantagem adicional a simplicidade, uma vez que a integrao no adiciona nenhum parmetro extra alm dos
utilizados pelos reconhecedores de cada modalidade permitindo uma certa generalizao sobre o nmero e os tipos de modalidades envolvidas. O framework multimodal
implementado neste trabalho utiliza a abordagem da fuso em nvel semntico.

5.3

Tcnicas de Integrao Multimodal Utilizadas


Duas tcnicas foram utilizadas na implementao do JMIS Framework: a In-

tegrao Multimodal baseada em Unificao [Johnston et al., 1997] e a Gramtica

5.3. TCNICAS DE INTEGRAO MULTIMODAL UTILIZADAS

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

Integrao Multimodal baseada em Unificao


Uma das tcnicas de integrao multimodal mais citadas na literatura a de-

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 :

palavras : criar trincheira aqui

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

CAPTULO 5. O PROJETO DESENVOLVIDO: JMIS FRAMEWORK

coordenadas : [(154, 171), (236, 389)]

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:

coordenadas : [(154, 171), (236, 389)]

objeto :

cor :
vermelho

probabilidade : 0.76

acao :
criar_trincheira

linha

resultado

A integrao ento guiada pela definio de restries que especifiquem quais


tipos de entrada so complementares e cujos timestamps das estruturas se sobreponham ou estejam dentro de um intervalo de tempo determinado. Nesse caso, a
frase dita complementada por um gesto que identifica a localizao do objeto a ser
criado. Para um dado instante no tempo, todas as possveis combinaes de voz e
gestos so analisadas (utilizando a consistncia de tipos) e a estrutura de mais alta
probabilidade selecionada pelo algoritmo.

5.3.2

Gramtica Multimodal baseada em Unificao


Embora a tcnica descrita na seo anterior seja uma soluo eficiente para

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

5.3. TCNICAS DE INTEGRAO MULTIMODAL UTILIZADAS

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 )

Nesse esquema, a caracterstica restries indica uma srie de condies que


devem ser satisfeitas para que a regra seja aplicada. A unificao de duas bordas
candidatas envolve compar-las com as sub-regras dtr1 e dtr2 ; se as bordas combinam com as sub-regras, ento as restries so checadas. Por fim, se todas restries
so satisfeitas, uma nova borda lxica lhs criada. As regras so indexadas internamente por um atributo categoria para evitar comparaes desnecessrias, s sendo
processadas se a entrada possuir a mesma categoria.

52

CAPTULO 5. O PROJETO DESENVOLVIDO: JMIS FRAMEWORK


As restries determinam relacionamentos entre as bordas lxicas, podendo in-

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

modalidades. O aspecto declarativo da gramtica tambm facilita a modificao do


conjunto de regras e a prototipao rpida de sistemas multimodais [Johnston, 1998].

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

Framework tambm deve objetivar as seguintes caractersticas:


Reusvel: O framework deve ser suficientemente genrico para suportar a sua reutilizao em diferentes tipos de aplicaes. Alm disso, ele deve ser de fcil
configurao e possibilitar sua personalizao pelo prprio usurio, por meio de
interfaces grficas e arquivos de propriedades.
Extensvel: O framework deve possuir uma arquitetura extensvel, permitindo que
suas classes sejam especializadas, estendidas e customizadas para suportar
aplicaes com diferentes caractersticas e necessidades.
Adaptvel: O framework deve exigir mnima modificao no cdigo existente e ser
de fcil utilizao. A implementao dependente de domnio deve poder ser feita
separadamente, por meio de classes abstratas, interfaces e mecanismos de tratamento de eventos.
Modular: O framework deve ser estruturado sob uma arquitetura modular, com suas
classes organizadas de maneira lgica em pacotes, possuindo um baixo acoplamento entre si e um alto grau de coeso.
Eficiente: Por se tratar de um framework para interao com usurio, espera-se
que o mesmo seja eficiente, tanto em termos de desempenho como de preciso
dos sistemas de reconhecimento e de integrao de modalidades. Alm disso, o
framework deve executar de maneira transparente, realizando o mnimo possvel
de intromisses no ambiente do usurio.
Documentado: Alm da documentao interna existente em todo o cdigo e externa
no formato Javadoc, o framework deve fornecer informao de alto nvel sobre
sua instalao, utilizao e customizao. Deve ainda possuir cdigos-exemplo,
demonstrando a sua integrao diferentes aplicaes.

54

5.4.2

CAPTULO 5. O PROJETO DESENVOLVIDO: JMIS FRAMEWORK

Requisitos Funcionais
Foram identificados os seguintes requisitos funcionais para o JMIS Framework:

1. Deve suportar duas modalidades de entrada, por caneta e voz;


2. Os fluxos provenientes das modalidades de interao devem ser processados
por reconhecedores individuais. Neste caso, sero utilizadas as infra-estruturas
providas pelas APIs Java Ink e Java Speech, detalhadas no Captulo 4;
3. Deve permitir a utilizao independente de modalidades, quando da ausncia de
uma ou por escolha do usurio;
4. Deve suportar a fuso de modalidades em nvel semntico, isto , aps o processamento independente das entradas;
5. Deve possibilitar que o algoritmo de fuso de modalidades utilizado, baseado
mtodo proposto por Johnston [1998], tenha seus parmetros e restries configurveis;
6. Deve permitir a definio estruturas de caractersticas (empregadas pelo mtodo
de fuso para descrever as possveis combinaes de interao);
7. Deve possibilitar que tais estruturas sejam descritas por meio de uma interface
grfica e armazenadas em arquivos XML;
8. O framework deve ser independente de lngua, permitindo sua adaptao para
diferentes idiomas por meio de arquivos de propriedades;
9. Deve prover interfaces de programao responsveis por notificar a ocorrncia
de eventos relacionados identificao de estruturas;
10. Deve fornecer informao sobre tempo e localizao espacial (no caso da escrita)
das interaes, para processamento posterior pela aplicao.

5.5

Arquitetura
A arquitetura do JMIS Framework pode ser decomposta em quatro mdulos prin-

cipais: o Componente Multimodal, o Mdulo de Escrita (implementado pela Java Ink


API), o Mdulo de Voz (representado pela Java Speech API) e o Integrador Multimodal.
Esses quatro elementos operando em conjunto devem prover uma infraestrutura completa para a construo de aplicaes multimodais envolvendo escrita e voz.
Para facilitar a compreenso, os mdulos do framework multimodal foram distribudos em trs nveis, como ilustrado na Figura 5.2:

5.6. MODELAGEM E IMPLEMENTAO

55

Aplicao: No nvel de aplicao encontra-se o Componente Multimodal, responsvel


por instanciar os mdulos de escrita e voz, capturar as entradas e manipular as
respostas processadas pelo mdulo do nvel inferior.
Fuso Multimodal: No nvel intermedirio encontra-se o Integrador Multimodal, responsvel por unificar os fluxos de eventos gerados independentemente pelos
mdulos de escrita e voz, interpret-los e despachar a respectiva resposta para
o nvel acima.
Processamento Unimodal: No nvel mais baixo esto os mdulos de escrita e voz,
utilizadas como infraestrutura para o processamento individual das entradas.

Figura 5.2: Arquitetura simplifica do JMIS Framework, ilustrando os quatro mdulos


principais e seus respectivos nveis.

5.6

Modelagem e Implementao
A arquitetura definida para o JMIS Framework utiliza como base duas APIs para

o processamento individual das modalidades: a Java Ink API, implementada pelo


aluno no contexto de seu trabalho de iniciao cientfica e utilizada no reconhecimento de escrita; e a Java Speech API, desenvolvida pela Sun Microsystems [1998c]
e responsvel pelo reconhecimento e sntese de voz. Essas duas infra-estruturas so
detalhadas no Captulo 4.
Embora essas APIs forneam um conjunto bastante rico de classes e interfaces,
a converso dos resultados especficos de cada modalidade em uma representao comum para unificao um processo relativamente complicado. A integrao de componentes desenvolvidos separadamente, com propsitos e arquiteturas totalmente
distintos, uma tarefa complexa. Assim, grande parte do esforo de implementao

56

CAPTULO 5. O PROJETO DESENVOLVIDO: JMIS FRAMEWORK

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

como principal ponto de entrada a classe InkController. Ela implementa o padro


Controller e utilizada pelo Componente Multimodal para fazer a ponte entre a interface da aplicao cliente (viso) e a JInk API (modelo). Assim, cada evento do

5.6. MODELAGEM E IMPLEMENTAO

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

CAPTULO 5. O PROJETO DESENVOLVIDO: JMIS FRAMEWORK

Figura 5.3: Diagrama de classes UML para o mdulo de escrita.

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.

Assim como no mdulo de escrita, as classes adaptadoras so responsveis pela


obteno do resultado parcial do reconhecedor e sua converso em um elemento
Interaction. No mdulo de voz isso feito pelas classes SpeechRuleAdapter e
SpeechDictateAdapter, sendo a primeira utilizada para os eventos gerados pelas
gramticas de regras, e a segunda pelas gramticas de ditado. Os atributos da classe
Interaction so os mesmos, exceto pelo atributo content, que agora referencia um
objeto do tipo SpeechContent. Essa classe armazena apenas as palavras resultantes
do reconhecimento de voz realizado pela JSAPI, mas pode ser estendida para incluir novos dados. Assim, quando um evento Interaction disparado, a classe
MultimodalIntegrator notificada e inicia a tentativa de unificao. A Figura 5.4
apresenta a modelagem UML para o mdulo de voz.

5.6. MODELAGEM E IMPLEMENTAO

59

Figura 5.4: Diagrama de classes UML para o mdulo de voz.

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

CAPTULO 5. O PROJETO DESENVOLVIDO: JMIS FRAMEWORK

sibilitando a composio de regras e a definio de interaes baseadas em mais de


dois eventos de entrada. A IntegrationRule tambm possui um campo Interaction,
que indica o objeto resultante caso a regra seja satisfeita.
Partindo da gerao de um evento Interaction, proveniente do resultado de reconhecimento de alguma das modalidades, o MultimodalIntegrator recebe o objeto
e inicia o processamento. Essa classe implementa o padro Singleton, de forma que
em um dado momento, apenas uma instncia existe em memria.
Internamente, a MultimodalIntegrator implementa um conjunto de rvores
de regras, definidas pelo programador ou usurio. Conforme os eventos vo sendo
recebidos, as rvores de regras so percorridas e testadas, utilizando como critrio
os atributos e a categoria. Quando uma regra satisfeita, o objeto Interaction
nela contido disparado para os nveis superiores. Utilizando o mecanismo de backtracking, essa interao testada at o nvel mais alto: se a regra raiz satisfeita,
significa que todas as sub-composies necessrias de sub-regras tambm foram e
a unificao foi bem-sucedida. Caso contrrio, o objeto Interaction armazenado
na regra e permanece aguardando por outra interao, que pode unificar-se a ele ou
descart-lo.
Portanto, assim que um resultado de unificao gerado, o mesmo encapsulado num objeto MultimodalResult e enviado para todos os listeners da interface
MultimodalResultListener.

Entre eles o MultimodalComponent, que ir ento

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

Figura 5.5: Diagrama de classes para o mdulo relacionado ao Integrador Multimodal,


considerado o ncleo do sistema.

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

Avaliao: Aplicaes Construdas


Nesta seo so apresentadas algumas das aplicaes construdas utilizando a

infraestrutura multimodal desenvolvida.

62

CAPTULO 5. O PROJETO DESENVOLVIDO: JMIS FRAMEWORK

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.

5.9. AVALIAO: APLICAES CONSTRUDAS

63

Figura 5.6: Interface de configurao do JMIS Framework: gerao do conjunto de regras e


definio de propriedades.

Figura 5.7: Interfaces da SpeechBoard e dos mdulos de reconhecimento de voz e escrita.

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

CAPTULO 5. O PROJETO DESENVOLVIDO: JMIS FRAMEWORK

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.

5.10. CONSIDERAES FINAIS

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 5. O PROJETO DESENVOLVIDO: JMIS FRAMEWORK

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

CAPTULO 6. TRABALHOS RELACIONADOS

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

construda no incio da dcada de 80, com o ento chamado Put-That-There [Bolt,


1980]. Esse sistema possua uma interface que utilizava processamento de voz em
paralelo a um mecanismo de apontamento, que permitia aos usurios referenciar e
mover objetos 2D em uma tela de projeo. Por exemplo, o usurio podia dar um
comando para criar um quadrado azul l, com a localizao l indicada por um
cursor 2D na tela, controlado por meio de um touchpad. O processamento semntico
era baseado na fala do usurio, e o significado da referncia l era resolvido atravs
das coordenadas indicadas pelo cursor no momento da fala. A Figura 6.1 ilustra como
o sistema era utilizado.

Figura 6.1: Put-That-There [Bolt, 1980], um dos primeiros sistemas multimodais.

6.2. APLICAES MULTIMODAIS

6.2.2

69

QuickSet
As interfaces multimodais mais recentes deixaram de utilizar apenas a entrada

do mouse e so capazes de processar vrios fluxos paralelos de informao semntica.


O QuickSet [Cohen et al., 1997], por exemplo, um sistema multimodal que funciona
em tablets. Ele possui um conjunto de agentes de software em sua infraestrutura que
processam linguagem natural e reconhecem gestos baseados em caneta, localmente
ou de modo distribudo.
Com o QuickSet, o usurio pode interagir com um mapa apresentado no computador e controlar sistemas que executam externamente, incluindo sistemas de visualizao 3D. Utilizando dispositivos como joysticks, o usurio pode interagir com
esses ambientes virtuais, selecionando, alterando modos de viso e desenhando com
tinta digital. Na Figura 6.2 so apresentados exemplos de interao com o QuickSet.

Figura 6.2: QuickSet [Cohen et al., 1997]: Interao multimodal em diversos ambientes.

6.2.3

Field Medic Information System


Outro sistema baseado em interao com caneta e reconhecimento de voz

o Field Medic Information System, desenvolvido pela NCR em colaborao com o


Trauma Care Information Management System Consortium [Holzman, 1999]. O sistema permite que a equipe mdica (por exemplo, de uma ambulncia) registre os
cuidados a serem tomados com um paciente, como informaes sobre ferimentos,
avaliao do quadro clnico, tratamentos, perfil do paciente e prioridade de socorro.
Esta informao repassada automaticamente para o hospital, de modo que este
possa se preparar para receber o paciente. O sistema composto por dois componentes principais de hardware, o Field Medic Associate (FMA) e o Field Medic Coordinator (FMC).

70

CAPTULO 6. TRABALHOS RELACIONADOS


O FMA um computador flexvel, em forma de colete, que usa um conjunto de

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.

Figura 6.3: Interfaces multimodais do FMA e do FMC [Holzman, 1999].

6.2.4

Ford Model U Concept Car


Desenvolvido pela Ford e SpeechWorks, o carro-conceito Ford Model U integra ao

sistema de controle do interior do veculo uma interface multimodal baseada em fala


e tela sensvel a toque [Pieraccini et al., 2004]. Por meio dessa interface os ocupantes
do carro podem controlar funes como temperatura do ar-condicionado, telefone,
navegao, tocador de MP3 e personalizao.
Uma diferena da interface por voz do Ford Model U que, diferentemente das
interfaces baseadas em comandos com uma nica pronncia, onde o usurio obrigado a decor-los a partir de um manual de referncia, esse sistema utiliza um modo
mais flexvel de interao baseado em um gerenciador de dilogo. Desse modo, o

6.2. APLICAES MULTIMODAIS

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.

Figura 6.4: Carro-conceito Ford Model U: interior do veculo e interface grfica


com tela sensvel ao toque [Pieraccini et al., 2004].

6.2.5

Multi-Touch Interaction Wall


O Multi-Touch Interaction Wall [Han, 2005] consiste de uma tela de projeo

com uma superfcie capaz de detectar mltiplos pontos de contato simultaneamente.


Ele permite que vrios usurios interajam utilizando as mos, realizando gestos e
movendo objetos com simples toques dos dedos, o que proporciona um grande aumento na usabilidade e intuitividade do sistema.
A implementao da tela sensvel ao toque do Multi-Touch utiliza uma tcnica
denominada Frustrated Total Internal Reflection (FTIR), a qual se baseia na reflexo
de luz infra-vermelha dentro de uma superfcie plana. Quando um material toca a
superfcie, este causa um desvio na direo do feixe de luz, indicando a posio do
contato. O sistema ento processa as coordenadas e as envia a aplicao, que as
manipula de maneira independente.

72

CAPTULO 6. TRABALHOS RELACIONADOS


Foram desenvolvidas uma srie de aplicaes para demonstrar as possibilidades

de uso do Multi-Touch, como ilustrado na Figura 6.5. Em uma dessas aplicaes, o


usurio pode mover e organizar fotos utilizando as duas mos, aplicar efeitos de zoom
e rotacionar imagens com movimentos naturais e intuitivos. Em outra demonstrao,
um ambiente desktop simulado, com um teclado sendo plotado na tela e o usurio
movimentando objetos e janelas. Uma terceira aplicao permite a explorao geoespacial de ambientes: o usurio navega por um ambiente 3D, podendo exibir mapas
e correlacionar diferentes visualizaes de um mesmo local. Em uma demonstrao
de mecnica de fluidos, usurios podem interagir com fumaa e lava, manipulando-os
diretamente e gerando um efeito visual bastante impressionante. Por fim, uma aplicao de jogo apresentada, demonstrando a capacidade do sistema em acomodar
mltiplos usurios de maneira competitiva ou colaborativa.

Figura 6.5: Exemplos de aplicaes construdas utilizando a tecnologia do


Multi-Touch [Han, 2005].

6.3

Linguagens e Padres Multimodais


A at pouco tempo, a maioria dos sistemas multimodais era implementada uti-

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.

6.3. LINGUAGENS E PADRES MULTIMODAIS

73

No sentido de superar essas limitaes, o W3C e outros consrcios da indstria


tm trabalhado no desenvolvimento de linguagens e especificaes para as diferentes
funes de sistemas multimodais, de modo a oferecer uma infra-estrutura bsica de
alto-nvel para a construo desses sistemas. Essas linguagens incluem mecanismos de controle do fluxo de interao, gerenciamento de entrada/sada, interfaces
com infra-estruturas de baixo-nvel e padres que permitem a interoperabilidade dos
componentes multimodais. Algumas dessas linguagens so discutidas nesta seo.

6.3.1

W3C MMIF - Multimodal Interaction Framework


O W3C Multimodal Interaction Framework (MMIF) [W3C, 2002a] uma especi-

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.

Figura 6.6: Fluxo de informao entre os componentes do W3C Multimodal Interaction


Framework [W3C, 2002a].

74

CAPTULO 6. TRABALHOS RELACIONADOS

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

6.3. LINGUAGENS E PADRES MULTIMODAIS

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

InkML - Ink Markup Language


A Ink Markup Language (InkML) [W3C, 2003b] uma linguagem de representa-

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

CAPTULO 6. TRABALHOS RELACIONADOS

multimodais, a W3C Multimodal Interaction Framework [W3C, 2002a] (delhada na


Seo 6.3.1), e o objetivo dessa linguagem prover um formato comum para:
Facilitar a entrada e o processamento de escrita manual, gestos, rascunhos e
outras formas de anotao;
Armazenar traos de escrita manual para reconhecimento de escrita (incluindo
smbolos matemticos e de outras reas), assinaturas e gestos;
Possibilitar a transferncia de dados de tinta digital entre dispositivos e softwares.
Viso Geral
A popularizao dos dispositivos eletrnicos com entrada baseada em caneta
vem tornando cada vez mais necessrio o desenvolvimento e a adaptao de aplicaes que explorem esse modo de interao. Uma interface baseada em caneta
composta principalmente por uma tela ou outro tipo de superfcie sensvel que captura as coordenadas e os movimentos da caneta e os converte em tinta digital. Essa
tinta pode ser repassada para um software de reconhecimento que permite ao computador interpret-la e executar as aes apropriadas, ou simplesmente ser manipulada
como um objeto componente de um documento, incluindo texto em diferentes linguagens, desenhos e equaes, tal como ela foi inserida pelo usurio.
Atualmente, a indstria de hardware e software trata dados de tinta digital utilizando formatos proprietrios, que so normalmente restritos. H uma necessidade
de um formato comum pblico, que permita a captura, transmisso, processamento
e a apresentao desse tipo de dado, tornando-o portvel para diferentes dispositivos, aplicaes e vendedores. Na tentativa de superar essas limitaes foi proposta
a InkML, que suporta de modo independente de plataforma uma representao completa de dados de tinta digital. Um exemplo que, ao invs de permitir apenas a
captura da posio da caneta no tempo, ela detalha outras caractersticas da interao com o dispositivo, tais como a inclinao da caneta, ou a presso exercida pelo
usurio. Tais informaes so fundamentais para um reconhecimento de escrita mais
preciso.
Usos da InkML
O W3C presume que com o estabelecimento de um padro no-proprietrio para
a representao de dados de tinta digital um grande nmero de aplicaes ir surgir,
explorando as capacidades e convenincias da interao baseada em caneta. Dentre
essas, pode-se citar [W3C, 2003b]:

6.3. LINGUAGENS E PADRES MULTIMODAIS

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

CAPTULO 6. TRABALHOS RELACIONADOS

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.

Ele inclui um atributo

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

VoiceXML - Voice Extensible Markup Language


O VoiceXML (Voice Extensible Markup Language) [W3C, 2000b] um padro

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-

6.3. LINGUAGENS E PADRES MULTIMODAIS

79

dades como reconhecimento e sntese de voz, gravao e reproduo de udio digital


e identificao de tons telefnicos DTMF (Dual Tone Multy-Frequential).
O objetivo do VoiceXML tornar o desenvolvimento de aplicaes interativas baseadas em voz similar ao desenvolvimento para Web, facilitando a sua construo
e a transmisso de contedo para diferentes dispositivos. Dentre as vantagens do
VoiceXML, pode-se citar [W3C, 2000b]:
Libera os desenvolvedores de detalhes de baixo-nvel especficos de cada plataforma;
Separa o cdigo de interao com o usurio (arquivo VXML) da lgica da aplicao;
Minimiza a interao cliente/servidor por meio da especificao de mltiplas
interaes por documento;
Por se tratar de um padro, garante portabilidade de servio entre provedores de
plataformas, ferramentas e contedo.
Atualmente, o VoiceXML tem sido bastante explorado na rea de telefonia para a
implementao de sistemas baseados em IVR (Interactive Voice Response). Esses sistemas so utilizados por call centers, servios de help desk, bancos on-line e agncias
areas para a automatizao de tarefas como: solicitar dados dos clientes, responder
perguntas simples, executar mensagens pr-gravadas ou provenientes de TTS, etc.
Geralmente o sistema interage com o usurio atravs de DTMF, onde uma mensagem
tocada e a pessoa tecla o nmero correspondente opo desejada.

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

CAPTULO 6. TRABALHOS RELACIONADOS

Figura 6.7: Exemplo de uma arquitetura cliente-servidor utilizando VoiceXML.

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.

Estrutura de um Documento VoiceXML


Um documento VXML pode ser visto como uma mquina de estados finitos, no
qual o usurio sempre est em um estado do dilogo em um dado momento [W3C,
2000b]. De acordo com a interao do usurio e a seqncia lgica definida no documento, determinada a resposta do sistema.
Os componentes principais de um documento VXML so os dilogos, que podem
ser de dois tipos: formulrios e menus. Os formulrios so responsveis por apresentar e coletar dados para variveis, sendo que cada campo do formulrio pode ter uma
gramtica especificando as suas possveis entradas. J os menus oferecem opes
que de acordo com a escolha do usurio determinam a transio para o prximo
dilogo.

6.3. LINGUAGENS E PADRES MULTIMODAIS

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>

O elemento raiz de um documento VoiceXML o <vxml>. Este composto por


atributos como o namespace, a localizao e o nmero da verso atual da especificao. O elemento <form> representa um dilogo do tipo formulrio, que no exemplo
tem como itens um elemento <field> e um <block>. O elemento <field> especifica um campo de entrada de dados, onde requisitado ao usurio algum tipo de
informao. A tag <prompt> define a pergunta a ser feita para o usurio e a tag
<grammar> indica a gramtica associada ao campo. Por fim, o elemento <block> define uma seqncia de comandos a serem executados. Na listagem acima o comando
o <submit>, que envia o resultado do formulrio para a prxima pgina.
Um exemplo de interao construdo com o dilogo apresentado poderia ser o
seguinte:
Sistema: Voc gostaria de tomar gua, suco ou caf?
Usurio: Refrigerante.
Sistema: No entendi o que voc disse. (mensagem padro especfica da aplicao)
Sistema: Voc gostaria de tomar gua, suco ou caf?
Usurio: Suco.
Sistema: (continua o processamento no documento bebida2.jsp)

82

6.3.4

CAPTULO 6. TRABALHOS RELACIONADOS

SALT - Speech Application Language Tags


A Speech Application Language Tags (SALT) [SALT Forum, 2002], assim como

o VoiceXML, uma linguagem de marcao para interfaces baseadas em voz. Ela


consiste de um pequeno conjunto de elementos XML, com seus atributos, eventos e
mtodos associados, que permitem incorporar interfaces de voz a aplicaes e servios
Web. A linguagem SALT pode ser utilizada junto com HTML, XHTML, WML, SVG e
outros padres para a construo de interfaces de voz apenas (utilizadas em telefonia,
por exemplo) ou de interfaces multimodais.
A SALT possibilita que usurios interajam com uma aplicao multimodal de
vrias formas, seja por meio da fala, caneta, teclado ou mouse, e produzam sadas
de voz sintetizada, udio, vdeo, grficos ou texto. Cada um desses modos pode ser
utilizado independentemente ou paralelamente. Uma aplicao SALT feita para ser
executada tanto em browsers multimodais, como tambm em browsers visuais e voice
browsers: uma vez que o SALT apenas estende as linguagens de marcao padro ao
invs de alter-las, documentos SALT podem ser utilizados simplesmente omitindo-se
ou ignorando-se suas tags.
A especificao completa do padro SALT est sendo desenvolvida pelo SALT
Forum, uma iniciativa da indstria envolvendo grandes corporaes como Microsoft,
Intel, Cisco, Philips e Scansoft. O objetivo desse comit desenvolver uma linguagem
aberta, com uma API independente de plataforma e implementao, que torne possvel o acesso multimodal a informao atravs de telefones, tablet PCs, PDAs e outros
dispositivos mveis [Microsoft Corp., 2006].
Princpios de Projeto
A SALT baseia-se em padres existentes da indstria para a sntese de voz,
formatao de gramticas e gerao de resultados semnticos, o que faz com que
ela seja uma linguagem de marcao em nvel de aplicao usada para esconder
detalhes de baixo-nvel do sistema. De acordo com o SALT Forum [2006], a linguagem
foi projetada com os seguintes princpios:
Fcil Integrao Aplicaes Web: A execuo de uma aplicao SALT baseia-se no
modelo de execuo DOM das pginas Web, o que permite integr-lo facilmente
outras linguagens visuais de marcao. Isso tambm possibilita que desenvolvedores Web aproveitem seus conhecimentos para a construo de interfaces
de voz, uma vez que o modelo de programao do SALT praticamente o mesmo.
Separao da Interface de Voz da Lgica da Aplicao: Uma pgina SALT composta de trs pores de cdigo [Wang, 2002]: (1) uma seo de dados, corres-

6.3. LINGUAGENS E PADRES MULTIMODAIS

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

CAPTULO 6. TRABALHOS RELACIONADOS


ditado ou do tipo microfone aberto, onde os resultados do reconhecimento so
retornados em intervalos conforme o usurio pronuncia as palavras.
<grammar>: Especifica as frases, palavras e construes gramaticais que um
usurio pode falar. Para permitir a interoperabilidade das aplicaes SALT, o
objetivo que os browsers SALT suportem pelo menos a forma XML da SRGS
(Speech Recognition Grammar Specification) [W3C, 2000a].
<dtmf>: Usado em aplicaes de telefonia para especificar gramticas DTMF e
lidar com entradas de teclado e outros eventos. O elemento <dtmf> permite a
configurao de atributos como timeouts, seqncias vlidas de DTMF e deteco
de entradas que no constam na gramtica.
<record>: Captura e grava a voz do usurio. usado para especificar parmetros relacionados gravao e os resultados podem ser processados por meio de
tags como <bind> ou cdigo script.
<bind>: Integra as palavras e frases reconhecidas lgica da aplicao. Pode
ser usado para inspecionar os resultados do reconhecimento e copiar partes
consideradas relevantes para inser-las na pgina que hospeda o cdigo SALT.

6.3.5

X+V - XHTML + Voice


A XHTML + Voice (X+V) [W3C, 2002b] uma linguagem de marcao desen-

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].

6.3. LINGUAGENS E PADRES MULTIMODAIS

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.

Figura 6.8: Mltiplos formulrios VoiceXML embutidos em um documento XHTML. O


resultado uma aplicao multimodal X+V que executa em diferentes dispositivos.

Como todas as partes do X+V so conformantes com o XML, as marcaes de


voz podem ser inseridas de duas maneiras: no mesmo arquivo que o XHTML ou em
arquivos separados. Isso proporciona uma certa flexibilidade na construo de aplicaes, j que as marcaes visuais e de voz podem ser desenvolvidas separadamente
e combinadas depois [IBM Corp., 2003]. Outra vantagem a possibilidade de reutilizar os fragmentos de voz em mltiplas pginas XHTML. Um exemplo seria uma
aplicao para reserva de passagens areas, em que o usurio deve informar a cidade
de partida e o destino. Se o fragmento de voz est separado, a marcao correspondente a relao de cidades pode ser reaproveitada.

86

CAPTULO 6. TRABALHOS RELACIONADOS


A X+V particiona a linguagem VoiceXML em mltiplos mdulos, incluindo m-

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).

Em contraste, a X+V de-

fine todos os aspectos do ambiente de execuo atravs dos padres XHTML


e VoiceXML, garantindo a portabilidade das aplicaes entre dispositivos compatveis com esses padres.
3. A quantidade de marcaes outro diferencial entre as duas linguagens. Enquanto SALT define poucas tags de alto-nvel, a X+V possui um conjunto bem
maior e abrangente de marcaes. A modularidade da arquitetura da X+V tambm torna mais simples a separao das diferentes interfaces de uma aplicao,
uma vez que a dependncia da linguagem SALT em relao linguagem continer torna difcil a separao das funes do cdigo.

6.3.6

EMMA - Extensible MultiModal Annotation markup language


A Extensible MultiModal Annotation markup language (EMMA) [W3C, 2003a]

uma linguagem de marcao desenvolvida para uso em sistemas que realizam a interpretao semntica de entradas como voz, escrita manual, etc. A EMMA possibilita

6.3. LINGUAGENS E PADRES MULTIMODAIS

87

a representao textual da interao do usurio, bem como a definio de elementos


e atributos que focam na anotao das interpretaes das entradas. O objetivo
que a linguagem seja utilizada como um padro para troca de informaes entre os
componentes em um sistema multimodal, permitindo descrever e combinar dados de
mltiplas fontes.
A proposta da EMMA representar informaes que so geradas automaticamente por um componente de interpretao a partir da entrada do usurio. Esses
componentes podem ser reconhecedores de voz, reconhecedores de escrita, engines
de processamento de linguagem natural, interpretadores de gestos, sinais DTMF, etc.
A informao especfica de cada modalidade provida por esses componentes convertida em uma representao EMMA, para ser ento processada por um integrador.
A especificao descreve marcaes para representar interpretaes das entradas do usurio, juntamente de anotaes como taxas de confiana, timestamps,
modalidades de entrada, etc. Por exemplo, se em uma aplicao de mapas com interao por caneta, um usurio executa um gesto correspondente ao comando zoom,
uma possvel representao EMMA dessa interpretao pode ser:
<emma:emma version="1.0"
xmlns:emma:="http://www.w3.org/2003/04/emma"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2003/04/emma
http://www.w3.org/TR/emma/emma10.xsd">
<emma:interpretation id="int1"
emma:mode="ink"
emma:confidence="0.75"
emma:start="1087995961542"
emma:end="1087995963542">
<command>
<zoom>
<area>(200,200),(200,400),
(400,400),(400,200)</area>
</zoom>
</command>
</emma:interpretation>
</emma:emma>

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

<command>, <zoom> e <area> so especficos da aplicao e descrevem o resultado


da interpretao da entrada.

88

CAPTULO 6. TRABALHOS RELACIONADOS

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

interfaces multimodais e sua integrao a aplicaes de computao ubqua. Como


resultado, uma API de reconhecimento de escrita (JInk) e um framework de integrao
multimodal (JMIS) foram implementados e detalhados nesta dissertao.

7.2

Resultados e Contribuies
Dentre os principais resultados obtidos e contribuies, pode-se citar:

A extenso da arquitetura da Java Ink API para acomodar o reconhecimento


de diferentes tipos de caracteres. Isso proporcionou um alcance ainda maior
a API, que agora pode ser utilizada em aplicaes de diferentes domnios. Um
exemplo o Geometrics Editor, uma ferramenta desenvolvida em conjunto com
pesquisadores da UNESP-Rio Claro, que visa auxiliar o ensino de geometria por
meio do reconhecimento de formas geomtricas [Incio Jr., 2005].
Integrao da JInk API com diversas aplicaes prottipo, dentre as quais um
reconhecedor de caracteres japoneses, um rastreador de gestos baseado em interao com cmera e uma aplicao de reconhecimento de escrita com uso
de dicionrios [Incio Jr., 2005]. Esses programas no foram detalhados neste
documento pelo fato de a JInk ser apenas uma infraestrutura auxiliar do framework multimodal.
A implementao de uma infraestrutura completa para integrao de modalidades de escrita e voz, o JMIS Framework. Utilizando uma arquitetura modular e
um conjunto de padres de projeto, o JMIS possibilita fcil integrao s aplicaes e baixa dependncia de infraestruturas para processamento unimodal.
Integrao do JMIS Framework no contexto do Projeto InCA-Serve. A implementao da SpeechBoard como prova-de-conceito um exemplo das possibilidades
de uso da arquitetura construda em aplicaes de computao ubqua. Como
resultado, os usurios podem controlar e interagir com a aplicao atravs de
comandos de voz e escrita.
Integrao da infraestrutura multimodal no desenvolvimento de uma ferramenta
para anotao sobre vdeo. A M4Note [Goularte et al., 2004] uma aplicao
multimodal que executa em Tablet PCs e que permite a captura de vdeo, a
criao de anotaes e a gerao de documentos a partir do contedo multimdia.

7.3. LIMITAES E PROBLEMAS ENCONTRADOS

7.3

91

Limitaes e Problemas Encontrados


A primeira restrio se refere ao nmero de modalidades de interao envolvi-

das no JMIS Framework. So exploradas apenas entradas baseadas em interao com


caneta e voz, no sendo foco, ao menos inicialmente, a utilizao de outras modalidades. O uso da Java Ink API e da Java Speech API para o processamento individual
das modalidades tambm um requisito, no sendo possvel substitu-las por outras
infraestruturas.
Dada a complexidade das tecnologias envolvidas, a implementao do sistema
possui limitaes de escopo, de modo a tornar a proposta factvel. Uma dessas limitaes o reconhecimento de escrita manual realizado pela JInk API, que oferece
suporte apenas reconhecimento em escrita no-cursiva. Os modelos devem ser previamente treinados pelo usurio, no sendo fornecido nenhum conjunto de caracteres
default.
Outra limitao se refere a performance da infraestrutura de reconhecimento
de voz. O processo relativamente lento e o alto processamento demandado pelo
software o torna impraticvel em dispositivos com menor poder computacional. Atualmente a robustez tambm um problema.

A estabilidade para suportar, por

exemplo, troca de usurios e interferncia de sons do ambiente, ainda precisa ser


aprimorada. Apesar desses problemas, o reconhecimento de voz foi considerado satisfatrio: grande parte dos erros apresentados eram resultantes de ambigidades da
fala, ou ento de problemas com a dico do usurio, que deve ser bastante clara.

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

usurios. Um experimento preliminar foi realizado com a M4Note [Cattelan et al.,


2005], mas a demanda por novos experimentos com usurios de aplicaes multimodais deve direcionar a realizao de vrios trabalhos futuros do grupo.
Uma dos desafios da interao multimodal o treinamento dos vocabulrios
por parte dos usurios, estando a identificao de automtica de novos vocabulrios
Kaiser [2005], a adaptao combinada usurio-sistema Pan et al. [2005] e o estudo de
aspectos lingsticos de conversao Chai et al. [2005] entre as abordagens adotadas
para o problema. O trabalho suporta o mapeamento on-the-fly de novos smbolos no
caso da interao por tinta eletrnica, mas o tratamento combinado com voz constituise um trabalho futuro.
O trabalho, at o momento, focou no apoio a usurios tratados isoladamente.
Problemas interessantes podem ser explorados em trabalhos futuros levando em
conta interfaces multimodais multi-usurio, como aqueles discutidos por Tse et al.
[2006], no contexto de interao de mltiplos usurios em mesas interativas, e por
Barthelmess et al. [2006], no contexto do trabalho em grupo.

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-

IBM Corp. (2003). Developing Multimodal Applications using XHTML+Voice. Disponvel


na Internet em http://www-306.ibm.com/software/pervasive/multimodal. Acessado em
06/01/2007.
IBM Corp. (2004). XHTML+Voice Programmers Guide - Version 1.0. Disponvel na Internet
em http://www-306.ibm.com/software/pervasive/multimodal. Acessado em 06/01/2007.
Incio Jr., V. R. (2003). Componentes para Intercmbio de Informaes em Ambientes de
Computao Ubqua. Relatrio Final do Programa de Treinamento de Estudantes de Graduao em Tcnicas Especializadas da PRP/USP.
Incio Jr., V. R. (2005). Componentes para Desenvolvimento de Interfaces Multimodais em
Aplicaes de Computao Ubqua. Relatrio Final das Atividades Desenvolvidas em Programa de Mestrado - Reportado a FAPESP.
Irawati, S., Caldern, D., and Ko, H. (2006). Spatial ontology for semantic integration in 3d
multimodal interaction framework. In VRCIA 06: Proceedings of the 2006 ACM international
conference on Virtual reality continuum and its applications, pages 129135, New York, NY,
USA. ACM Press.
Ishii, H. and Ullmer, B. (1997). Tangible bits: Towards seamless interfaces between people,
bits and atoms. In Proc. of the ACM Conference on Human Factors in Computing Systems,
pages 234241.
Jain, A. K. and Ross, A. (2004). Multibiometric systems. Communications of the ACM, 47(1):34
40.
Johnson, R. and Foote, B. (1988). Designing Reusable classes. Journal of Object-Oriented
Programming - JOOP, 1(2):2235.

REFERNCIAS BIBLIOGRFICAS

97

Johnson, R. E. (1997a). Components, Frameworks, Patterns. In SSR 97: Proceedings of the


1997 symposium on Software reusability, pages 1017, New York, NY, USA. ACM Press.
Johnson, R. E. (1997b). Frameworks = (Components + Patterns). Communications of the ACM,
40(10):3942.
Johnston, M. (1998). Unification-based Multimodal Parsing. In Proceedings of the 36th Annual
Meeting on Association for Computational Linguistics, pages 624630, Morristown, NJ, USA.
Johnston, M., Cohen, P. R., McGee, D., Oviatt, S. L., Pittman, J. A., and Smith, I. (1997).
Unification-based Multimodal Integration. In Proceedings of the 8th Conference on European
Chapter of the Association for Computational Linguistics, pages 281288, Morristown, NJ,
USA.
Jokinen, K. and Raike, A. (2003). Multimodality - Technology, Visions and Demands for the
Future. In Proceedings of the First Nordic Symposium on Multimodal Interaction, pages 25
26.
Jost, M., Haubler, J., Merdes, M., and Malaka, R. (2005). Multimodal interaction for pedestrians: an evaluation study. In IUI 05: Proceedings of the 10th international conference on
Intelligent user interfaces, pages 5966, New York, NY, USA. ACM Press.
Kaiser, E. C. (2005). Multimodal new vocabulary recognition through speech and handwriting
in a whiteboard scheduling application. In IUI 05: Proceedings of the 10th international
conference on Intelligent user interfaces, pages 5158, New York, NY, USA. ACM Press.
Larson, J. A. (2003). EMMA: W3Cs Extended Multimodal Annotation Markup Language.
Disponvel na Internet em http://www.larson-tech.com/Writings/EMMA.htm. Acessado em
13/01/2007.
Latoschik, M. E. (2005). A user interface framework for multimodal vr interactions. In ICMI
05: Proceedings of the 7th international conference on Multimodal interfaces, pages 7683,
New York, NY, USA. ACM Press.
Laverty, R. and Defee, I. (1997). Multimodal interaction in multimedia applications. IEEE First
Workshop on Multimedia Signal Processing, pages 2530.
Lin, J., Newman, M. W., Hong, J. I., and Landay, J. A. (2000). Denim: finding a tighter
fit between tools and practice for web site design. In CHI 00: Proceedings of the SIGCHI
conference on Human factors in computing systems, pages 510517, New York, NY, USA.
ACM Press.
Macedo, A. A., Camacho-Guerrero, J. A., Cattelan, R. G., Incio Jr., V. R., and Pimentel, M.
G. C. (2004). Interaction Alternatives for Linking Everyday Presentations. In Proceedings of
the 2004 ACM Conference on Hypertext and Hypermedia, pages 112113.
Meijler, T. D. and Nierstrasz, O. (1997). Beyond Objects: Components. In Papazoglou, M. P.
and Schlageter, G., editors, Cooperative Information Systems: Current Trends and Directions,
pages 4978. Academic Press.

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

Sun Microsystems (1998a).


Java Media Framework.
Disponvel na Internet em
http://java.sun.com/products/java-media/jmf/index.jsp. Acessado em 30/08/2006.
Sun Microsystems (1998b).
Java Speech API Grammar Format Specification.
Disponvel
na
Internet
em
http://java.sun.com/products/javamedia/speech/forDevelopers/JSGF/index.html. Acessado em 06/07/2006.

100

REFERNCIAS BIBLIOGRFICAS

Sun Microsystems (1998c). Java Speech API Specification. Disponvel na Internet em


http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-doc/index.html.
Acessado em 06/07/2006.
Sun Microsystems (1999).
Java Speech API Markup Language Specification.
Disponvel
na
Internet
em
http://java.sun.com/products/javamedia/speech/forDevelopers/JSML/index.html. Acessado em 06/07/2006.
Sun Microsystems (2001). FreeTTS. Disponvel na Internet em http://freetts.sourceforge.net.
Acessado em 30/08/2006.
Sun Microsystems (2004).
Java Server Faces.
Disponvel na
http://java.sun.com/javaee/javaserverfaces. Acessado em 20/09/2006.

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.

Disponvel na Internet em http://

W3C (2000a). SRGS - Speech Recognition Grammar Specification. Disponvel na Internet em


http://www.w3.org/TR/speech-grammar. Acessado em 21/11/2006.
W3C (2000b). VoiceXML - Voice Extensible Markup Language. Disponvel na Internet em
http://www.w3.org/TR/voicexml20. Acessado em 30/08/2006.
W3C (2002a). Multimodal Interaction Framework. Disponvel na Internet em http://
www.w3.org/TR/mmi-framework. Acessado em 06/07/2006.
W3C (2002b). XHTML+Voice Profile 1.0. Disponvel na Internet em http://www.w3.org/TR/
xhtml+voice. Acessado em 20/12/2006.
W3C (2003a). EMMA: Extensible MultiModal Annotation markup language. Disponvel na
Internet em http://www.w3.org/TR/emma. Acessado em 20/12/2006.
W3C (2003b). InkML - Ink Markup Language. Disponvel na Internet em http://www.w3c.org/
TR/InkML. 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.

Você também pode gostar