Você está na página 1de 18

Anlise do comportamento das API de servios de fala Java e

Microsoft em Ambientes Virtuais


EDUARDO FILGUEIRAS DAMASCENO
JOS REMO FERREIRA BREGA
JOS BARBOSA DIAS JUNIOR
FABIO RAMOS MONTANHA

UNIVEM Centro Universitrio Eurpides de Marlia


Programa de Ps Graduao em Cincia da Computao
Marlia (SP)

eduardodamasceno@uol.com.br ; remo,@fundanet.br; juniorddos, fa_montanha {@yahoo.com.br}

Resumo: Com a crescente inovao da tecnologia multimodal para interface de ambientes virtuais a necessidade
de ter um ambiente leve e de fcil operao do usurio faz com que os recursos de fala sejam incorporados a
aplicao, mas a perda de desempenho quando esta tecnologia utilizada faz com que o usurio perca a interao
e o envolvimento. Com esta premissa o objetivo deste trabalho elucidar algumas prticas e tcnicas de
programao para ambientes virtuais fazendo a comparao entre duas bibliotecas de gerao de ambiente
tridimensionais: Java 3D e a WorldToolKit, e como estas bibliotecas se comportam juntas das bibliotecas Java
Speech e Microsoft Speech, ambas para reconhecimento e sntese de fala.

Abstract: With the increasing innovation of the multimodal technology for interface of virtual environments the
necessity to have a light environment and of easy operation of the user makes with that the resources of speak
are incorporated the application, but the loss of performance when this technology is used makes with that the
user loses the interaction and the involvement. With this premise the objective of this work is to elucidate some
practical and techniques of programming for virtual environments making the comparison enter two libraries of
three-dimensional environment generation: Java 3D and the WorldToolkit, and as these libraries if holds
meetings of the libraries Java Speech and Microsoft Speech.

Palavras -chave: Reconhecimento de Fala. Realidade Virtual. Ambiente Virtual.

1 Introduo

A tecnologia de informao avana a patamares j sonhados pelo homem, principalmente a nveis de


acessibilidade da informao. As interfaces homem-computador esto cada vez mais complexas e
robustas, necessitando uma investida em novas tecnologias de acesso. Uma das tecnologias de grande
arrojamento por parte dos desenvolvedores de tecnologia de acessibilidade o uso de interfaces de voz.
Segundo [APAYDIN, (2002)] a nova gerao de interfaces homem-computador ser uma interface de
fcil aprendizado e de alta acessibilidade destacando o uso das interfaces de voz, das quais seriam o
equivalente a um tero de todas as interfaces criadas para os ambientes computacionais de alta
complexidade. Isto por dois motivos principais: primeiro a facilidade no aprendizado do ambiente atravs
do uso de voz conforme [ZELTER & JOHNSON, (1994)] e segundo pela liberdade que o usurio pode
ter, conforme [TATHAM, (2002)] que descreve que a gerao e a utilizao de mensagens ou comandos
falados e interpretados pelo computador, ou seja, sntese e reconhecimento da voz humana, permitindo
que os olhos ou mos estejam livres para a realizao de outras tarefas.
Entretanto, mesmo com acesso facilitado ao conjunto de informaes o usurio poder sentir uma
ansiedade ou frustrao no uso das interfaces que se utilizam recursos de imagens tridimensionais ou de
informaes complexas, como destaca [PRESSMAM, (2002)].
Com a utilizao da tecnologia de servios de voz favorecendo a usabilidade do sistema, os recursos
alocados para o processamento, consulta a informao, e visualizao da informao pelo usurio acabam
se atenuando em funo da alocao do mecanismo de reconhecimento e sntese de voz. Da parte a
premissa deste trabalho que prope o estudo das tcnicas de programao e de desenvolvimento de
ambientes computacionais que utilizem os servios de fala sem queda de desempenho, ou com uma
tolerante queda para o usurio.

2 Definio do Problema

O sentido de percepo do ser humano o mais complexo e completo sistema de percepo dos animais,
nele o ser pode identificar variveis do ambiente e relacionar as informaes audveis e visuais no intuito de
compreender o que se passa ao seu redor, conforme [TORTORA, (1990)].
Olhos e crebro trabalham juntos para perceber e interpretar as informaes do mundo fazendo com
que o usurio sinta-se entretido com o ambiente, mas quando uma delas tem um atraso (delay), ou se
adianta uma da outra, crebro percebe a disfuno e acorda o usurio tirando-o da imersabilidade e o faz
atentar para o problema de sincronismo entre o visual e o audvel.
Estudar e observar o comportamento dos ambientes criados em duas linguagens Java e C/C++
utilizando o recurso de fala atravs do uso das bibliotecas Java Speech e Microsoft Speech dentro de um
ambiente virtual para definir um conjunto de consideraes para futuros desenvolvimentos desta tecnologia
em ambientes de realidade virtual.
Para tanto o mecanismo de sntese e reconhecimento de fala utilizado foi o IBM ViaVoice e comparado
com o mecanismo da Microsoft Speech. Os ambientes tridimensionais criados forma desenvolvidos em
com a aplicao de bibliotecas de gerao de mundos virtuais tridimensionais: Java 3D e WorldToolKit.

3 Trabalhos Anteriores

