Você está na página 1de 55

Instituto de Cincias Matemticas e de Computao

ISSN - 0103 - 2569

ESTUDO E DESENVOLVIMENTO DE APLICAES JAVA COM


RECONHECIMENTO E SNTESE DE VOZ

Jos Fernando Rodrigues Jnior


Prof. Dr. Dilvan de Abreu Moreira

RELATRIOS TCNICOS DO ICMC

So Carlos
Abril/2001
ESTUDO E DESENVOLVIMENTO DE APLICAES JAVA COM RECONHECIMENTO
E SNTESE DE VOZ*

Jos Fernando Rodrigues Jnior


Prof. Dr. Dilvan de Abreu Moreira

Departamento de Cincias de Computao e Estatstica


Instituto de Cincias Matemticas e de Computao
Universidade de So Paulo Campus de So Carlos
Caixa postal 668
13560-970 So Carlos, SP
e-mail: {junio, dilvan}@icmc.sc.usp.br

Resumo
Justifica-se o estudo e a prtica de tcnicas de Reconhecimento/Sntese de Voz pelo fato
desta rea ser o marco principal das novas interfaces computacionais que atualmente se
apresentam como a vanguarda da computao. Graas ao enorme aumento da capacidade
de processamento juntamente com o aperfeioamento de tcnicas de Inteligncia Artificial,
este novo meio de interao computador-usurio tornou-se possvel e tende a ser a base dos
sistemas computacionais da prxima gerao.
Hoje, a possibilidade de se comunicar verbalmente com a mquina j no mais um sonho,
uma realidade que pode influenciar violentamente a produtividade e revolucionar a
interao homem-mquina. O estudo e domnio desta tecnologia devem ser efetuados de
forma precoce, possibilitando a implantao de sistemas desta natureza sistematicamente e
antecipadamente.
O projeto centrado no Reconhecimento e Sntese de Voz baseados na utilizao de uma
nova tecnologia denominada ViaVoice, pesquisada e desenvolvida pela IBM durante os
ltimos 30 anos. As funcionalidades de Reconhecimento/Sntese de voz so acessadas
atravs de uma API denominada SDK composta de trs pacotes Java que possibilitam o
desenvolvimento de aplicaes que oferecem interface baseada neste novo paradigma: a
voz. O projeto prev uma anlise aprofundada deste software seguida do desenvolvimento
de aplicaes baseadas na tecnologia.

Abril 2001
______________________
*Trabalho realizado com auxlio da Fapesp

2
3
1 ndice dos tpicos

1. ndice dos Tpicos...........................................................................................................2


2. Familiarizao com o software ViaVoice......................................................................3
2.1 Instalao...................................................................................................................4
2.2 Configurao.............................................................................................................6
2.3 Interface.....................................................................................................................7
2.4 Performance..............................................................................................................7
2.5 Suporte.......................................................................................................................8
3. Anlise dos pacotes Java para reconhecimento de voz................................................8
3.1 A Central de processamento e a aplicao Engine................................................9
3.2 Sntese........................................................................................................................10
3.2.1 O papel da JSML..............................................................................................10
3.2.2 Propriedades do sintetizador...........................................................................11
3.2.3 Redefinir as propriedades ou utilizar JSML..................................................12
3.2.4 Interatividade....................................................................................................12
3.2.5 A interface Speakable.......................................................................................13
3.3 Reconhecimento........................................................................................................13
3.3.1 DictationGrammar...........................................................................................14
3.3.2 RuleGrammar...................................................................................................15
3.3.3 Comparando as gramticas.............................................................................16
3.3.4 Os Resultados e os Ouvidores (Listeners) de Resultados..............................16
3.3.5 Eventos de udio...............................................................................................18
3.3.6 Eventos do motor (Engine)..............................................................................18
3.4 Viso geral.................................................................................................................19
4 Desenvolvimento de aplicativos com a tecnologia.........................................................22
4.1 O projeto Voice mp3 Player....................................................................................22
4.1.1 A interface grfica............................................................................................23
4.1.2 A interface via voz............................................................................................24
5. Elaborao e desenvolvimento do tutorial....................................................................31
5.1 Contedo....................................................................................................................32
5.2 Design.........................................................................................................................37
6. Reviso dos pacotes Java para reconhecimento de voz................................................40
6.1. O nvel de confiabilidade do reconhecedor...........................................................40
6.2. O nvel de confiabilidade do reconhecedor............................................................40
6.3. A captura de udio do reconhecedor......................................................................41
6.4. Estatsticas de reconhecimento...............................................................................42
7. A Aplicao Verificador de Pronncia......................................................................43
7.1. O Funcionamento......................................................................................................43
7.2. A abrangncia da aplicao.....................................................................................44
8. Participao do VIII Simpsio Internacional de Iniciao Cientfica da USP...........47
9. Apresentao final do Tutorial Speech Development Kit Java Technology ......48

4
Apndice A - Java Speech Markup Language.49
Apndice B - Java Speech Grammar Format...................................................................50
Apndice C - Dados utilizados para a coleta de estatsticas do reconhecimento...........52

5
2 Familiarizao com o software ViaVoice
Esta primeira tarefa consistiu em adquirir o software necessrio para a realizao do
projeto: o pacote de software Java e o software base do ViaVoice. Com o material
disponibilizado, passamos para a fase de instalao, o que demandou a realizao de alguns
testes j que a documentao oferecida pela IBM, tanto em seu site
http://www.ibm.com/software/speech como na documentao que acompanha a distribuio,
no especificam os detalhes do processo de instalao como um todo. No h um
esclarecimento sobre como o pacote de software Java utiliza-se do ViaVoice, nem como
deve ser feita a configurao para estabelecer a interao entre eles.
Com o software instalado foi realizada a anlise da interface, no caso do pacote do
ViaVoice foi necessrio experimentar todos os executveis que vm junto com a
distribuio j que no h documentao alguma sobre isto. A avaliao da performance foi
realizada ministrando-se um conjunto de palavras para o reconhecimento, anotando-se os
erros e os acertos. Para o teste da sntese simplesmente definiram-se algumas frases para
que o computador as reproduzisse.

6
2.1 Instalao
A API de desenvolvimento IBM Speech Development Kit Java Technology, objeto
de estudo da presente pesquisa, pode ser conseguida no site :
http://www.alphaworks.ibm.com/aw.nsf/frame?ReadForm&/aw.nsf/techmain/AF74C5941F557778882566F3
00703F5B na verso Linux e em http://www6.software.ibm.com/dl/vvsdk/vvsdk-p para a verso MS
Windows. Ambas distribudas totalmente grtis (para fins acadmicos) em um nico
arquivo comprimido. A instalao realizada atravs da descompresso dos arquivos da
distribuio em um nico diretrio. Aps o descarregamento dos pacotes teremos
acrescentado a seguinte sub-rvore ao diretrio escolhido:

ibmjs

hello lib ref

api jsgf jsml

Figura 1: rvore de diretrios da distribuio do IBMSDK Java Technology.

7
Que correspondem a:
Diretrio Contedo Windows Contedo Linux
../ibmjs Subdiretrios segundo a figura mais Idem, no entanto o arquivo
arquivo de lote (install.bat) para de lote trata-se de um script
configurao das variveis de sistema shell (install.sh) e a varivel
PATH e CLASSPATH e registro do PATH corresponde
software junto ao Sistema Operacional. varivel
LD_LIBRARY_PATH
../ibmjs/hello Exemplo de aplicao incluindo cdigo Idem.
fonte.
../ibmjs/lib Bibliotecas de interface Bibliotecas de interface
IBMSDK/ViaVoice: ibmreco.dll, IBMSDK/ViaVoice: audjs.so
ibmreco_g.dll, ibmsynth.dll, e libibmreco.so +
ibmsynth_g.dll e vtbnfcjs.dll + Classes da API Java
classes da API Java (ibmjs.jar). (ibmjs.jar).
../ibmjs/ref Subdiretrios segundo a figura, Idem.
contendo informao de referncia para
programao.
../ibmjs/ref/api Documentao da API gerada no padro Idem.
Javadoc.
../ibmjs/ref/jsgj Documentao da linguagem de Idem.
marcao Java Speech Grammar Format
../ibmjs/ref/jsml Documentao da linguagem de Idem.
marcao Java Speech Markup
Language.
Tabela 1: Contedo do arquivo de distribuio do IBMSDK Java Technology.

As bibliotecas utilizam-se de um software base para realizao do reconhecimento e


sntese de voz. Este software o mesmo utilizado na distribuio do software comercial
ViaVoice Millenium e denomina-se ViaVoice Runtime Dictation. Podemos encontr-lo em
http://www6.software.ibm.com/dl/viavoice/runtime-p na verso Windows e em
http://www6.software.ibm.com/dl/viavoice/linux-p para a verso Linux.

8
A instalao destes softwares direta, sendo a verso Windows um executvel
responsvel por todo o processo. A verso Linux distribuda em formato rpm, que realiza
toda a instalao atravs do comando:
rpm ivh ViaVoice_runtime-3.0-1.1.i386.rpm
Como se trata de programao em Java necessrio ter a instalao prvia do Java
Development Kit 1.1.7 ou superior, ou um similar de outro fabricante.
2.2 Configurao
Aps a instalao alguns ajustes devem ser realizados para que as aplicaes
consigam utilizar as funcionalidades do pacote de reconhecimento e mesmo para que
possam ser compiladas. Apesar dos arquivos de lote destinados instalao realizarem a
atualizao das variveis de sistema, no o fazem permanentemente, necessria a
redefinio dessas variveis nos arquivos de lote da inicializao do sistema operacional:

Sistema Arquivo de Ajuste para os arquivos Ajuste para a biblioteca Java


