Tutorial para funcionamento da JLaPSAPI(1.7.1+) como JAR Este tutorial visa exemplicar de forma simples como utilizar a API e os passos de como configurá-la no computador. 1- Cadastrar reconhecedor Coruja na JVM Crie um arquivo chamado speech.properties na home do usuário, por exemplo: /home/fulano/speech.properties Neste arquivo, insira a seguinte linha: PSAPIRecognizerEngineCentral=br.ufpa.laps.jlapsapi.jsapi.JLaPSAPIEngineCentral 2 – Instalação dos modelos acústico e de linguagem do Coruja Baixe-os na página da JLaPSAPI, tenha um cuidado para baixar a versão correspondente ao modelo para funcionar corretamente. Em seguida, descompacte-os na home do usuário e cheque se a pasta está nomeada como coruja_jlapsapi, não podem haver subpastas. 3 – Copiando arquivos do código fonte Baixe o projeto completo da JLaPSAPI, tenha um cuidado para baixar a versão correspondente ao modelo para funcionar corretamente além do jsapi.jar. Após criar o seu próprio projeto(nomei-o de myproject), crie uma pasta com o nome lib no seu projeto e insira os JARs lá dentro. Além disso crie um pacote dentro do seu projeto com o nome mypackage dentro da pasta src do myproject. Dentro do projeto com código fonte da jlapsapi, na pasta test, dentro do pacote br.ufpa.laps.jlapsapi.recognizer, copie as classes SimpleRecognition.java, Listener1.java e Listener2.java e cole na pasta mypackage. No entanto, renomeie na primeira linha do arquivo br.ufpa.laps.jlapsapi.recognizer por mypackage. Na raiz do projeto da JLaPSAPI existe um arquivo chamado sample.grammar, copie-o e cole na raiz do myproject. Em seguida adeque o diretório do arquivo na instância do objeto FileReader da classe SimpleRecognition(algo assim: System.getProperty(“user.home”)+"/workspace/myproject/sample.grammar". 4 – Rodar projeto no terminal 4.1 – Compilação Na pasta src do seu projeto, você deverá estar em um diretório parecido com esse logo abaixo, lembre-se de fazer as devidas adaptações. /home/fulano/workspace/myproject/src Neste diretório, compile o projeto com o comando abaixo(é tudo só em uma linha): javac -classpath ../lib/jsapi.jar:../lib/jlapsapi.jar mypackage/SimpleRecognition.java mypackage/Listener1.java mypackage/Listener2.java 4.2 – Execução Para executar, o projeto contém uma aplicação para testar, tenha certeza de estar em um diretório parecido com esse logo abaixo, lembre-se de fazer as devidas adaptações.. /home/fulano/workspace/myproject/src Em seguida rode o comando abaixo(é tudo só em uma linha): java -classpath ../lib/jsapi.jar:../lib/jlapsapi.jar:. mypackage.SimpleRecognition 5 – Rodar o projeto com um jar da JLaPSAPI Após ter certeza de concluir os passos das seções 1, 2 e 3 execute os passos desta seção. Clique com o botão direito sobre o nome do seu projeto e escolha a opção Properties, 1- No menu Java Build Path, na aba Libraries procure pela opção Add External JARs e clique nela. 2 – Procure pelos JARs que você manipulou na seção 3. 3- Após colocar o jlapsapi.jar e o jsapi.jar, clique em OK. 6 – Execução do Exemplo Neste instante o projeto deve rodar normalmente, você só precisar falar ao microfone e, caso ele esteja bem regulado, a API retornará o texto dito. É comum haver erros, principalmente se houver muito barulho no ambiente. As classes que estão no pacote test do código fonte têm os métodos suportados e como eles são utilizados. A SimpleRecognition mostra como instancia e aloca o reconhecedor, carrega gramáticas e seta as classes ouvintes, além de mostrar alguns métodos comentados que podem ser utilizados da forma como estão lá dispostos, basta descomentar. As classes Listener1 e Listener2 são dois exemplos de classes que são Listeners, além de o próprio SimpleRecognition poder ser também um Listener. Use os Listeners1 e Listener2 para ser mais fácil aprender a fazer o seu próprio Listener. O método addResultListener seta o Listener. Atenção que pode ser usado em objetos Recognizer e/ou Rulegrammar e/ou DictationGrammar. No Recognizer, o resultado de todas as gramáticas são passadas àquele Listener. Os demais objetos escutam somente o resultado da gramática do objeto associado, no caso do exemplo é dic e o gram. O método loadJSGF carrega uma gramática de comando e controle a qual foi escrita dentro de um arquivo. No exemplo é o arquivo sample.grammar contido na raiz do projeto da JLaPSAPI. No código fonte carrega de um diretório diferente por ser mais conveniente para fazer o tutorial mais genérico possível, porém é o mesmo arquivo. Outras linhas de código comentadas contêm métodos já implementados onde é possível pausar ou recomeçar o reconhecimento do ditado ou das novas gramáticas(setEnabled). O método ResultAccepted, dentro dos Listeners, é onde o resultado do reconhecimento chega, no exemplo mostra como imprimir na tela o resultado. 7 – Problemas Comuns Ainda não é possível utilizar gramáticas com comandos compostos como, por exemplo, abrir navegador. Atente em haver as dependências indicadas na página da JLaPSAPI. libpulse-dev, Zlib e sox são as mais comumente ausentes no sistema. Caso não funcione, procure pelo arquivo JuliusLog no diretório /tmp do SO e mande para a lista de discussão para podermos ajudá-lo, além da mensagem no terminal.