Trabalhos anteriores destacam-se pela aplicao do reconhecimento de voz e sntese utilizando sua forma
bsica sem se preocupar com a interatividade e imerso dentro do ambiente, como o caso das
aplicaes descritas por [HUNT E WALKER, (2000)] e por [PIZZOLATO & REZENDE, (2003)].
Notavelmente a pesquisa de [OLIVEIRA ET ALI, (2000)] decifra alguns problemas dentro de um
ambiente virtual associado a um sistema de reconhecimento e sntese de voz.
Outros trabalhos descrevem apenas os erros de rejeio ou de incompreenso dos comandos de voz
como o caso dos trabalhos de [MEIGUINS ET ALI, (2003)] e de [RODRIGUES, (2001)].

4 Noes gerais sobre os Servios de Fala

Segundo [FURNESS & BARFIELD, (1995)], freqentemente a expresso reconhecimento de voz


utilizada com vrios sentidos, que na verdade, referem-se a tecnologias distintas e conforme afirma
[JURAFSKY E MARTIN, (2000)]. O processamento da voz pode ser aplicado em quatro reas
principais: a) comando e controle por voz; b) reconhecimento de fala natural; c) sntese de fala; e d)
autenticao de voz;
Segundo [TATHAM, (1995)], um aspecto importante dentro do reconhecimento de voz escolha do
procedimento de reconhecimento de fala por meio de modelos e para isso h uma especificao dos tipos
de fala como os modelos de fala contnua e os de fala de palavras isoladas.
Neste trabalho optou-se em utilizar um mecanismo de reconhecimento de voz que facilitasse a
implementao do servio no ambiente virtual, e de acordo com os critrios descritos por [PIZZOLATO
E REZENDE, (2003)], a opo de escolha do IBM ViaVoice foi a que mais se provou aplicvel, por ser
um sistema estvel e possuir um conjunto de bibliotecas de programao para Java e C/C++.
Existem limitaes em todas as bibliotecas de mecanismos de reconhecimentos e sntese de voz, na
descrio de [SUN, (1998)] podem ser classificas as limitaes em dois grandes grupos: (a) Limitaes
causadas por erros de pronuncia; (b) Limitaes causadas por erros de udio.
A limitao da biblioteca foi observada pelas duas linguagens, sendo que prevalece o treinamento do
usurio como fator preponderante da utilizao correta do ambiente e atenuando os erros.

5 O mecanismo de reconhecimento

O processo de reconhecimento de voz diferente da compreenso da fala, segundo [PIZZOLATO E


REZENDE, (2003)], a compreenso da fala est alm do reconhecimento de voz no qual existe a
traduo do sinal de fala para um texto, enquanto na compreenso da fala gerada uma ao para o que
foi reconhecido.
Para tal mecanismo poder interagir com o sistema virtual necessrio utilizar bibliotecas API que faam
o trabalho de interface (ligao) entre as partes.
Como descrito de [DAMASCENO (2004)] e [BREGA et al. (2002)], o uso das extenses Java para
reconhecimento e sntese de voz utilizada o Java Speech API, entretanto sabe-se que a biblioteca
disposta neste trabalho foi incorporada por outra ferramenta denominada WebSphere da IBM [IBM
(2004)], que hoje predominante no desenvolvimento de aplicaes de acessibilidade ao usurio na
linguagem Java.
A Biblioteca de programao para aplicativos Windows o Microsoft Speech, contendo uma interface
de programao denominada de Speech API. Esta uma biblioteca que prove os recursos de sntese e
reconhecimento de voz para aplicativos baseados na plataforma. Este conjunto de rotinas de programao
consiste no conjunto de arquivos DLL (arquivos pr-compilados) que contm os cdigos de programao
necessrios para dar funcionalidade da biblioteca como um todo.
Pode-se utilizar qualquer linguagem de programao para acessar as bibliotecas de voz deste conjunto
de desenvolvimento, entretanto deve-se levar em conta que quanto mais prximo a linguagem estiver do
formato de desenvolvimento do Microsoft Speech, mais rpida ficar a aplicao final.
Segundo [RODRIGUES, (2001)], a API Java Speech uma interface de software capaz de manipular
diversos mecanismos de reconhecimento e tambm de sntese de voz de fabricantes diferentes, isto por sua
caracterstica independente de plataforma que herdada da linguagem Java.
No trabalho de [DAMASCENO e BREGA (2004)] so elucidados os termos inerentes a tcnica de
servios de voz, e dentre as tcnicas pode-se destacar que a forma de implementao do servios de voz
(tanto o reconhecimento, quanto a sntese de fala) depende diretamente da atribuio que o sistema deve
dar ao usurio.

6 Detalhes da Implementao

Para a efetiva comparao foram desenvolvidas aplicaes que unindo a tecnologia de reconhecimento e
sntese de fala para o controle do Ambiente Virtual contendo um avatar humanide.
As linguagens e seus paradigmas de programao escolhidos foram Java por retratar bem o paradigma
de orientao a objetos e a linguagem C/C++ para Windows atravs do ambiente de desenvolvimento
Microsoft Visual C++ (MVC++), onde se podem encontrar caractersticas de uma linguagem orientada a
objeto quando se usa recursos de troca de mensagens, mas ainda ligada aos conceitos de linguagens
procedurais.
Os prottipos criados vistos na Figura 1 e Figura 2 apresentam os ambientes criados em Java com
interface virtual em Java 3D e interface de fala com Java Speech API, e o prottipo 2 criado em Microsoft
Visual C++, com interface 3D da WorlToolKit com interface de fala atravs do Microsoft Speech API.