Operacional inicializao binrios ibmjs.jar
Windows autoexec.bat deve-se acrescentar o deve-se acrescentar o caminho
caminho completo do completo do arquivo
diretrio ibmjs/lib ibmjs/lib/ibmjs.jar varivel de
varivel de sistema PATH sistema CLASSPATH para a
para que os arquivos compilao e execuo dos
binrios l presentes aplicativos que sero
possam ser acessados. desenvolvidos.
Linux .bashrc, deve-se acrescentar o Idem.
dependendo caminho completo do
da verso diretrio ibmjs/lib
deve-se varivel de sistema
verificar a LD_LIBRARY_PATH.
documentao

Tabela 2: Ajustes adicionais para a compilao e execuo das aplicaes Java SDK

9
Para o melhor funcionamento das aplicaes, no que se refere ao reconhecimento de
voz, junto com os pacotes do software ViaVoice descritos est disponvel no diretrio
binrio da instalao um aplicativo denominado enroll (Dme.exe no Windows). Ele
destinado a auxiliar o usurio no ajuste do microfone, a analisar o nvel de rudo do
ambiente de funcionamento e a realizar o treinamento do software com a voz do usurio.
No entanto, esta etapa da configurao no essencial, podendo ser realizada em outro
momento.
2.3 Interface
O Java SDK oferece uma interface peculiar API's Java, ou seja, totalmente
orientada a objetos, com classes e mtodos bem definidos no que se refere ao
funcionamento e utilizao e com documentao no estilo Javadoc: um hipertexto bem
elaborado e interligado descrevendo todo os pacotes disponveis.
O ViaVoice Runtime Dictation fornecido pela IBM semelhante verso
comercial, oferecendo aplicativos de ajuste, treinamento e gerenciamento de usurios. A
diferena a ausncia do assistente, presente na verso comercial, que oferece o controle de
todo a rea de trabalho utilizando a voz.
2.4 Performance
A documentao distribuda determina a configurao mnima como: Pentium
166Mhz MMX com 32 MB de memria, no entanto este sistema apresentou um rendimento
muito baixo, com longos perodos de leitura de disco e porcentagem de acerto muito baixa
no reconhecimento das palavras ditadas, da ordem de 7,5 acertos em 10 palavras.
Uma configurao apresentando uma melhor performance seria um Pentium MMX,
ou similar, com 233 Mhz e 48 MB de memria, apresentando uma taxa de acerto da ordem
de 8,5. Processadores AMD K6 funcionam perfeitamente com o software.
Nos primeiros dois meses do projeto a pesquisa se deu com a verso 5.0 do
ViaVoice, quando ento foi disponibilizada a verso 7.0 (apenas para Windows) presente
na atual distribuio comercial (Millenium). Esta segunda verso apresentou uma melhora
significativa especialmente no reconhecimento de voz, que a funcionalidade mais crtica
para a performance, com uma taxa de acerto da ordem de 8,5 em 10 palavras pronunciadas.
Para Linux est disponvel a verso 3.0 apenas em ingls, com uma performance da ordem
de 7,8 acertos em dez palavras.
Quando da disponibilizao da verso 7.0, a verso em portugus tambm foi
colocada para download. Testes foram realizados com esta e apresentaram resultados da
ordem de 9 acertos em 10 possveis.

10
2.5 Suporte
O suporte oferecido pela IBM para o desenvolvimento das referidas atividades de
programao carente de maior detalhamento, ficando a determinao das funcionalidades
especficas do software e os detalhes de instalao dependentes da realizao de testes. O
suporte direto aos usurios no comerciais inexistente, h apenas um frum de discusso
onde diversos programadores se comunicam. Pode ser acessado em
http://www.alphaworks.ibm.com/aw.nsf/discussion?ReadForm&/forum/speechforjava.nsf/discussion?created
ocument.

3 Anlise dos pacotes Java para reconhecimento de voz


Como descrito no projeto, a API constituda de trs pacotes que juntos oferecem a
possibilidade do desenvolvimento de aplicaes com funcionalidades completas para
sntese e reconhecimento de voz, cada uma destas funcionalidades tratada separadamente
atravs de duas entidades: o sintetizador (javax.speech.synthesis.Synthesizer) e o
reconhecedor (javax.speech.recognition.Recognizer). Estes so criados pela classe Central,
uma abstrao do software e do hardware que suportam a API.
A unidade principal utilizada a palavra, o prprio constituinte das linguagens e da
comunicao verbal, elas representam o que dito e o que reconhecido e so utilizadas na
forma de cadeias de caracteres ou Strings.
Os sintetizadores essencialmente transformam cadeias de caracteres em voz
digitalizada, no entanto podem faz-lo de diversas maneiras para uma maior qualidade do
que o computador "diz".
Os reconhecedores procuram determinar (e no entender) o que dito e so
entidades dependentes de gramticas. As gramticas so definies pr-estabelecidas ou
customizadas que determinam o conjunto de possibilidades do que pode e espera-se que
seja dito. O reconhecedor simplesmente tenta estabelecer uma correspondncia entre a
entrada de som e o que est determinado em sua(s) gramtica(s) associada(s).

11
3.1 A Central de processamento e a aplicao Engine
A seguir ser detalhado o funcionamento da interao entre as aplicaes SDK Java e a
tecnologia ViaVoice. Esta interao realizada por duas entidades: a classe Central
(javax.speech.Central) e a aplicao dependente de plataforma denominada Engine que
distribuda junto com a o pacote de software ViaVoice.

Aplicao IBM Speech Development Kit Java Technology

Classe Central Interface Synthesizer Interface Recognizer


implementa herda interface Engine herda interface Engine
Sintetizadores e/ou
Reconhecedores de
Interface Engine
acordo com o
Engine.exe presente
(Determina o acesso aplicao Engine.exe)

Engine.exe (Ncleo de processamento do ViaVoice)

Sistema Operacional (Gerenciamento de dispositivos)

Hardware de som (Entrada e sada de udio)

Figura 2: Interface entre as aplicaes SDK Java e o software ViaVoice.

A classe javax.speech.Central controla a interao entre a API e a entrada e sada de


udio pr-processada pelo ViaVoice, ela responsvel por criar instncias de objetos
sintetizadores e reconhecedores. Para tanto, a classe Central tem acesso ao software suporte
do ViaVoice cujo ncleo a aplicao Engine (Engine.exe no Windows).
O Engine o motor do reconhecimento e da sntese de voz, e suas funcionalidades
especficas para cada plataforma s podem ser acessadas aps a classe Central implementar
a interface Java cujo nome tambm Engine (javax.speech.Engine). Esta interface
herdada tanto pelos reconhecedores como pelos sintetizadores, isto , ela prov o acesso ao
ViaVoice de forma genrica enquanto cada entidade possui sua prpria especificao: ou
sntese ou reconhecimento.

12
Portanto, a classe Central responsvel por garantir a independncia de plataforma
das aplicaes. Ela acessa o software base e implementa as entidades essenciais segundo as
caractersticas do Sistema Operacional em questo. por esta razo que tanto os
reconhecedores quanto os sintetizadores so interfaces que derivam da interface Engine e
que so implementadas unicamente pela classe Central.

...
//requisita a criao de um reconhecedor junto classe Central
javax.speech.recognition.Recognizer recognizer = Central.createRecognizer(null);
//aloca recursos para a instncia criada
recognizer.allocate( );
...
--------------------
...
//requisita a criao de um sintetizador junto classe Central
javax.speech.synthesis.Synthesizer synthesizer = Central.createSynthesizer(null);
//aloca recursos para a instncia criada
synthesizer.allocate( );
...
Exemplo 1: Cdigo para criar um reconhecedor e um sintetizador

3.2 Sntese
A sntese realizada de forma direta, ou seja, aps a criao de um objeto
sintetizador o comando:
synthesizer.speak("ol");
vlido e faz com que o computador gere um som em sua sada de udio
equivalente a um ser humano dizendo: ol. Da mesma forma, pode-se determinar a
pronncia de um texto inteiro especificando-se um arquivo endereado via URL.
3.2.1 O papel da JSML

Para aumentar a qualidade e a naturalidade da voz gerada possvel fornecer


informaes adicionais para estabelecer: estilos estruturais (pargrafos ou sentenas),
enfatizao de palavras, determinao de pausas, especificao da natureza das declaraes
(exclamaes, interrogaes), controle do nvel sonoro de forma dinmica, ritmo de
pronncia, etc. Para tanto o sintetizador compatvel com uma linguagem de marcao
derivada da linguagem XML denominada "Java Speech Markup Language" ou
simplesmente JSML que est detalhada no apndice.

13
Atravs de uma marcao simples das sentenas possvel a sntese de voz com as
caractersticas acima descritas. Desta forma:

synthesizer.speak("<SENT>Computadores <EMP>podem</EMP> falar.</SENT>");

Exemplo 2: Com o comando acima temos:


"Computadores podem falar." Com nfase na palavra "podem".

3.2.2 Propriedades do sintetizador


Podemos ainda determinar as propriedades de nosso sintetizador para melhorarmos
a interface de voz. As propriedades que podem ser determinadas so:
Propriedade Argumento Observao
Voz utilizada (Voice) Objeto Voice Um objeto Voice possui quatro
caractersticas: nome, sexo (masculino,
feminino ou neutro), idade (criana,
adulto novo, velho ou de mdia idade,
adolescente ou neutro) e estilo
(negcios, casual, robtica ou leitura).
Freqncia utilizada Hertz
(Pitch)
Intervalo de Hertz Calculado pela freqncia atual (fa) e o
freqncia intervalo de freqncia (if) o intervalo
(PitchRange) fica fa-(0.2*if) x fa+(0.8*if).
Velocidade de fala Palavras/minuto
(SpeakingRate)
Volume Absoluto 0.0 x 1.0
Tabela 3: Propriedades de um sintetizador.

14
Abaixo temos um exemplo de como acessar e redefinir as propriedades de um
sintetizador.

