Esse artigo faz parte da revista Java Magazine edição 04. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler essa revista em PDF.imagem_pdf.jpg

JavaSpeech

Reconhecimento e sintetização de voz com Java

O reconhecimento de comandos de voz por computadores sempre fascinou o Homem. Vários filmes apresentam a possibilidade de conversar com um computador, ditar um texto ou emitir comandos utilizando a voz.

Na outra direção, imagine um programa complexo que deve se comunicar com o usuário através de sons. Pense como seria desgastante descrever todas as mensagens possíveis para se gravar em .wav, por exemplo. É por isso que jogos como o FIFA fazem uso de sintetizadores de voz para as narrações das partidas de futebol. Existem ainda muitos outros benefícios como a possibilidade de pessoas com limitações físicas poderem ouvir seus e-mails ou ditar cartas.

Varias empresas trabalham intensamente para permitir esta façanha. Um bom exemplo é o Via Voice da IBM, um programa comercial que permite, entre outras coisas, ditar cartas em produtos como o Microsoft Office. Outras empresas como a Microsoft e a Dragon System oferecem ótimos sistemas, ou engines, para tratamento de voz.

Tecnologias e implementações

A tecnologia de fala computadorizada pode ser dividida em duas categorias: reconhecimento de voz e sintetização de voz.

Reconhecimento de voz habilita o computador a ouvir uma linguagem falada e determinar o que foi dito, ou seja, é o processo de converter em texto um som contendo palavras. Sintetização de voz é o processo inverso, transformando texto em som. É freqüentemente chamado de text-to-speech.

Java não fica atrás nesta área. A Sun definiu uma especificação que representa uma interface genérica para um engine, a Java Speech API (JSAPI). A JSAPI não implementa o engine em si, funcionando apenas como uma camada entre seus programas e os engines desenvolvidos por terceiros. Os engines podem ser soluções em hardware ou software e podem estar na máquina local ou em um servidor. São eles que realmente trabalham com a placa de som capturando as falas ou sintetizando palavras.

Ao contrário do que acontece com outras APIs Java, não é fornecida uma implementação de referência da Java Speech API. Em vez disso, no site oficial da JSAPI (veja links) fornece uma lista de produtos e empresas que implementam a API. Algumas implementações são relacionadas na Tabela 1.

Na Figura 1 podemos ver o poder da JSAPI. Ela possibilita que nossos programas utilizem qualquer engine de qualquer empresa e em qualquer sistema operacional sem necessidade de alterar uma única linha de código e usufruindo de toda a potencialidade do Java.

 

Produto

Descrição

FreeTTS

 

Sintetizador de voz de código aberto totalmente escrito em Java.

IBM Speech for Java

Implementação da JSAPI baseada no IBM Via Voice.

The Cloud Garden

Implementação desenvolvida para funcionar com engines baseados na SAPI da Microsoft. Funciona com os produtos IBM ViaVoice, Dragon NaturallySpeaking  e outros.

Conversa Web 3.0

Um browser habilitado para funcionar com comandos de voz.

Tabela 1. Algumas implementações da JSAPI

Neste artigo vamos mostrar exemplos utilizando a implementação da JSAPI da Cloud Garden, atualmente na versão 1.5, chamada de CGJSAPI, além do engine da Microsoft, o SAPI, atualmente na versão 5.1. No quadro “Enquanto isso no mundo do software livre” mostramos outra implementação, o FreeTTS.

 

Figura 1. Arquitetura de um programa usando Java Speech API

Montando o ambiente

Vamos desenvolver um exemplo para entender melhor o funcionamento da JSAPI. Primeiro precisamos conseguir as ferramentas necessárias. Baixe a implementação da JSAPI em www.cloudgarden.com e o SDK da SAPI da Microsoft em www.microsoft.com/speech. Você pode utilizar alternativamente o Via Voice da IBM no lugar do SDK da Microsoft.

Instalação

1. Instale o SDK da Microsoft ou o Via Voice de acordo com as instruções dos respectivos fabricantes.

2. Descompacte o arquivo jar da Cloud Garden ou execute o instalador com o comando:

 

java -jar jsapi10-cg150-free.jar

 

3. Verifique as configurações de CLASSPATH descritas no arquivo installation.html do diretório da JSAPI da Cloud Garden. Pronto! Você já pode rodar os programas de teste fornecidos pela Cloud Garden executando os arquivos TestXXX.bat.

Você também pode configurar o JBuilder ou outro IDE para trabalhar com o JSAPI. Basta definir o arquivo cgjsapi.jar como uma biblioteca e colocar o arquivo cgjsapi150.dll em qualquer diretório listado no PATH do seu ambiente, ou no diretório Windows. O arquivo installation.html, que acompanha o CGJSAPI, descreve com mais detalhes a configuração de IDEs.

Sintetização de voz ...

Quer ler esse conteúdo completo? Tenha acesso completo