Figura 1 Prottipo 1 criado em Java Figura 2 - Prottipo 2 criado em MVC++

Para estes desenvolvimentos foi observado os conceito de [SHRIVER E ROSENFELD, (2003)], que
afirma que uma interface de fala pode ser empregada trs tcnicas diferentes: a) utilizando uma linguagem
natural controlada; b) dilogo direto, ou seja, por perguntas e respostas e; c) por comando e controle,
possvel observar que de acordo com estas tcnicas que possvel obter resposta de desempenho
satisfatrio em algumas situaes como demonstra a Figura 3, e dependendo do mecanismo escolhido
para fazer a interface de fala, como o caso da implementao em Java atravs da tcnica de comando e
controle para o idioma Portugus-Brasil.

100 95 98 98 98
88
80 80 79 80 82
80

60 50 50

40
25 25
20 18
20 15 19

0
Palavra Isolada Dilogo Contnuo Regras de Gramtica
Ling. Controlada - Java 50 20 80
Dilogo Direto - Java 95 25 98
Comando e Controle - Java 80 15 98
Ling. Controlada - SAPI 50 19 88
Dilogo Direto - SAPI 80 25 82
Comando e Controle - SAPI 79 18 98

Figura 3- Grfico de Acurcia em (%)


Ainda utilizando a tcnica de comando e controle possvel estabelecer segundo [PIZZOLATO
(2001)] formas de abordagem de reconhecimento de fala pode se dar em trs abordagens distintas: a)
Regras de Gramtica; b)Dilogo Contnuo e; c) Palavra Isolada.
Conforme a anlise da Figura 4 possvel observar que a linguagem Java com a API Java Speech tem
um desempenho maior dentro do Ambiente Virtual.

7000
Regras de Gramtica
7800

6800
Dilogo Contnuo
7850

7950
Palavra Isolada
7850
00

00

00

00

00

00

00

00

00

00

00
62

64

66

68

70

72

74

76

78

80

82
Tempo em Milissegundos (ms)

Java Speech MS-Speech

Figura 4 - Grfico do tempo mdio de resposta em milissegundos (ms)

6.1 Consideraes na tcnica de programao Java para o Prottipo 1

Quando se cria uma classe em Java deve-se priorizar a sua interface de acesso, ou seja, se esta classe ir
ser acessada como se fosse uma extenso, ou como incorporao.
Segundo [VENNERS (2001)], o uso da classe como extenso (extends) existe uma sobrecarga de
pacotes de desenvolvimento (Packages) desnecessria, pois para o referido uso relevante apenas s
bibliotecas de reconhecimento ou sntese de voz.
Quando utilizado o pacote Java Speech a mquina virtual Java usa as seguintes bibliotecas dinmicas
(DLL) para fazer o acesso ao mecanismo de reconhecimento cada uma com sua responsabilidade de
acesso ao mecanismo, sendo elas as seguintes abaixo na Tabela 1:
Tabela 1 - Responsabilidades das bibliotecas DLL
Biblioteca Responsabilidade
Ibmreco.dll Iniciar o reconhecimento de Voz atravs de uma gramtica regular (JSGF).
Vtbnfcjs.dll Carregar a gramtica regular definida e assegurar sua referncia dentro do
mecanismo de reconhecimento
Ibmsynth.dll Iniciar a sntese de voz atravs de vozes pr-definidas pelo mecanismo
ibmreco_g.dll Configurao da gramtica dentro das regras de reconhecimento de voz
ibmsynth_g.dll Configurao da gramtica dentro das regras de sntese de voz (pronuncias)
ibmsynth50.dll Responsveis pelo desligamento do mecanismo de reconhecimento e sntese de
ibmsynth50_g.dll voz.

Outra tcnica para atenuar a perda de desempenho do Java Speech a utilizao das bibliotecas
(pacotes ou packages) no mais na sua forma convencional, visto na Figura 5, mas na forma identificada
completa, visto na Figura 6. Esta forma de programao alm de atenuar a perda de desempenho deixa o
programa mais legvel segundo [SEBESTA, (1996)], assegurando o entendimento para futuras
manutenes.

Figura 5 - Forma convencional de Figura 6 - Forma de programao


programao identificada completa

O ganho de desempenho observado foi de em mdia 20 % como mostra a


Figura 7.

1785
Performance
2580

0 500 1000 1500 2000 2500 3000


Tempo em milissegundos
Convencional Identificada

Figura 7 - grfico de desempenho

Alm da utilizao do recurso de programao de incluso de pacotes identificados foi detectado que o
uso do pacote de desenvolvimento swing redundante para o Java, utilizando formulrio na plataforma
Windows, mesmo contrariando os ensinamentos de [DEITEL E DEITEL, (2003)], pois ambas (a classe
canvas3D e o canvas do AWT) so especificaes da classe Graphics, que acompanha o pacote AWT,
conforme pode ser vista na Figura 9.
Segundo de [DEITEL E DEITEL, (2003)] o pacote AWT (abstract window toolkit) esto
associados com os recursos da interface grfica com o usurio na plataforma local, e quando um programa
que usa deste recurso executado em outra plataforma sua aparncia diferente da original.
Figura 9 - Superclasses comuns dos componentes de interface com usurio em Java
Os componentes do pacote Swing no so sobrecarregados pelos recursos GUI complexos da
plataforma em que so utilizados, mas dependem da vinculao da AWT, do qual o Java3D se baseia
para desenhar objetos na tela. Mesmo que cada componente AWT possua uma interao separada para o
acesso plataforma, o fato de que quando utilizado componente swing junto ao Java Speech existe o
que se pode denominar de perda por sobrecarga, ou seja, o pacote swing por ser uma classe derivada do
awt, este processado primeiro e depois reprocessado para dar vazo ao pacote swing.