Voice voz=new Voice();


voz.setGender(voz.GENDER_MALE); //determina que a voz ser masculina
voz.setAge(voz.AGE_CHILD); //e de criana
//as propriedades do sintetizador s podem ser redefinidas atravs de uma
//instancia de SynthesizerProperties
SynthesizerProperties sintetizadorProps = (SynthesizerProperties)synthesizer.getEngineProperties();
sintetizadorProps.setVoice(voz); //redefine a voz

Exemplo 3: Cdigo que gera um objeto Voice com voz masculina de criana e a associa ao sintetizador.

3.2.3 Redefinir as propriedades ou utilizar JSML


Algumas das propriedades vistam podem ser alteradas atravs do uso da JSML.
Como a JSML derivada da XML suas tags tm que ser abertas e fechadas em todos os
casos. Portanto, atravs dela podemos determinar quando a alterao ir ocorrer desde que
determinemos quando a propriedade dever voltar para o estado anterior.

A <EMP>Fapesp, <PROS RANGE="-30%">fundao de amparo


pesquisa</PROS> tem-se destacado pelos<PROS RATE="-20%"
VOL="+15%"> excelentes </PROS> resultados alcanados.</EMP>

Exemplo 4: Utilizao do XML para alterar, dinamicamente, as propriedades do sintetizador.


Atravs da tag <PROS> podemos aumentar ou diminuir atributos como volume (VOL), intervalo de
freqncia (RANGE) e velocidade de fala (RATE).

Desta maneira, o JSML proporciona uma maneira mais intuitiva e dinmica para
especificar como o som ser gerado. J a alterao direta das propriedades determina
mudanas permanentes que devem ser especificadas em tempo de compilao, com custo
bem maior para o processo de programao.
3.2.4 Interatividade
O sintetizador capaz de receber um evento para cada palavra pronunciada ou em
qualquer ponto especfico da sntese, estes eventos podem ser tratados unindo-se ao
sintetizador um ouvidor (SpeakableListener) que ter acesso ao que foi dito e que
determinar qual atitude (processamento) ser realizada em virtude disto. Esta possibilidade
acrescenta uma enorme interatividade s aplicaes, por exemplo: podemos ter um texto
narrado ao passo que imagens so mostradas para elucidar a narrao ou podemos navegar
na narrativa determinando pontos em que o usurio deve ser questionado sobre qual
caminho dever ser tomado.

15
3.2.5 A interface Speakable
Uma funcionalidade adicional do pacote de sntese a interface "speakable"
(pronuncivel). Ela pode ser implementada por qualquer objeto, de qualquer natureza. Um
objeto speakable tem uma especificao JSML associada e um argumento vlido para o
mtodo "speak". Adiciona-se assim uma enorme robustez ao processo de sntese: pode-se
"pronunciar" qualquer tipo de objeto (implementando "speakable") a qualquer instante com
uma nica linha de comando. Por exemplo:

class speakableFrame extends java.awt.Frame implements javax.speech.synthesis.Speakable


{
public String getJSMLText()
{
return("Isto um Frame que pode ser pronunciado.");
}
}
--------------------------------
...
speakableFrame SP_Frame = new speakableFrame();
speak(SP_Frame);
...
Exemplo 5: O cdigo acima gera a frase:
"Isto um Frame que pode ser pronunciado."

3.3 Reconhecimento
Considerando todo o conjunto de fonemas que podem ser pronunciados pelo ser
humano ou mesmo todas as palavras de uma nica lngua, o reconhecimento de voz de
forma simples e direta atravs de uma nica premissa do tipo recognizer.listen();
ainda no possvel.
Ao invs disso, o reconhecimento de voz aqui presente realizado limitando-se o
conjunto do que pode ser compreendido. Limita-se primeiramente lngua em questo: ou
portugus ou ingls, ou qualquer outra conhecida. Atualmente esta limitao inerente ao
software ViaVoice e no possvel, por exemplo, instalar mais do que uma verso do
software em lnguas diferentes em uma mesma mquina, correndo-se o risco de nenhuma
delas funcionar.

16
Tendo-se um conjunto como o determinado por um idioma completo, devemos
realizar uma segunda limitao utilizando-se subconjuntos deste idioma. Nestes
subconjuntos so enumeradas todas as palavra que podero ser ditas.
desta maneira que se d o reconhecimento de voz atravs do software em questo:
determina-se o que pode ser dito atravs de um conjunto bem definido e o reconhecedor
procura estabelecer uma correspondncia entre um dos elementos deste conjunto e o que
recebido na entrada de udio. Estes conjuntos so denominados gramticas.
As gramticas funcionam da seguinte forma: primeiramente criada uma gramtica
por um reconhecedor atribuindo-se a ela um conjunto de regras (as gramticas de ditado
tm regras pr-estabelecidas). Usando-se regras a gramtica tem um conjunto de
possibilidades de reconhecimento, ou seja, analisando a entrada de udio a aplicao pode
determinar se o que est sendo dito corresponde ao que se espera que seja dito.
Aps esta etapa deve-se ligar um ou mais ouvidores (listeners) gramtica, eles
sero responsveis por interpretar o que foi dito, determinando qual processamento se
refere ao que foi reconhecido. Se uma correspondncia for detectada, a gramtica gerara
uma entidade chamada resultado (result), contendo informaes sobre o que se "ouviu".
Quando o resultado chega ao ouvidor, este pode determinar que som (comando)
gerou o evento e desencadear um processamento pr-estabelecido pelo programador.
Existem dois tipos de gramticas:
3.3.1 DictationGrammar
Gramtica de ditado, este formato suporta a entrada de texto sem formato pr-
determinado, continuamente como a leitura de um texto. Estas gramticas possuem um
conjunto pr-estabelecido de sons que definem o domnio da gramtica. O usurio
pronuncia as palavras uma aps a outra em qualquer seqncia desde que pertenam ao
domnio em uso. Palavras no pertencentes ao conjunto geram resultados incorretos ou so
ignoradas simplesmente.
Este tipo de gramtica fornecido pela IBM de maneira a abranger domnios
especficos para reas de conhecimento como direito, medicina ou cincia da computao
j que se podem prever as palavras tcnicas e as mais comuns que sero utilizadas.
A presente API no oferece a possibilidade de se criar gramticas de ditado, pode-se
apenas adicionar ou remover palavras, representadas simplesmente por uma cadeia de
caracteres. Junto com a distribuio do software base do ViaVoice fornecida uma nica
gramtica desta natureza denominada "dictation grammar text" de uso geral.

17
As gramticas de ditado so sensveis ao contexto, isto , tentam limitar as
possibilidades da prxima palavra a ser reconhecida baseando-se na palavra anterior, na
seqncia de palavras anteriores ou mesmo no pargrafo anterior. Por exemplo: se um
substantivo dito, espera-se logo aps um verbo.

//cria uma instancia da gramtica padro associada ao reconhecedor


DictationGrammar dictationGrammar = recognizer.getDictationGrammar(null);
//associa um ouvidor gramtica criada
dictationGrammar.addResultListener(dictationListener);
//adiciona a palavra "rebutar" ao conjunto abrangido pela gramtica
dictationGrammar.addWord("rebutar");

Exemplo 6: O cdigo acima cria uma instncia de gramtica de ditado, associa a ela um ouvidor e
adiciona uma nova palavra a seu conjunto de possibilidades.

3.3.2 RuleGrammar
Uma gramtica de regras suporta o dilogo discreto entre uma aplicao e o usurio.
O que pode ser dito definido explicitamente atravs de um conjunto de regras descritas
utilizando-se uma linguagem denominada "Java Speech Grammar Format" ou JSGF que
ser detalhada no apndice.

//criamos um objeto reader que tem acesso a um arquivo texto contendo as regras
Reader reader = new FileReader("songs.gram");
//carregamos a gramatica atravs do reconecedor
songsGrammar = recognizer.loadJSGF(reader);
//associamos um ouvidor gramtica
songsGrammar.addResultListener(ruleListener);
//habilitamos a gramtica
songsGrammar.setEnabled(true);

Exemplo 7: Cdigo para carregamento, criao e habilitao de uma gramtica de regras, tambm
aqui se pode observar como um ouvidor associado uma gramtica.

Atravs do JSGF podemos determinar os comandos esperados: frases inteiras,


palavras isoladas ou palavras/frases seguindo um determinado padro. As regras de uma
gramtica podem ser carregadas em tempo de execuo atravs de um arquivo texto, uma
URL ou uma regra por vez.

18
As regras so identificadas por nomes e possuem uma cadeia de caracteres
associada representando o que foi dito, elas podem ser alteradas, apagadas ou inseridas
dinamicamente. Exemplo:
grammar x;
...
<regra 10> = Fechar programa. {close};
...

Exemplo 8: A regra acima se chama "regra 10", pertence gramtica "x", corresponde
pronuncia da frase "Fechar programa." e a String "close" representa esta regra dentro de uma
aplicao.

3.3.3 Comparando as gramticas


Comparando as gramticas do ViaVoice temos que a DictationGrammar muito
mais abrangente, sendo mais bem utilizada em discursos contnuos (textos) e no quando se
espera que o usurio ministre comandos para a aplicao. Ela uma gramtica que
demanda grande capacidade de processamento para ser usada em aplicaes para suportar o
ditado de sentenas ou mesmo textos completos.
A RuleGrammar adequada quando se deseja o controle da aplicao via comandos
discretos, deve-se utiliz-la aproveitando-se de suas funcionalidades dinmicas,
especificando a cada instante apenas o que o usurio pode realmente dizer atravs da
alterao de seu conjunto de regras em tempo de execuo.
Nos testes realizados, a RuleGrammar alcanou resultados de at 100% de acerto,
taxa bem maior do que a Dictation Grammar que apresentou resultados da ordem de 70% a
85%. Isto se deve diferena no tamanho entre os conjuntos de palavras suportados por
cada gramtica.
3.3.4 Os Resultados e os Ouvidores (Listeners) de Resultados

