domingo, 11 de agosto de 2013

Java Speech

Uma coisa que sempre me pediram era o Java Speech, uma classe que formata a saída de texto para áudio, aqui vou fazer um tutorial para o seu programa em java falar! \o/

Bom primeiramente vamos aos requisitos:

- Saber ou pelo menos ter alguma noção de Java e Orientação a objetos;
- Você tem que ser doido  determinado, afinal java speech é muito treta de achar raro;
- Você tem que ter o windows 7 de preferência, tive alguns problemas em windows 8;
- Caixas de som ou qualquer dispositivo de saída de áudio;
- Para a utilização do Java Speech você precisará  de uma dll, dependendo do seu sistema, se ele é de 32 bits ou de 64 bits; e também precisara de um .jar no seu projeto para executar o áudio.
Tanto a dll quanto o jar estão aq:
http://www.4shared.com/rar/IkaTzl89/Javaspeech.html?
basta baixar, e colocar o jar no seu projeto, e copiar as dlls para a system 32, caso tenha duvida se seu sistema é 32 ou 64 bits copie as duas dlls para lá, caso saiba qual o seu sistema copie a correspondente.

Vamos para a parte legal, o código \o/

- Primeiro devemos criar uma classe chamada Sintetizador:

  1. import javax.speech.AudioException;
  2. import javax.speech.Central;
  3. import javax.speech.EngineException;
  4. import javax.speech.EngineStateError;
  5. import javax.speech.synthesis.Synthesizer;
  6. public class Sintetizador {
  7.      private Synthesizer synthesizer;
  8.          
  9.             public Sintetizador() {
  10.                 try {
  11.                     synthesizer = Central.createSynthesizer(null);
  12.                     synthesizer.allocate();
  13.                     synthesizer.resume();
  14.                 } catch (IllegalArgumentException e) {
  15.                     e.printStackTrace();
  16.                 }catch(EngineException e){
  17.                     e.printStackTrace();
  18.                 } catch (AudioException e) {          
  19.                     e.printStackTrace();
  20.                 } catch (EngineStateError e) {
  21.                     e.printStackTrace();
  22.                 }
  23.             }
  24.          
  25.             public void sayIt(String phrase) {
  26.                 try {
  27.                     synthesizer.speakPlainText(phrase, null);
  28.                     synthesizer.waitEngineState(Synthesizer.QUEUE_EMPTY);
  29.                 } catch (IllegalArgumentException e) {
  30.                     e.printStackTrace();
  31.                 }catch(InterruptedException e){
  32.                     e.printStackTrace();
  33.                 }
  34.             }

- Depois criamos uma classe chamada SynThread:

  1. public class SynThread implements Runnable{
  2.     private String word;
  3.    private final Sintetizador syn;
  4.     public SynThread(){
  5.         syn = new Sintetizador();
  6.     }
  7.     public void sayIt(){
  8.         syn.sayIt(word);
  9.     }
  10.     public String getWord() {
  11.         return word;
  12.     }
  13.     public void setWord(String word) {
  14.         this.word = word;
  15.     }
  16. @Override
  17.     public void run() {
  18.         sayIt();
  19.     }
  20. }
    // após criar essas classes, basta instanciar e "chamar" o método sayIt para executar o áudio de seu programa.

    Espero ter Ajudado.

Nenhum comentário:

Postar um comentário