6.2 Anlise do cdigo Java

O trecho de cdigo analisado na


Figura 10 designado para a sntese de voz, nota-se que necessrio o desligamento ou remoo da
memria observada na linha 30.

Figura 10 - Cdigo para Sntese de voz

No mesmo trecho de cdigo na linha 28 visto que o mecanismo de sntese colocado em uma fila,
podendo e mecanismo ao mesmo tempo reconhecer um comando do usurio e sintetizar uma frase.

6.3 Considerao sobre a Programao em MVC++ (Microsoft Visual C++)

A aplicao objeto de estudo doravante definida como prottipo foi criado em linguagem C/C++ para
Windows e utiliza a API WorldToolKit da Sense8 com acesso a API MS-Speech 5.1 atravs das
bibliotecas SAPI Speech API da Microsoft que demonstrado na Figura 2.
O prottipo criado nesta plataforma construdo com base na API do WorldToolKit da Sense8, o
qual pode ser executado como uma janela console do Windows.
Uma das caractersticas da implementao em Microsoft Visual C++ (MVC++), o fato de que existe
uma janela de controle Windows com a qual a API instanciada, e referida, pois para o reconhecimento
de voz necessria comunicao via mensagens (Message Passing).
De acordo com Papas (2000) quando o sistema operacional usa da tcnica de troca de mensagens
para que o sistema operacional possa operar com a habilidade de multiprocessamento, ou seja, para
operar mais de uma aplicao com acesso ao processador.
Existe uma distino na concepo de uma aplicao baseada em Java e outra construda na plataforma
Windows com o Visual C++ (MVC). Visualmente as interfaces de comunicao so semelhantes, mas as
tecnologias em ambas as linguagens so de paradigmas diferentes.
Quanto a este paradigma o que se destoa que a na programao Windows com o MVC na
verdade um programa orientado a procedimento que simula uma orientao a objeto atravs do uso de
mensagens.
Segundo Schildt (1997), quando se escreve um programa (EXE) comum que o programa inicie a
interao com o Sistema Operacional (SO), ao exemplo da plataforma DOS, o programa solicita entradas
e sadas que so fornecidas pelo SO, no entanto na plataforma Windows (Microsoft Windows), o SO
chama o programa (EXE) e libera recursos de entradas e sadas por meio de mensagens.
O SO Windows passa uma mensagem para o programa mediante uma funo especial chamada pelo
prprio ncleo do SO (Kernel), segundo Hart (2001), este ncleo a poro responsvel por suas
funes mais bsicas, entre elas pode-se citar: escalonamento, destruio e criao de processos.
Uma vez que a mensagem tiver sido recebida, espera-se que o programa toma uma ao apropriada.
Embora o programa possa chamar uma ou mais funes do ncleo do SO enquanto responde
mensagem, no deixa de ser o Windows que inicia a atividade, e de forma geral ele comanda todos os
programas dentro da plataforma.
H diferentes tipos de mensagens dentro da plataforma Windows, por exemplo, quando o usurio d
um clique com mouse sobre uma janela, ou quando uma janela precisa ser redimensionada ou
redesenhada, fazendo lembrar que as mensagens funcionem como uma interrupo.
O SO prov uma srie de servios para os programas de acordo com o envio e recebimento de
mensagens. A ilustrao da Figura 12 demonstra este fornecimento de recursos.

Figura 12 - Chamada de recursos do SO

Kernighan e Pike (2000) definem que as mensagens enviadas para o programa so armazenadas em
uma fila de mensagens associada a cada programa carregado. Portanto nenhuma mensagem ser perdida
mesmo quando o programa ficar ocupado processando outra mensagem, esta mensagem ficar na fila at
que o programa esteja pronto para l-la.
Quando um processo de um programa deseja um servio do SO, ele faz uma chamada a biblioteca de
Interface de programao (API Application Programming Interface), para que o SO realize um
servio j definido em seu ncleo.
O SO ento se suspende e retorna a execuo do processo do ponto em que havia sido parado.
Dependendo do servio o processo pode continuar suspenso por mais algum tempo como o caso das
operaes de Entrada e Sada (E/S).
Segundo Kruglinski (1997), a programao para Windows diferente de velho estilo de programao
procedural, pois mesmo utilizando recursos conhecidos deste paradigma a programao Windows recorre
a tecnologia de uso de mensagens passadas a interrupes de programa.
Segundo Patterson e [HENNESSY (2000)] a plataforma Windows um sistema operacional
multitarefa (timesharing), isto significa que ela pode executar dois ou mais programas simultaneamente.
Isso acontece por que o sistema operacional Windows trabalha de forma concorrente onde o tempo da
rotina no processador fatiado ou parcelado (time sliced).

6.4 Anlise do cdigo C/C++