Quando uma correspondncia identificada entre o que dito e o que est definido
em uma gramtica, um resultado criado. Ao mesmo tempo um evento gerado e o
resultado despachado junto com ele. Este evento chega a todos os ouvidores
(ResultListener) ligados gramtica em questo e estes so capazes de ter acesso a uma
cadeia de caracteres representado o que foi dito. Desta maneira qualquer tipo de
processamento pode ser desencadeado perante um resultado de reconhecimento.

19
ResultListener ruleListener =
new ResultAdapter( ) {
public void resultAccepted(ResultEvent e) {
try
{
FinalRuleResult result = (FinalRuleResult) e.getSource();
String tags[] = result.getTags(); //cada palavra representando a regra
//corresponde a um tag (String)
//junta todas as tags em um nico buffer
StringBuffer SB_comando = new StringBuffer();
for(int i=0;i<tags.length;i++) //faz o append de cada token reconhecido
{
SB_comando.append(tags[i]); //junta ao fim do buffer cada token
}
if ((SB_comando.toString()).equals("comando")) {
System.out.println("Voce disse comando.");
}
else if ((SB_comando.toString()).equals("close")) {
System.exit(0); //fecha programa
}
}catch (Exception ex) {
ex.printStackTrace();
}
}
}
...
gramaticaDeRegras.addResultListener(ruleListener);
...

Exemplo 9: Cdigo que implementa um ouvidor que responde a dois comandos: comando e close.

20
3.3.5 Eventos de udio
Os reconhecedores geram, alm dos resultados referentes s gramticas, eventos de
udio (RecognizerAudioEvent) de forma que as aplicaes possam receber informaes
sobre a entrada do som. Temos trs eventos gerados: um peridico com informaes sobre
o volume da entrada do som, e outros dois quando se tem o incio ou o fim de um dilogo.
Estes eventos so gerados automaticamente e, para serem utilizados, deve-se apenas
associar um ouvidor de udio (RecognizerAudioListener) ao reconhecedor.

static RecognizerAudioListener audioListener =


new RecognizerAudioAdapter(){
public void audioLevel(RecognizerAudioEvent e) {
System.out.println("volume " + e.getAudioLevel());
}
};
------------------------
...
//
AudioManager AM_temp = recognizer.getAudioManager(); //todo reconhecedor tem um
//audio manager associado
AM_temp.addAudioListener(audioListener); // a ele que se associa o audioListener
...

Exemplo 10: Cdigo que implementa um RecognizerAudioListener e o associa a um reconhecedor.


Com este cdigo teremos periodicamente impresso, na sada padro, o volume da entrada de som.

3.3.6 Eventos do motor (Engine)


Como visto no item sobre a Central de Processamento, o Engine o corao tanto
do sintetizador quanto do reconhecedor. Portanto, til que tenhamos algum meio de obter
informaes sobre seu funcionamento. Isto possvel associando-se a uma destas duas
entidades um EngineListener, ele responsvel por tratar os eventos gerados pela atividade
do engine que suporta o funcionamento dos reconhecedores e/ou dos sintetizadores.

21
Os eventos gerados so: motor alocado, alocao de recursos, motor desalocado,
desalocao de recursos, erros do motor, motor pausado e motor funcionando. O de maior
interesse o que informa sobre erros do motor, estes so gerados, por exemplo, quando o
sintetizador tenta utilizar a sada de som e esta j est sendo usada.

static EngineListener engineListener =


new EngineAdapter() {
public void engineError(EngineErrorEvent e) {
System.out.println("Erro na engine: " +e.getEngineError().getMessage());
}
};
------------------------
...
recognizer.addEngineListener(engineListener);
...

Exemplo 11: Cdigo que implementa um EngineListener e o associa a um reconhecedor para tratar
erros do motor.

3.4 Viso geral


Analisando a API completa podemos concluir que o desenvolvimento de aplicaes
desta natureza pode ser realizado de uma maneira ampla, alternando as propriedades de
sntese e reconhecimento em funo de eventos desencadeados pelo usurio. Estes recursos
podem ser acrescidos a qualquer aplicao, independente de sua natureza, expandindo a
interface usurio/aplicao atravs de um novo paradigma: a voz.

22
A seguir temos um exemplo com o cdigo completo de uma aplicao simples com
os recursos mnimos oferecidos pelo software.
class SDK_teste{
static Synthesizer synthesizer; //sintetizador
static Recognizer recognizer; //reconhecedor
static RuleGrammar ruleGrammar; //gramtica de regras
static ResultListener SDK_testeListener = //implementao do ouvidor
new ResultAdapter(){
public void resultAccepted(ResultEvent e){
try{
FinalRuleResult result = (FinalRuleResult) e.getSource();
String tags[] = result.getTags();
StringBuffer SB_comando = new StringBuffer();
for(int i=0;i<tags.length;i++) {
SB_comando.append(tags[i]); }
if ((SB_comando.toString()).equals("comando")) { //comando "command"
System.out.println("Voce disse comando."); }
else if ((SB_comando.toString()).equals("close")) { //comando "close"
System.exit(0); } }
catch (Exception ex) {
ex.printStackTrace(); } } };
public static void speak(String word){ //mtodo speak
try{
synthesizer.speak(word,null); }
catch(Exception e){
System.out.println(e.getMessage()); } }
public static void main(String args[]){
try{
Locale.setDefault(new Locale("en","EN"));
synthesizer = Central.createSynthesizer(null); //cria sintetizador
synthesizer.allocate(); //aloca recursos
speak("I am the computer");
recognizer = Central.createRecognizer(null); //cria reconhecedor
recognizer.allocate(); //aloca recursos
recognizer.addResultListener(SDK_testeListener); //associa ouvidor
//carrega arquivo texto com as regras da gramtica
ruleGrammar = recognizer.loadJSGF(new FileReader("SDK_teste.gram"));
ruleGrammar.setEnabled(true); //habilita gramtica
recognizer.commitChanges(); //valida as mudanas do reconhecedor
recognizer.requestFocus();
recognizer.resume(); } //inicia reconhecimento
catch(Exception e){
System.out.println(e.getMessage()); } } }

Exemplo 12: Cdigo completo de uma aplicao SDK Java que responde a dois comandos de voz e
sintetiza a seguinte mensagem: "I am the computer"

23
Na figura 3 apresentada a arquitetura de funcionamento do software SDK Java,
ressaltando que, da mesma forma que os modelos de interface grfica, a API possui uma
forte natureza orientada a eventos.

Hardware de som
Engine Listener

Sistema Operacional

Central Objeto
Synthesizer Speakable
(Sintetizador) Listener
Interface Engine
Engine Implementada pela
Central
(Central de
processamento do
software base do Objeto Audio Listener
ViaVoice)
Recognizer
(Reconhecedor)
Interface Engine
Implementada pela
Central

Dictation Grammar
Rule Grammar Grammar
Listener

Transparente
graas
classe Central

ResultListener

Figura 3: Diagrama descritivo da estrutura de funcionamento da tecnologia SDK Java.

24
Os eventos, gerados constantemente durante o processamento, permitem monitorar
toda a atividade do software, desencadeando a atividade pr-estabelecida pelo programador
dentro dos ouvidores. Na ilustrao temos os principais listeners que so capazes de
responder a eventos gerados pelas aplicaes.

4 Desenvolvimento de aplicativos com a tecnologia


Durante as duas primeiras etapas do projeto: a familiarizao com o software e a
anlise dos pacotes, vrias aplicaes foram desenvolvidas em carter experimental para
testar, compreender e fixar cada novo conceito desvendado a respeito do pacote de
software. Quando um nvel de domnio considerado bom sobre a matria foi alcanado,
decidiu-se projetar uma aplicao mais objetiva, capaz de unir a maioria das possibilidades
oferecidas pela API.
4.1 O projeto Voice mp3 Player
Foi definido que a aplicao deveria utilizar, no mnimo, os recursos do sintetizador
e os do reconhecedor em ambos os contextos: da gramtica de ditado e da gramtica de
regras. A sntese deveria ser realizada de forma a verificar o correto gerenciamento dos
recursos de hardware e o reconhecimento deveria proporcionar uma comparao adequada
entre as diferentes gramticas ao passo que utilizasse o paradigma de regras de forma
dinmica, ou seja, uma aplicao com diferentes contextos para o controle do software.
Agrupando todas estas caractersticas projetou-se uma aplicao denominada Voice
mp3 Player, um software Java baseado nas API's: SDK Java (interface via voz) e Java
Media FrameWork 2.0 (para a reproduo de arquivos de mdia). Trata-se de um reprodutor
de arquivos Mpeg Layer 3 totalmente controlado atravs da voz. Com a utilizao do
microfone o usurio pode criar uma coleo de arquivos e desencadear a reproduo de
qualquer um deles ao pronunciar seu nome. Durante a reproduo das msicas esto
disponveis comandos de pausa, parada, avano, retrocesso, controle de volume, etc tudo
via voz. Tambm atravs de comandos sonoros o usurio pode navegar em uma rvore de
diretrios para escolher o arquivo desejado para a reproduo.
Alm destas funes caractersticas, outras tambm esto disponveis: possvel
ditar sentenas que sero repronunciadas pelo sintetizador ou digitar trechos inteiros para
que sejam lidos em "voz alta" pela mquina. Estes recursos foram adicionados para
utilizao e testar as possibilidades da API.