De acordo com [SEBESTA (2002)], para simular a orientao a objetos atravs de uma linguagem
tipicamente procedural necessrio a criao de eventos de sistema ou Handle Events, que nada mais
so do que o envio de mensagens ao ncleo do SO causando uma interrupo e desviando o fluxo do
programa temporariamente.
Segundo [KRUGLINSKI (1997)], a repetio de mensagens uma parte de todas as aplicaes
Windows. Seu objetivo o de receber e processar mensagens enviadas pelo ncleo do SO. Quando uma
aplicao excetuada, so enviadas mensagens para ela quase que de forma contnua que so
armazenadas at que possam ser lidas e processadas. O trecho de cdigo destacado na Figura 13 denota
o caso do uso de mensagens para enviar a mensagens de configurao do ambiente virtual escrito em
MVC chamando uma funo para criao do mundo em WorldToolKit.

Figura 13 - Lao de repetio de mensagens


7 O multiprocessamento (threads)

Quando um sistema necessita de grandes recursos processamento e que se deseje que o usurio no perca
a interao e o sentido de imerso com o sistema, possvel fazer a diviso do processamento, isto
possvel atravs do uso de Threads.
Segundo [DEITEL E DEITEL (2003)], thread um fluxo de execuo do programa que pode ter
acesso ao processador e ser inicializado ou colocado em espera (sleep) de acordo com sua prioridade.
Java a nica entre as linguagens de programao de uso geral que disponibiliza o controle de fluxo de
execuo para o programador de aplicativos. Em C/C++ estas funcionalidades no esto disponveis e
para ser realizado o mesmo trabalho necessrio o uso de repetio de mensagens quando a
programao para Windows, portanto dependendo diretamente do sistema operacional e no da
primitiva da linguagem como em Java.
Segundo [KRUGLINSKI (1997)], em muitas plataformas de computadores, os programas C e C++
podem executar multithreading usando bibliotecas de cdigo API especficas para o sistema.
O grfico da
Figura 14 mostra as diferenas entre o processamento na linguagem Java em comparao com
MVC++, o que neste exemplo provou-se que Java utilizando multithreading 23,55 % mais rpido do
que um programa de reconhecimento de fala programado em MVC++, sem utiliza qualquer biblioteca
tridimensional como Java 3D e WorldToolKit, e quando so utilizados estas biblioteca a latncia cai para
15,88 %.
Latncia de Execuo por Threads

1,0500 0,9451
0,8963
0,9000 0,7950
0,7500 0,6852
segundos

0,6000
0,4500
0,3000
0,1500
-
Reconhecimento de Fala puro Reconhecimento de Fala no
MVC++ 0,8963 0,9451
Java 0,6852 0,7950

Figura 14 - Latncia de Execuo por threads

Quando usado no sistema um fluxo de execuo com Sntese e Reconhecimento de Fala a latncia
ainda maior em MVC++ do que em Java como comprova o grfico da Figura 16

Latncia de Execuo por Threads

1,0151
1,2000
1,0500 0,9063
0,9000 0,7852 0,8950
segundos

0,7500
0,6000
0,4500
0,3000
0,1500
-
Sntese e Reconhecimento Sntese e Reconhecimento
MVC++ 0,9063 1,0151
Java 0,7852 0,8950

Figura 16 - Latncia utilizando threads para reconhecimento e sntese de fala


Embora Java seja talvez a linguagem de programao mais portvel do mundo, certas partes da
linguagem so dependentes da plataforma. Em particular, h diferenas entre as plataformas Java para
sistemas operacionais Windows e Solarais.
Nas implementaes de 32 bits de Java para Windows, as threads recebem uma frao de tempo.
Isso significa que cada thread recebe uma quantidade limitada de tempo para ser executada em um
processador e, quando esse tempo expira, a thread colocada em estado de espera enquanto as outras
threads de igual prioridade obtm suas oportunidades de utilizar a sua fatia de tempo num esquema de
rodzio. Ento a thread original retorna a execuo. Portanto para a plataforma Windows pode-se definir
a prioridade mais alta para uma thread e esperar a execuo, favorecendo assim as tcnicas de
programao de ambiente tridimensionais.

8 Resultados

Os resultados relevantes deste trabalho esto relacionados com a efetiva comparao entre as
bibliotecas de reconhecimento de fala incorporadas a ambientes virtuais.
Os resultados foram obtidos utilizando uma mquina Pentium Pro III, Intel, com 256 Mb RAM, sem
placa aceleradora, com as configuraes mais prximas das utilizadas na pesquisa de [BURDEA E
COIFFET (2001)], para tentar encontrar detalhes diferente incorporao do servio de fala ao
Ambiente Virtual.

8.1 Carregamento de Arquivos (Loading)

Conforme foi exposto no Captulo 6 possvel notar que existe diferena de processamento de acordo
com a plataforma e sistema operacional que a biblioteca grfica utilizada.
Os testes foram executados na plataforma de 32 bits Windows 2000, e os resultados mostrado na
Figura 17, onde possvel notar que quando utilizado formas geomtricas nas duas bibliotecas Java3D e
WorldToolKit para carregar via comandos executados por meio de regras de gramtica, e o que foi
obtido que quando realizado o carregamento de uma forma geomtrica o WTK 2,13% mais rpido
do que o Java 3D, mas, quando utilizando um arquivo no formato waveform possvel notar que o Java
3D 7,78% mais eficiente do que o WTK.
Milessegundos

Comparativo de tempo de carregamento de arquivos


2,5000
1,9210 1,9530
2,0000 1,7823 1,7936
1,5000
1,0000
0,2890 0,3101
0,5000 0,2953 0,3021
-
Geometria VRML WaveForm Textura
WTK - SAPI 0,2890 0,3101 1,9210 1,9530
J3D - JS 0,2953 0,3021 1,7823 1,7936