25
A natureza desta aplicao demanda um correto gerenciamento dos recursos de
hardware, em especial dos recursos de som, j que a sntese de voz concorre com a
reproduo dos arquivos. O reconhecimento demanda elaborao e gerenciamento
minuciosos da gramtica de regras j que no poderia ser determinado um conjunto fixo de
arquivos mp3 para sua utilizao, ao invs disso, novos arquivos podem se tornar
disponveis dinamicamente e conseqentemente necessrio uma nova gramtica a cada
coleo de msicas.
A reproduo dos arquivos pode ser desencadeada atravs de comandos ministrados
em ambos os contextos: da gramtica de ditado e da gramtica de regras. Promovendo uma
comparao entre elas e fornecendo concluses sobre a real utilidade de cada uma.
4.1.1 A interface grfica
A interface grfica possibilita o controle da aplicao sem a utilizao de comandos
de voz, no entanto o desenvolvimento se deu centrado na utilizao da voz e a GUI pode
apresentar falhas j que no foram executados testes exaustivos.

Figura 4: A interface grfica do projeto Voice MP3 Player.

26
4.1.2 A interface via voz

O software desenvolvido, em sua utilizao via voz, possui dois modos de


funcionamento:
modo arquivo: o usurio fornece a raiz de uma rvore de diretrios e o programa cria um
conjunto contendo todos os arquivos mp3 encontrados em qualquer ponto da rvore.
possvel, ento, comandar a reproduo de qualquer um dos arquivos apenas dizendo seu
nome, sem necessidade de fornecer sua localizao. A cada conjunto de arquivos criado
uma nova gramtica de regras definida e carregada para que os nomes das msicas sejam
prontamente reconhecidos.
Neste modo de operao so utilizadas duas gramticas: uma contendo os nomes
das msicas do conjunto atual de arquivos (songsGrammar) e outra mais simples
(basicGrammar) com comandos que devem ser utilizados quando uma msica est sendo
reproduzida. Elas esto definidas da seguinte forma:

27
- songsGrammar: utilizada quando nenhuma msica est sendo reproduzida.
Reconhece os seguintes comandos:
Ingls Portugus Ao desencadeada
song msica Habilita a gramtica de ditado para que se dite o nome da msica
desejada. Quando o usurio disser ok, a msica ser reproduzida.
play tocar Inicia a reproduo do arquivo cujo nome est na caixa de texto
da GUI.
tracks trilhas Mostra a relao de msicas disponveis na gramtica de regras
(habilitada automaticamente).
repeat repetir Habilita a gramtica de ditado e tudo que o usurio disser ser
repetido pelo sintetizador aps a palavra "ok".
ok certo Finaliza o comando repeat ou o comando songs.
say diga Abre uma caixa de dilogo onde o usurio pode escrever uma
sentena para ser lida pelo sintetizador.
collection coleo Entra no modo coleo, exibindo o ltimo diretrio visitado.
resume continuar Faz com que a msica volte a ser reproduzida caso tenha sido
pausada.
up Mais alto Aumenta o volume em 20 %.
down mais baixo Abaixa o volume em 20 %.
kill fechar Fecha o programa.
"nome de arquivo" Qualquer nome de arquivo que seja mostrado pelo comando
tracks faz com que a msica seja tocada.
Tabela 4: Conjunto de comandos da gramtica songsGrammar.
Quando uma msica iniciada, automaticamente a gramtica songsGrammar
desabilitada e a gramtica basicGrammar torna-se operante.

28
- basicGrammar: gramtica que define um conjunto de comandos bsicos utilizados
apenas quando uma msica estiver sendo tocada. Estes comandos foram definidos pois
quanto mais complexa a gramtica maior processamento necessrio para tratar qualquer
entrada de som e, com a msica tocando, isto se reflete em falhas na reproduo dos
arquivos. Esta segunda gramtica, portanto, limita ao mximo o nmero de comandos que
podem ser ministrados diminuindo a carga de processamento durante a reproduo.
Ingls Portugus Ao desencadeada
Play tocar Reinicia a reproduo do arquivo cujo nome est na caixa de texto
da GUI.
Stop parar Interrompe a reproduo da msica que est sendo tocada e habilita
a gramtica songsGrammar para que outra msica seja ordenada.
Pause pause Pausa a reproduo e habilita a gramtica songsGrammar para que a
reproduo continue (com o comando resume) ou para que outra
msica seja ordenada.
Up mais alto Aumenta o volume em 20 %.
Down mais baixo Abaixa o volume em 20 %.
Back para trs Volta a reproduo da msica em 10 % de seu tempo de reproduo.
For para frente Adianta a reproduo da msica em 10 % de seu tempo de
reproduo.
Kill fechar Fecha o programa.
Tabela 5: Conjunto de comandos da gramtica basicGrammar.

29
modo coleo: o usurio cria um subsistema de arquivos, organizando suas msicas em
diretrios e subdiretrios e este subsistema pode ser navegado utilizando-se comandos de
voz. Este modo de operao utiliza uma nica gramtica de regras denominada
dirEntriesGrammar, contendo todos os comandos que podem ser ministrados junto com os
nomes das entradas de um determinado diretrio. Aqui a dinmica da gramtica de regras
utilizada habilitando-se uma a uma as regras que so teis quando a msica iniciada e
quando interrompida. Alm disso, a cada novo diretrio examinado, a gramtica
redefinida e recarregada para que seus arquivos sejam comandos vlidos para a gramtica.

Ingls Portugus Ao desencadeada


Play tocar Inicia (ou reinicia) a reproduo do arquivo cujo nome est na
caixa de texto da GUI.
Stop parar Interrompe a reproduo da msica que est sendo tocada e
redefine as regras.
Pause pause Pausa a reproduo e redefine as regras.
Back para trs Volta a reproduo da msica em 10 % de seu tempo de
reproduo.
For para frente Adianta a reproduo da msica em 10 % de seu tempo de
reproduo.
Up mais alto Aumenta o volume em 20 %.
Down mais baixo Abaixa o volume em 20 %.
Close fim Sai do modo coleo.
Previous anterior Acessa o diretrio pai do diretrio corrente.
Resume continuar Faz com que a msica volte a ser reproduzida caso tenha sido
pausada.
Kill fechar Fecha o programa.
"nome de arquivo" Qualquer nome de arquivo que esteja sendo mostrado na lista de
arquivos desencadeia sua reproduo.
Tabela 6: Conjunto de comandos da gramtica dirEntriesGramamar.

30
O programa funciona perfeitamente tanto em portugus como em ingls. Para cada
lngua necessrio instalar a correta verso do ViaVoice e substituir os arquivos que
definem a gramtica, existindo verses em portugus e em ingls.

31
5. Elaborao e desenvolvimento do tutorial

O tutorial, quarta etapa prevista pelo projeto de iniciao cientfica, foi elaborado
visando possibilitar o aprendizado da tecnologia estudada durante o perodo em questo.
Rico em ilustraes e cdigos exemplos totalmente funcionais, desenvolveu-se com o
objetivo de tornar instantnea a possibilidade de desenvolvimento de novos aplicativos
acessados via voz, diminuindo a fronteira entre a teoria e a prtica, abordadas
concomitantemente no decorrer do trabalho.

Em dois idiomas figura 5, o portugus nativo para o bolsista, e o ingls que ,


informalmente, a lngua oficial da Internet, o curso oferecido foi desenvolvido na
linguagem de marcao html com funcionalidades adicionais conseguidas atravs da
linguagem de script denominada Javascript. Finalizado, teve sua publicao a partir do ms
de Janeiro do ano de 2001 na grande rede de computadores atravs da url:
http://java.icmc.sc.usp.br/research/voice. O ttulo escolhido Tutorial Speech
Development Kit Java Technology a sntese do documento que resume o trabalho
realizado no decorrer da Iniciao Cientfica, apresentando de maneira sucinta informaes
essencialmente tcnicas de um novo conceito de programao e de um novo paradigma de
comunicao homem-mquina.

Figura 5 Pgina inicial do tutorial.


http://java.icmc.sc.usp.br/research/voice

32
O design teve especial ateno para a apresentao do contedo, procurando aliar
uma aparncia agradvel com uma linguagem didtica, foi projetado com sesses bem
definidas e ilustraes claras e simples. Item a item os tpicos tratados demonstram, e no
apenas apresentam, como se d a utilizao do SDK Java. Preenchido com dezenas de
exemplos prticos totalmente funcionais tanto no ambiente Windows como no ambiente
Linux e em ambas as lnguas: portugus e ingls. possvel ao leitor fixar novos conceitos
analisando cdigo funcional ao trmino de cada captulo.

5.1. Contedo

Os dados apresentados no curso foram extrados em sua maioria da documentao da


API de programao Java presente na distribuio do software, sendo o restante conseguido
a partir da inferncia realizada sobre os resultados dos muitos experimentos efetuados, os
quais vrios so apresentados no documento. Dados tambm puderam
ser recolhidos no material oferecido pela empresa IBM detentora da
tecnologia, notadamente o frum de discusses on line, onde
pesquisadores de todo o mundo trocam informaes sobre suas
experincias.

Para a estruturao do material foram definidos os tpicos


principais considerados essenciais para a compreenso e fixao do
curso. Em ordem seguem os nove temas escolhidos: Introduo,
Arquitetura, Sintetizadores, JSML, Reconhecedores, JSGF, Ouvidores,
Resultados e A API, como pode ser observado na figura 6:

Figura 6 Menu dos tpicos que constituem o tutorial.

33
1) Introduo: introduzindo a API SDK Java e apresentando os conceitos fundamentais
de seu funcionamento, este tpico faz um resumo da tcnica de programao
possibilitada pelo software. O reconhecimento e a sntese so introduzidos ao leitor
estabelecendo inicialmente a natureza do contedo que ainda est por vir e traando os
objetivos a serem alcanados com o guia.
2) Arquitetura: o contedo deste tpico foi elaborado pelas experincias realizadas com o
software. As concluses se tornaram evidentes ao se examinar o funcionamento dos
aplicativos em dois ambientes distintos, no Windows e no Linux. Decorrendo assim a
esquematizao da arquitetura da tecnologia em dois nveis de detalhamento:

- simplificada: observando-se o funcionamento do software desenvolvido esta


primeira arquitetura pde ser descrita definindo-se os papis dos principais
componentes de seu funcionamento: o hardware de som, o sistema operacional, a
aplicao Engine e, no topo desta estrutura, uma aplicao SDK Java desencadeando
o processamento programado pelo desenvolvedor, como se v na figura 7.

Figura 7 Arquitetura simplificada apresentada no tutorial.

34
- completa: estendendo a esquematizao simplificada, realizada uma aproximao
nos detalhes da aplicao SDK Java mencionada na arquitetura da figura 7. Assim
so apresentados os componentes Reconhecedores, Sintetizadores, as Gramticas (de
ditado e de regras), os Ouvidores (de reconhecimento, da sntese, do engine, das
gramticas e do udio) e a Central de Processamento. demonstrada, desta maneira,
a disposio destes elementos observando-se a tcnica de desenvolvimento das
aplicaes orientadas voz, isto mostrado na figura 8.

Figura 8 Arquitetura completa apresentada no tutorial.

3) Sintetizadores: neste item apresentada a entidade Sintetizadora (Objeto Synthesizer)


definindo-se sua funo e como se d a criao atravs da Interface Engine, a
responsvel pelo acesso dos aplicativos Java aos executveis ViaVoice. So vistas suas
duas formas de criao e em seguida seus principais mtodos que realizam a sntese de
voz. Ainda so revisados os Ouvidores de Objetos Speakable, capazes de interpretar o
que a mquina, e no o usurio, pronuncia e por fim explanado o conceito da fila de
itens que o conjunto dinmico de elementos a serem sintetizados.

35
4) JSML: nesta etapa compreendida a linguagem de marcao que auxilia a obteno de
uma sntese mais natural realizada pela mquina. So mostrados sua funo, utilizao,
posicionamento e possibilidades. Por fim, entrando na parte tcnica do conceito so
detalhadas as oito principais tags para marcao do texto da sntese.
5) Reconhecedores: finalmente introduzida a tcnica do reconhecimento, que torna
possvel a interao homem-mquina atravs da voz. Aqui so mostrados o esquema de
operao dos Reconhecedores (Objetos Recognizer), a definio dos conceitos de
Resultados (Objetos Result) e o nvel de confiabilidade, um dos principais atributos dos
reconhecedores. ensinado como realizar a criao de um objeto desta natureza atravs
da Central de processamento e, em seguida, a importncia e o papel das gramticas de
ditado e de regras.

6) JSGF: complementando o tpico anterior faz-se a exposio da gramtica de


formatao de regras, a JSGF, com a qual se determina o funcionamento das gramticas
de regras ao especificar, dinamicamente, os comandos que sero compreendidos pelo
computador. So vistos: sua estrutura e seus principais usos.

7) Ouvidores: o maior dos captulos do curso apresenta em detalhes todos os ouvidores da


API de programao em estudo. Os ouvidores so uma caracterstica marcante das
tcnicas de programao orientadas a eventos e, atravs destes, possvel fazer com
que a mquina responda ao usurio, neste caso, atravs da voz. Temos:
- Ouvidor EngineListener: permite o tratamento dos eventos gerados durante o ciclo
de funcionamento da aplicao Engine.

- Ouvidor SynthesizerListener: trata eventos gerados durante o ciclo de funcionamento


da entidade Sintetizadora, isto , da funo de sntese do Engine.
- Ouvidor SpeakableListener: recebe eventos gerados pela sntese, isto , pelos
fonemas pronunciados pela mquina. capaz de fazer com que a mquina interprete
o que est sendo sintetizado.
- Ouvidor RecognizerListener: trata eventos gerados durante o ciclo de funcionamento
da entidade Reconhecedora, isto , da funo de reconhecimento do Engine.

- Ouvidor RecognizerAudioListener: ouvidor especfico para eventos operacionais de


udio, como o volume e a presena, ou no, de som.

36
- Ouvidor GrammarListener: ouvidor utilizado para controle dos eventos gerados
pelas operaes efetuadas em um objeto Grammar e, consequentemente, em seus
objetos herdeiros: RuleGrammar e DictationGrammar.
- Ouvidor ResultListener: este o principal dos ouvidores da tecnologia SDK Java, ele
responsvel por interceptar e interpretar os eventos gerados pelos resultados
(Results) criados pelos reconhecedores em parceria com as gramticas, tanto de
regras como de ditado, perante a entrada de udio. atravs da implementao desta
interface que as aplicaes so capazes de "ouvir" o que est sendo dito pelo usurio
e determinar o processamento adequado em funo do que foi entendido.

8) Resultados: os objetos deste tipo (Objetos Result) so fundamentais para a


compreenso do funcionamento e utilizao da API, eles so o resultado do
reconhecimento de voz e este captulo procura cobrir suas propriedades, variaes e
utilizao. apresentada uma ilustrao do ciclo de reconhecimento abrangendo
maiores detalhes sobre os resultados criados nos diversos instantes do processamento.
Tambm neste item so mostrados, atravs de ilustraes figura 9 os ciclos de
funcionamento do Engine, dos Sintetizadores, Reconhecedores e o ciclo de
Reconhecimento, no qual o udio captado e processado. Com os ciclos apresentados,
os ouvidores puderam ser explicados com maior clareza, sendo o contedo aprimorado
atravs dos exemplos prticos presentes para cada um dos subitens.

9) A API: na finalizao os conceitos vistos so posicionados em relao API SDK Java,


com uma breve descrio dos trs pacotes que a compem: o pacote javax.speech a
partir do qual as funes de sntese (javax.speech.synthesis) e reconhecimento
(javax.speech.recognition) so implementadas.

37
Figura 9 O reconhecedor, seu ciclo e eventos apresentados no captulo Resultados.

5.2. Design

Visando tornar o tutorial amigvel e visivelmente agradvel, o design teve especial


ateno, desde a combinao de cores at a disposio dos links, a elaborao das imagens
e a ordem de apresentao. Todos estes elementos foram projetados para que se tivesse uma
apresentao simples, atraente e organizada. Na figura 10 podemos observar o esquema de
cores, macissamente utilizando a cor azul.
Pode-se observar a disposio esquerda dos links dos tpicos do curso, abaixo e
direita esto links extras que possibilitam avanar os captulos atravs dos intuitivos links
em forma de flechas, ou acess-los aleatoriamente atravs dos links de cada parte do
documento.

38
Figura 10 Viso geral da interface das pginas do tutorial.

Os exemplos so assinalados atravs da imagem apresentada na figura 11, tornando


clara a presena dos cdigos demonstrativos no decorrer do contedo apresentado.
Ilustraes trabalhadas foram usadas como se observa nas figuras 8, 9 e 10, enriquecendo
os conceitos apresentados ao mostrar esquemas visuais que explicam a arquitetura e o ciclo
de processamento dos elementos dos pacotes de software.

Constantes referncias documentao da API SDK Java so utilizadas, com


inmeros links para os tpicos fonte utilizados na pesquisa. Isto observado na figura 11,
onde tambm se nota que o leitor no remetido para fora do documento quando acessa
essa documentao adicional, os links abrem uma nova janela do browser em questo para
que se possa continuar a leitura em meio a consultas na documentao.

39
Figura 11 H uma presena constante de links para cdigo exemplo.

Figura 12 Em todo o documento existem links para a documentao principal da API.

40
6. Reviso dos pacotes Java para reconhecimento de voz

No desenvolvimento final do projeto, o pacote de programao em estudo pde ser


mais bem entendido e utilizado em atividades prticas. Em consequncia, novas
descobertas a respeito da utilizao da API foram realizadas tornando possvel uma melhor
elaborao do item 2 do projeto - Anlise dos pacotes Java para reconhecimento de voz.

O reconhecimento, a funo mais complexa da tecnologia apresentou possibilidades


que foram notadas aps um maior tempo de utilizao da API e, algumas destas
caractersticas, so relatadas a seguir.

6.1. O nvel de confiabilidade do reconhecedor

Quando o reconhecedor cria um novo resultado, ele associa a este objeto um valor
entre 0.0 e 1.0 indicando o quanto o processamento do som foi bem sucedido, isto , o
quanto a entrada de som correspondeu exatamente a uma das possibilidades presentes na(s)
gramtica(s) associada(s) ao reconhecedor.

Ao contrrio do que se pensava, e do que foi relatado no relatrio prvio do projeto,


o sucesso (resultAccepted) ou fracasso (resultRejected) do reconhecimento no
determinado por um patamar nico. De fato, este ndice pode ser estabelecido atravs do
mtodo setConfidenceLevel que aceita um valor variando de 0.0 at 1.0, sendo o valor
padro igual a 0.5.
Assim, o nvel de confiabilidade o limite entre o que aceito e o que rejeitado,
lembrando que ambas, rejeies e aceitaes, so reportadas e disponibilizadas como
eventos de reconhecimento cabendo ao desenvolvedor decidir que processamento
desencadear perante um ou outro. Desta maneira um nvel de confiabilidade mximo far
com que a maioria dos resultados sejam tratados como eventos de resultRejected,
resultados indicando que o reconhecimento no foi realizado de maneira suficientemente
correta. E um nvel de confiabilidade mnimo tem efeito contrrio: todos os resultados so
tratados como aceitos, resultAccepted.

6.2. O nvel de sensibilidade do reconhecedor

O nvel de sensibilidade diz respeito ao volume da entrada de som. Esta classificada


com um valor que vai de 0.0 at 1.0, respectivamente referente aos sons mais baixos e mais
altos. O nvel de sensibilidade o limite entre o som que deve ser processado e o que deve
ser ignorado.