Figura 17 Latncia no carregamento de arquivos

8.2 Taxa de quadros por segundo (Frame Rate per Second -FPS)
De acordo com [BURDEA E COIFFET (2001)] constam que o WTK ligeiramente mais rpido
que o Java3D, considerando que o nmero de polgonos mostrados no ambiente virtual seja entre 5 a
5.000, mas o que percebe-se quando incorpora-se o servio de reconhecimento de fala tem-se as
seguintes anlises a partir da Figura 19 e
Figura 20. Ambas demonstram que de acordo com o nvel de detalhamento do objeto virtual
possvel ter maior ou menor taxa de quadro por segundo.
O nvel de detalhamento dos avatares humanides foi percebido quando ouve uma distonia em relao as
taxas encontradas na Origem (0,0,0), a Frente (0, 0, -10) e Atrs (0,0,10). As localizaes descritas so
por [BARRILEUAX (2001)] como forma de ilustrao de uma coordenada virtual simulando um ambiente
real, e estas coordenadas tambm utilizadas no trabalho de [DAMASCENO (2004)].
Nmero de Frames por funo em
22,00 segundos (J3D)
Frames

20,00

18,00

16,00
Pular Sentar Andar Levantar
Origem 19,25 19,17 18,75 20,15
A frente 20,02 18,05 18,20 18,52
Atrs 21,29 20,52 19,95 21,45

Figura 19 - Frame Rate por funo em J3D


possvel observar que o processamento com o WTK ligeiramente mais rpido do que o
processamento do J3D, em torno de 5,76 % como tambm destaca [BURDEA E COIFFET (2001)], o
que destoante o fato de que quando o usurio utiliza o comando levantar o J3D ganha processamento
em aproximadamente de 4,96 %, ficando assim mais rpido do que o WTK.

Nmero de Frames por funo em segundos


24,00 (WTK)
23,00
22,00
21,00
20,00
19,00
18,00
17,00
Pular Sentar Andar Levantar
Origem 20,75 21,12 20,25 19,15
A Frente 21,12 21,25 19,50 19,20
Atrs 22,58 22,80 21,80 21,75

Figura 20 - Frame Rate por funo em WTK

Isto possvel pois os movimentos de sentar so simplrios, articulando poucos objetos, entretanto ao
comando levantar, como articula mais objetos possvel especular que de acordo com o nvel de
detalhamento e o volume de objetos sendo movidos ou renderizados e a utilizao da biblioteca de voz
possvel ter uma queda mensurvel em WTK mas a performance melhor de J3D, trazendo uma melhor
definio pela taxa de quadros por segundos.
A Figura 23 mostra o grfico comparativo de processamento a medida que a interface de voz
utilizada.
A preocupao com a interface de voz importante, devido ao fato do usurio no perder a imerso
com o sistema virtual. Na maioria das implementaes encontradas tais como a de [APAYDIN (2002)] e
de [MEIGUINS (2003)] utilizam o recurso de fala a todo o momento, criando uma sobrecarga no sistema.
Segundo [SUN (1998)], o mecanismo de reconhecimento e sntese de fala obedece a uma mquina de
estados e estes estados ou momentos segundo [APAYDIN (2001)] realizam a troca de mensagens
ocasionando na execuo de um comando ou o acionamento de um evento.
Para que haja a compatibilidade entre as bibliotecas de reconhecimento de fala, foi notado que os
mecanismos para que fosse possvel encontrar alguma semelhana na mquina estado e o que foi
encontrado reflete a seguinte operao demonstrada na Figura 17. A observao pertinente que esta
figura representa um conjunto dos estados observados nas duas APIs.

Figura 17 - Mquina de Estados da biblioteca de fala

A observao do comportamento do ambiente virtual ao acionar o mecanismo de reconhecimento de


fala primordial para que o usurio no se sinta frustrado na inicializao do sistema e nem do decorrer do
uso do mesmo, a Figura 23, imprime o comportamento do ambiente virtual de acordo com os estados
identificados na Figura 17.

Comparativo de perda de processamento

22,00 21,25 21,12


21,00
19,83 18,75
20,00
19,00 19,87
19,10 19,17
18,00
17,00
17,54
16,00
15,00
Ligado Espera Acionado Desalocado

WTK - SAPI J3D - JS

Figura 23 - Grfico comparativo da perda de processamento


possvel identificar que quando o sistema acionado, ou seja, quando o usurio pronuncia alguma
palavra que pertence as regras gramaticais definidas possvel garantir que utilizando a tecnologia WTK-
SAPI (Sense8 e Microsoft) existe uma perda maior de processamento do que se utilizar a tecnologia Java
(J3D JS), onde encontra-se a queda de equivalente 6,68 % quando o mecanismo ligado e de 11,73%
quando o mecanismo acionado. Ou seja, possvel obter um melhor desempenho do Java em
aproximadamente em 0,327 % quando o mecanismo de reconhecimento de fala usado, mas quando ele
desalocado este desempenho perdido, devido ao tempo de recuperao da memria atravs do
Garbage Collection.
Segundo [SUN (1998)] e [MICROSOFT (2000)], o processo de alocao no executado logo
quando o sistema se inicia, visto que necessria a alocao de recursos significativos como processador,
espao em disco e memria, para acesso exclusivo do sistema de udio e seus componentes, tais como
microfone, placa de som, etc. E devido a isto que para se ganhar desempenho em Java necessrio a
incluso de um processo que execute em separado para dar vazo ao processamento dos recursos de
vdeo.
O cdigo mostrado na
Figura 19 usado para ganhar maio processamento dentro do Ambiente Virtual no prottipo 1, criado
em Java.

Figura 19 - Cdigo fonte da diviso de processamento

De acordo com os trabalhos de [DAMASCENO E BREGA (2004)] necessrio para que os


eventos da interface de voz sejam acionados juntamente com os eventos do ambiente virtual essencial
que os eventos estejam diretamente ligados plataforma grfica ou a biblioteca de programao grfica
utilizada.
No prottipo 1, escrito em Java verificou-se que o ganho de processamento utilizando o pacote
AWT (Abstract Window ToolKit) ao invs da swing possvel conseguir aproximadamente 18,35 %
mais de processamento conforme pode ser vislumbrado na Figura 21, onde possvel encontrar singelas
diferenas entre o processo de sntese de fala e de reconhecimento de fala.

Delay of package processing


0,5000
0,3870
0,4000
0,2953 0,3270
0,2890
0,3000
0,2000
0,1000
-
Swing AWT
Sntese Reconhecimento
Figura 21 - Grfico de processamento de acordo com o pacote grfico

Segundo [SUN (1998)] quando um evento acionado ele fica alocado a uma fila associada a um
pacote, no caso da sntese de fala a fila est associada apenas ao pacote Java Media Framework o qual
aciona os eventos de som, entretanto no caso do reconhecimento de fala a fila est associada a plataforma
grfica AWT e por isso necessrio um sincronismo com a fila de eventos AWT. Para a implementao
do sincronismo da fila AWT de eventos foi utilizado o seguinte trecho de programa visto na Figura 22.

Figura 22 - Trecho de programa


Os componentes do pacote Swing no so sobrecarregados pelos recursos GUI complexos da
plataforma em que so utilizados, mas dependem da vinculao da AWT, do qual o Java3D se baseia
para desenhar objetos na tela. Mesmo que cada componente AWT possua uma interao separada para o
acesso a plataforma, o fato de que quando so utilizado componentes swing junto ao Java 3D existe o que
pode-se denominar de perda por sobrecarga, ou seja, o pacote swing por ser uma classe derivado do
AWT, este processado primeiro e depois reprocessado para dar vazo ao pacote swing.
No prottipo escrito em C para o ambiente Windows, no possvel ter as mesmas concluses com a
verso do WorldToolKit 8, que est disponvel para estudo. Isto devido ao fato de que o processamento
requerido para o reconhecimento de voz usado apenas no ambiente Windows por meio de repeties de
mensagens como visto anteriormente na Figura 13. O processo de abertura em modo console impede o
processo de reconhecimento de fala, deixando apenas o processo de sntese de voz ser utilizado, pois este
no necessita do sistema de repeties de mensagens.

9 Concluses

Para a criao de um ambiente virtual totalmente imerso necessria a incluso de recursos multmodos de
interao e uma das formas mais acessveis de interao no convencional o uso da tecnologia de
reconhecimento e sntese de fala.
Para o desenvolvimento de aplicaes onde necessrio este recursos deve-se tomar algumas
precaues na escolha da plataforma de desenvolvimento, pois mesmo escolhendo uma plataforma em
detrimento de outra, pode-se observar que sempre existir restries de uso que podero ser notadas pelo
usurio, assim diminuindo a imerso do mesmo.
No mbito de se escolher entre plataforma este trabalho tenta demonstrar algumas caractersticas at
ento obscuras de duas linguagens de desenvolvimento. A linguagem Java e a linguagem C/C++.
Observando pela tica de paradigma de linguagem de programao, a linguagem Java superior a
linguagem C/C++, entretanto pela popularidade e acessibilidade da linguagem C/C++ pelos
programadores mundiais, esta linguagem dificilmente ser extinta.
Pelo mesmo prisma, ao observar que a linguagem Java se interage melhor com sua plataforma de
desenvolvimento de ambientes tridimensionais em Java 3D.
Da tem-se um paradoxo de que uma linguagem pr-compilada e interpretada poder ser mais rpida do
que uma linguagem compilada e executada.
Isso depende drasticamente do o estilo de programao adotado para o desenvolvimento da aplicao
computacional.
Quando se desenvolve em ambiente Java, que orientado a objeto, no h a necessidade de
preocupao com referncias ou mensagens, nem mesmo com o, lixo, pois as propriedades do Garbage
Colletction fazem com que a mquina virtual faa todo o trabalho rduo.
J quando esta se lidando com a programao diretamente com Windows atravs do MVC++
necessrio compreender como o sistema operacional trabalha simulando tecnologia de orientao a
objetos atravs das trocas de mensagens.
Alm do estilo de programao necessrio tambm retratar que Java possui uma forma diference no
carregamento de arquivos, comprovado pelas anlises do grfico da
Figura 17
Pode-se observar que o processamento do ambiente virtual em Java 3D mais rpido do que o
processamento em WorldToolKit como comprava a Figura 19 e
Figura 20, onde analisado o tempo de renderizao ou quadros por segundo (Frame Rate FPS),
onde tambm observado que Java perde menos recursos ao alocar um objeto virtual, no caso teste um
avatar humanide, em diferentes posies do espao virtual.
Quanto a questo da diviso do fluxo de execuo mais uma vez a linguagem Java imprime uma
vantagem sobre a linguagem C/C++, pois obtm cerca de 23 % mais de agilidade no processamento,
como provado no grfico da
Figura 14.
possvel obter maior processamento quando o fluxo divido entre a gerao do ambiente virtual e o
mecanismo de reconhecimento, isto tanto em Java quanto em MVC++, mas o ganho no to
compensador, esta vantagem pode ser vista na Figura 16.
O fato que mais denota a relevncia da pesquisa de que no necessrio adquirir um mecanismo de
gerao de ambientes virtuais como o WorldToolKit da Sense 8 para gerar um ambiente tridimensional
pois os recursos do Java 3D podem ser mais compensadores. Isto observado sobre a tica de anlise de
processamento. E quando necessria a incluso de recursos de reconhecimento e sntese de fala a perda
de desempenho de Java mais constante, o que pode significar que um ambiente virtual com
reconhecimento de fala desenvolvido em Java com a tcnica de programao correta tende a ter o baixa
latncia, isto comparado ao mesmo ambiente desenvolvido em MVC++ com WorldToolKit.