41
Assim, em ambientes ruidosos deve-se estipular uma sensibilidade baixa fazendo
com que o rudo de fundo, mais baixo do que a voz entrando direto no microfone, seja
ignorado pelo reconhecedor, mas ao mesmo tempo exigindo que o usurio fale mais alto.
Uma sensibilidade mais alta deve ser utilizada apenas em ambientes de silncio, onde no
haja rudo competindo com a voz do usurio pela entrada de som.
A seguir temos o exemplo 13 com cdigo demonstrativo de como definir as
propriedades de confiabilidade e sensibilidade.

recognizer.suspend(); //o reconhecimento suspenso


recognizer.pause(); //o engine pausado
//so definidas as novas propriedades
recognizerProperties.setConfidenceLevel(new Float(0.0).floatValue()); //confiabilidade
recognizerProperties.set setSensitivity(new Float(1.0).floatValue()); //sensibilidade
recognizer.commitChanges(); //valida as alteraes, despausa o engine
recognizer.resume(); //retorna o reconhecimemto
Exemplo 13: Cdigo exemplo de como se definir os nveis de confiabilidade e sensibilidade do
reconhecedor.

6.3. A captura de udio do reconhecedor

Uma funo importante dos reconhecedores a possibilidade da captura automtica


do udio que gera um determinado resultado. Com esta propriedade definida, alm das
informaes padres relevantes a um resultado (a gramtica responsvel pelo
reconhecimento, o token associado e a representao do fonema) possvel ter
disponibilizada a gravao do som que o gerou, isto , a gravao da voz do usurio para
posterior reproduo. Este som armazenado na forma de um objeto java.applet.AudioClip
que pode ser recuperado durante o tratamento dos eventos de reconhecimento, temos um
cdigo ilustrativo no exemplo 14.