Bibliografia

TORTORA, G., 1990, Structure and interpretation of visual languages. In Chang, S.-K., editor, Visual
Languages and Visual Programming, Plenum Press, New York.
APAYDIN, O. Networked Humanoid Animation Driven By Human Voice Using Extensible 3D
(X3D), H-ANIN and Java Speech Open Standards. Naval Postgraduate School, Monterey,
California; 2002.
BREGA, J. R. F., SEMENTILLE, A. RODELLO, I. A., MELO, W. C. C. 2002, Uma Interface de
Reconhecimento de Voz para Movimentao de Agentes e Avatares Humanides em
Ambientes Virtuais, 6o.SBC Symposium on Virtual Reality.

BURDEA, G.; COIFFET, P. Virtual Reality Technology. New York: John Wiley & Sons, 1994
________, G.; BOIAN, R.F. WorldToolKit Vs. Java 3D : A Performance Comparison. CENTER
FOR ADVANCED INFORMATION PROCESSING, Technical Report CAIP TR-259, The State
University of New Jersey, New Jersey: 2001.
DAMASCENO, E.F. & BREGA, J. R. F.; "Implementao um ambientes virtual conduzido por voz
em Java, (2004) 4o.SBGames Simpsio Brasileiro de Jogos de Computador, Curitiva PR,
Outubro.
DAMASCENO, E.F.; BREGA, J. R. F., SEMENTILLE, A. RODELLO, I. A.; NUNES, F.L.S.M.
"Implementao de Servios de Voz em Ambientes Virtuais, (2004) Semana Acadmica do
CEFETIPI, Teresina PI, Outubro.

DAMASCENO, E.F.; "Sntese e Reconhecimento de voz em ambientes desenvolvidos em Java,


(2004) Semana Acadmica do FESURV- Rio Verde GO, Outubro.
DEITEL, H. M. ; DEITEL, P. Java Como Programar. 4a.edio. Porto Alegre-RS: Bookman, 2003.
FURNESS, T. A. & BARFIELD, W Speech Recognition - Past, Present and Future. NTT Review,
1995.
HUNT A. & WALKER W. A Fine Grained Component Architecture for Speech Application
Development, SUN Research, Project: SMLI TR-2000-86, June 2000.
JURAFSKY, D., MARTIN, J. Speech and Language Processing. New Jersey, Prentice-Hall, 2000.

KRUGLINSKI, D. J.: Inside Visual C++, 4a Ed, Microsoft Press, New York , 1997.
MEIGUINS, B.S Et. Ali. Interao em Ambiente Tridimensionais Utilizando Comandos de Voz, in
Proceedings of Symposium on Virtual Reality, Ribeiro Preto, SP 2003.
OLIVEIRA J.C. Et Ali VIRTUAL THEATER for Industrial Training: A Collaborative Virtual
Environment, Canad, 2000, disponvel em www.mcrlab.uottawa.ca/papers/cscc2000-Joliveira.pdf
PIZZOLATO,E. B. e REZENDE M.N. Issues to Consider when Adopting Commercial Speech
Interface in Virtual Worlds, in Proceedings of Symposium on Virtual Reality, Ribeiro Preto, SP
2003.
PRESSMAN, R.S. Software Engineering: A Practitioners Approach, 5 ed. McGraw-Hill, New
York, 2002.
RODRIGUES, J.F. Estudo e Desenvolvimento de Aplicaes Java com Reconhecimento e Sntese
de Voz. Relatrios Tcnicos do ICMC. So Carlos, 2001
SEBESTA R. W. Conceitos de Linguagem de Programao. 4 ed. Editora Bookman, Rio de
Janeiro. 1996.
SHRIVER S. & ROSENFELD R. Keyword Selection, And The Universal Speech Interface Project,
disponivel em <http://www.cs.cmu/~usi,> Acesso em 20 jul. 2003.
TATHAM, M.. Speech Recognition. 1995. Disponvel em: <http://www.essex.ac.uk/
speech/teaching/erasmus /recognit.html > Acesso em 15 Jul. 2003.
VENNERS, B. Inside the Java Virtual Machine disponvel em:
<http://www.artima.com/insidejvm/ed2/ch05JavaVirtualMachine1.html> 2001, acesso em
01/02/2005
ZELTER D. & JOHNSON M. B. Interacting with Virtual Environments, Ed. John Wiley & Sons,
New York, 1994