42
...
static ResultListener dictationListener = //implementa um ouvidor de resultados
new ResultAdapter( ) {
public void resultUpdated(ResultEvent e) { //tratamento de resultados aceitos
FinalResult result = (FinalResult) e.getSource( );
if(result.isAudioAvailable( )) {
AudioClip audioClipVoz=result.getAudio( ); //recupera o udio
AudioClipVoz.play( ); //reproduz o udio
}
...
}
...
recognizerProperties = recognizer.getRecognizerProperties();
recognizerProperties.setResultAudioProvided(true);
...
Exemplo 14: Cdigo exemplo de como utilizar a captura e reproduo do udio reconhecido.

6.4. Estatsticas de reconhecimento

Como requerido na avaliao do relatrio parcial (agosto de 2000), seguem dados


estatsticos comparativos sobre o funcionamento das duas modalidades do reconhecimento:
utilizando gramtica de ditado e utilizando gramtica de regras, em portugus e ingls norte
americano ambas no ambiente Windows.

Os dados foram conseguidos submetendo o software ao reconhecimento de palavras


isoladas e de frases inteiras. Para cada coleta foram utilizados 30 elementos distintos,
apresentados nas tabelas 11 e 12 do Apndice C, lidos sequncialmente. Aps o
processamento de cada item, um resultado positivo era anotado caso o software
compreendesse o item lido apresentando sua forma escrita na tela. Os resultados
conseguidos esto listados nas tabelas 7 e8.
Em portugus:

Funcionamento Palavras isoladas Frases inteiras

Gramtica de ditado 11/30 ~= 37 % 8/30 ~= 27 %

Gramtia de regra 28/30 ~= 93 % 27/30 = 90 %

Tabela 7 - Avaliao comparativa das modalidades de reconhecimento do software IBM ViaVoice


em portugus, base da API SDK Java.

43
Em ingls norte americano:

Funcionamento Palavras isoladas Frases inteiras

Gramtica de ditado 9/30 = 30 % 7/30 ~= 23 %

Gramtia de regra 22/30 ~= 73 % 20/30 = 67 %


Tabela 8 - Avaliao comparativa das modalidades de reconhecimento do software IBM ViaVoice
em ingls, base da API SDK Java.

Percebe-se que a tecnologia ainda no est aperfeioada e que indubitavelmente a


utilizao da gramtica de regras teve uma melhor performance neste teste simples. No
entanto, deve-se notar que cada modalidade de funcionamento tem sua funo especfica,
ministrar um ditado aplicao (gram. de ditado) ou submeter-lhe comandos (gram. de
regras), no sendo possvel compar-las diretamente.

7. A Aplicao Verificador de Pronncia

Como ltima atividade prtica realizada durante a iniciao cientfica procurou-se


desenvolver uma aplicao que fosse capaz de utilizar e demonstrar todas as
funcionalidades oferecidas pela tecnologia. Para tanto foi projetado, e realizado
posteriormente, o Verificador de Pronncia.

7.1. O Funcionamento

O aplicativo trata-se de um software capaz de verificar e aperfeioar a pronncia do


usurio. A verificao foi testada nos idiomas Portugus e Ingls, no entanto, todos os
idiomas suportados pelas diferentes verses do IBM ViaVoice podem ser usados: portugus
brasileiro, francs, alemo, italiano, japons, espanhol, ingls norte-americano e ingls
britnico. A nica necessidade a alterao de um arquivo texto que contm as sentenas
que o usurio ir ler para ter sua pronncia verificada.

Ao usurio apresentado um conjunto de frases, as quais devem ser lidas uma aps a
outra. O udio ento gravado e submetido ao processamento da aplicao para que um
parecer a respeito de sua pronncia seja fornecido. Este parecer fornece uma avaliao
permitindo que o usurio acesse dados que possibilitem melhorar sua fala em um
determinado idioma.

44
Aps a leitura de um item, o usurio capaz de escutar sua prpria voz, que foi
submetida avaliao do software. Para perceber seus erros e conhecer a maneira correta
de se pronunciar as frases o software oferece a sntese instantnea das sentenas, atravs do
sintetizador do ViaVoice. Desta forma, comparando as duas pronncias, sua prpria e a da
mquina, o usurio pode aprender a falar qualquer idioma ao qual tenha acesso. Repetindo
os exerccios at que o parecer da aplicao seja positivo indicando a correta entrada de
udio.

7.2. A abrangncia da aplicao

Procurou-se ao mximo utilizar os recursos da tecnologia SDK Java na concepo do


Verificador de Pronncia, nos domnios de sntese e de reconhecimento. Assim:

Sntese: a voz do computador pode ser alterada de todos as maneiras possveis segundo a
API, o volume, as caractersticas da idade e do sexo do sintetizador. Todas as configuraes
podendo ser realizadas graficamente, como se v na figura 13.

Figura 13 A sntese pode ser alterada de inmeras maneiras, incluindo a


idade e o sexo da voz do sintetizador.

45
Reconhecimento: para utilizar todas as possibilidades do reconhecimento h a opo de se
realizar a verificao da pronncia utilizando-se os dois tipos de gramtica exclusivamente.
- Regras: neste modo de funcionamento cada frase a ser pronunciada encarada como
um comando composto por vrias palavras sendo que a compreenso de uma
sentena resulta na confirmao da pronncia correta figura 14 e o contrrio
resulta em fracasso.

Este modo de funcionamento mostrou-se muito eficaz, sendo que uma pronncia correta
por parte do usurio resulta em confirmao de 90% dos casos, aproximadamente.

Figura 14 Perante uma pronncia correta, o software capaz de identificar


a clareza da fala.

46
- Ditado: no modo em que um conjunto bem mais extenso de palavras pode ser
compreendido pelo computador, cada frase encarada como uma seqncia de
palavras ditadas pelo usurio, devendo estas palavras ser as mesmas que a aplicao
tem armazenado. A correta pronncia conseguida comparando-se o que foi
compreendido pelo computador, durante o ditado da frase, com a frase em questo
esperada pelo software, palavra por palavra. necessria a correspondncia de todos
os elementos.
Esta variao de funcionamento mostrou-se inadequada para a aplicao, mesmo a
pronncia adequada poucas vezes, apenas 27% aproximadamente, resulta na confirmao
da pronncia.

Obs.: considerada pronncia adequada ou correta, a pronncia de uma pessoa cuja lngua
nativa seja o idioma avaliado pela aplicao. Os dados de aproveitamento, acima
mencionados, de cada modalidade de funcionamento foram conseguidos com o software
operando com a lngua portuguesa, nativa do interlocutor.

Alm da possibilidade de utilizao dos dois tipos de gramtica ainda possvel


alterar o nvel de sensibilidade e a exigncia de pronncia figura 15 do reconhecedor.

Figura 15 possvel, entre outras configuraes, alterar o nvel de


confiabilidade (confidence level) exigido pelo software.

47
8 Participao do VIII Simpsio Internacional de Iniciao Cientfica da USP

Como atividade relevante desenvolvida durante o perodo da bolsa temos a


participao do Oitavo Simpsio Internacional de Iniciao Cientfica da USP (VIII
SIICUSP), cujas apresentaes da rea de cinicas exatas se deram na cidade de So Carlos
no ms de Novembro de 2000.

Para a apresentao dos resultados do trabalho foi preparado um documento


desenvolvido com auxlio da aplicao Microsoft PowerPoint para ser impresso e exposto
durante o tempo de exposio do Simpsio. O cartaz foi impresso com as dimenses de
0,85 m de largura por 0,85 m de comprimento em 256 cores e foi apresentado durante 4
horas com apreciao de professores designados pela comisso organizadora. O trabalho foi
aprovado na apreciao e um resumo do projeto est disponibilizado no CD distribudo aos
participantes do Simpsio.
Uma cpia do documento preparado para a apresentao pode ser vista na figura 16.

Figura 16 Apresentao preparada para participao do Oitavo Simpsio


Internacional de Iniciao Cientfica da USP.

48
9. Apresentao final do Tutorial Speech Development Kit Java Technology
A concluso da bolsa de Iniciao Cientfica e principal resultado esperado em
decorrncia dos trabalhos a apresentao do tutorial desenvolvido com a finalidade de
transmitir os conhecimentos adquiridos durante a pesquisa e permitindo que outros
pesquisadores possam utilizar a nova tecnologia estudada. A apresentao prevista para o
primeiro semestre de 2001, no incio do perodo letivo visando atingir um nmero maior de
alunos com disponibilidade e interesse.
O mini-curso ser ministrado nas dependncias do ICMC-USP estando disponvel
para todo o campus de So Carlos, para alunos do mestrado, doutorado e graduao dos
cursos de computao, engenharia, fsica, qumica e matemtica. Para ministrar o tutorial
foi preparada uma apresentao (desenvolvida com auxlio da aplicao Microsoft
PowerPoint) figura 17.

Figura 17 Apresentao preparada para ministrar o Tutorial Speech


Development Kit Java Technology.

49
Apndice A - Java Speech Markup Language
Trata-se de uma linguagem de marcao derivada da linguagem, tambm de
marcao, Extendend Markup Language (XML). utilizada para descrever entrada de
texto nos sintetizadores da API de programao IBM Speech Development Kit Java
Technology. Seus elementos so capazes de prover informaes detalhadas sobre como
pronunciar o texto a que o sintetizador est sendo submetido.
Esto includos elementos que descrevem a estrutura de um documento, a pronncia
das palavras e das frases, alm de marcadores de texto, elementos de controle de nfase,
ritmo, freqncia, volume, etc. Uma marcao adequada aumenta a qualidade e a
naturalidade do texto sendo sintetizado.
Ao todo so oito elementos:
Elemento Descrio Exemplo
PARA Determina que o texto marcado trata- <PARA>Este um curto pargrafo. </PARA>
se de um pargrafo. <PARA>O assunto mudou, ento este um
novo pargrafo.</PARA>

SENT Determina que o texto marcado trata- <PARA><SENT>At, logo.</SENT> <SENT> Te vejo
se de uma sentena. logo mais.</SENT></PARA>
SAYAS Especifica como o texto sendo <SAYAS SUB=0x0>zero a zero</SAYAS>
marcado deve ser pronunciado.
EMP Determina com qual nfase o texto <EMP LEVEL=reduced>Cochichar em pblico falta de
ser pronunciado. Os valores podem educao.</EMP>
ser: strong, moderate, none, or
reduced.
BREAK Determina uma parada durante a <BREAK MSECS="300"/>
sntese. Pode ser definido em
milissegundos ou em tamanho: <BREAK SIZE="small"/>
none, small, medium, or
large.
PROS Determina atributos do discurso: <PROS RATE= 50 VOL=+80%>Eu vou falar alto e
volume (VOL nmero absoluto entre claro, s mais uma vez.</PROS>
0.0 e 1.0), ritmo (RATE em palavras
por minuto), freqncia (PITCH em
hertz), Intervalo de Freqncia
(RANGE em hertz).
MARKER Quando este elemento alcanado, ao Resposta <MARKER MARK= sim_nao /> sim
sintetizador realizada uma requisio ou no.
de notificao.

ENGINE Fornece informaes especficas para O sapo faz <ENGINE ENGID= Sapo_Sint1.0"
o(s) sintetizador(es) identificado(s) DATA= &lt;ribbit=1> sintetizador
pelo ENGID , que pronunciaro o que inadequado </ENGINE>
est definido em DATA. Do contrrio
pronunciam o que est marcado.
Tabela 9: Os elementos da JSML.

50
Apndice B - Java Speech Grammar Format
Os sistemas de reconhecimento de voz do ao computador a habilidade de escutar o
que o usurio fala e determinar o que foi dito. As tecnologias correntes ainda no suportam
reconhecimento de voz sem restries: a habilidade de escutar qualquer dilogo em
qualquer contexto e compreender corretamente. Para alcanar um grau de acerto razovel e
tempo de resposta factvel, os reconhecedores atuais limitam o que pode ser ouvido atravs
do uso de gramticas.
A JSGF define uma maneira de descrever o que denominado de gramtica de
regras. Utiliza uma representao textual que pode ser lida e editada tanto pelos
desenvolvedores como pelos programadores.
gramticas: so compostas por um nome e por um conjunto de regras.Todas as gramticas
definidas pela JSGF devem ter um nome. Ex.:
grammar comandosInicias;
<regra1> = ...;
<regra2> = ...;
...
regras: cada uma das regras deve ter um nome, um token representando o que o usurio
pode dizer e um identificador que passado para a aplicao identificando a regra
correspondente ao que foi reconhecido na entrada de udio.

<regra1> = abrir {open};

Identificador da regra junto aplicao (opcional)

Token identificando o que pode ser dito

Nome da regra

Figura 18: Estrutura de uma regra.

H uma grande versatilidade na definio do que o usurio pode dizer. As regras


podem ser especificadas de vrias maneiras:

51
Uso Exemplo O que se pode dizer
Apenas palavras <regra1> = abrir {open}; abrir
Frases inteiras <regra2> = abra o programa abra o programa
(open);
Alternativas <regra3> = abrir | abra o programa abrir ou abra o programa
{open};
Opes <regra5> = [por favor] abrir; abrir ou por favor abrir
Uma regra pode <regra6> = <regra5> {open}; O mesmo que a regra5
referenciar outra
regra
Operador de <regra7> = 13579* vezes; 1, 3, 5, 7, 9, 11,
fechamento * 13, 99, 93, ou qualquer
algarismo (inclusive nenhum)
formado por 1, 3, 5, 7 e 9 em
qualquer ordem seguido da
palavra vezes.
Operador de <regra8> = 13579+ vezes; Neste caso obrigatrio que um
fechamento + nmero seja dito antes da
palavra vezes
Tabela 10 - Utilizao da Java Speech Grammar Format - JSGF.

Atravs da combinao destas representaes, podemos determinar conjuntos


especficos de palavras ou frases que definiro a interface entre a aplicao e o usurio.

52
Apndice C Dados utilizados para a coleta de estatsticas do reconhecimento
ndice Palavras Frases
1 Gato Errar humano.
2 Bandeira Acidentes acontecem.
3 Carro Educao tudo.
4 Lancheira O sucesso ser feliz.
5 Cidade Brasil acima de tudo.
6 Brasileiro O avio o transporte mais seguro.
7 Computao Antes s do que mal acompanhado.
8 Pesquisa Vale mais um fato do mil palavras.
9 Fapesp A Fundao de Amparo Pesquisa do estado de So Paulo.
10 Estudar Quem cala consente.
11 Domingo Que Deus nos abenoe.
12 Escrever O cachorro o melhor amigo do homem.
13 Relgio Ler o melhor lazer.
14 Universidade A terra azul.
15 Televiso Caem muitas chuvas em Janeiro.
16 Trabalho Todo trabalho honesto digno.
17 Professor Quanto maior o homem maior a queda.
18 Memria O petrleo move o mundo.
19 Calculadora A vida incerta, primeiro a sobremesa.
20 Relatrio A TV brasileira no tem tica.
21 Cabea As pesquisas avanam rapidamente.
22 Direo Todo homem tem direito sade.
23 Quarenta Ao vencedor as batatas.
24 Natao A Internet est interligando o mundo.
25 Caneta O mundo agora digital
26 Mochila A paz fundamental
27 Segurana Da gua depende a vida.
28 Criana Pergunte antes, no se arrependa depois.
29 Acontecer Experincia sabedoria.
30 Pessoal A sade brasileira est crtica.
Tabela 11 - Os elementos utilizados para coleta de dados estatsticos em portugus.

53
ndice Palavras Frases
1 Cat Humans make mistakes.
2 Sword Accidents happen.
3 Car The seas are overflowing.
4 Lunch Success is to be happy.
5 Citizen USA above everything.
6 American The airplane is a safety transport way.
7 Computation Better alone than a bad company.
8 Research A fact is worth one thousand words.
9 Juice After months finally we made it.
10 Studying Men reached the moon in 1969.
11 Sunday May God bless us.
12 Write Dog is mens best friend.
13 Clock To read is the best hobby.
14 University The earth is blue.
15 Television January is very rainy.
16 Work Every honest work is worthy.
17 Teacher Bigger the man, bigger the fall.
18 Memory The petroleum moves the world.
19 Calculator Life is uncertain, have desert first.
20 Table The Brazilian TV has no ethics.
21 Head Research is advancing quickly.
22 Money Java is becoming the number one language.
23 Forty To the winner, potatoes.
24 Soccer Internet is intercommunicating the world.
25 Pen Now the world is digital.
26 Bag Peace is fundamental.
27 Security Life depends on water.
28 Children Ask before, no to repent later.
29 Strawberry Experience is knowledge.
30 People The Brazilian health got troubles.
Tabela 12 - Os elementos utilizados para coleta de dados estatsticos em ingls.

54
Referncias

1. IBM alphaWorks
[http://www.alphaworks.ibm.com/aw.nsf/discussion?ReadForm&/forum/speechforjava.nsf/
discussion?createdocument].
2. Java Speech API Specification
[http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-doc/index.html]
3. ViaVoice Dictation for Linux
[http://www-4.ibm.com/software/speech/enterprise/collateral/dictationforlinux.pdf]
4. ViaVoice SDK, Java Technology Edition
[http://www-4.ibm.com/software/speech/dev/sdk_java.html]
5. IBM ViaVoice Speech Recognition SDK for Linux
[http://www-4.ibm.com/software/speech/enterprise/collateral/sdkforlinux.pdf]
6. Java Speech API Programmers Guide
[http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-guide/index.html]
7. Java Speech Markup Language Specification
[http://java.sun.com/products/java-media/speech/forDevelopers/JSML/index.html]
8. Java Speech Grammar Format Specification
[http://java.sun.com/products/java-media/speech/forDevelopers/JSGF/index.html]

55

Você também pode gostar