Java Speech API

Saiu um exemplo na Java Magazine #4 de JSAPI, então puxei a API através de um link da SUN da IBM:

http://www.alphaworks.ibm.com/aw.nsf/download/speech

Só que não consigo executar o exemplo! Compila legal, mas não executa…

Alguém já conseguiu fazer funcionar esse “speech” pra me ajudar??

Leandro, desculpa a ignorancia…
mas o q vem a ser esse Speech??

valew

Faz o Java falar… bacana né?? hehehe
Tipow vc escreve uma palavra ou frase e ele lê…
Acho que também tem como ele reconhecer voz… mas ainda num cheguei aí…

Segue o código exemplo:

import javax.speech.*;
import javax.speech.synthesis.*;

public class HelloWorld {

  public static void  main (String[] arg){
    try{
      // Cria o sintetizador para a lingua inglesa
      Synthesizer sintetizador = Central.createSynthesizer(
          new SynthesizerModeDesc(java.util.Locale.ENGLISH));
      // Aloca os recursos necessarios
      sintetizador.allocate();
      // Resume o sintetizador
      sintetizador.resume();
      // "Fala" Hello World
      sintetizador.speakPlainText("Hello World!!",null);
      // Aguarda o sintetizador terminar de "falar"
      sintetizador.waitEngineState(Synthesizer.QUEUE_EMPTY);
      // Libera os recursos
      sintetizador.deallocate();

    }catch (Exception e){
      e.printStackTrace();
    }

    System.exit(0);
  }
}

Esse javax.speech dá pra pegar no link que eu postei, mas num consegui fazer funcionar…

nao sei pq funciona, o sound ta ok? faz um teste do seu som

mas o melhor dessa revista eh o artigo de generics, falae! :slight_smile:

Ele dá Runtime Exception… :stuck_out_tongue:

java.lang.UnsatisfiedLinkError: no ibmsynth in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1403)
	at java.lang.Runtime.loadLibrary0(Runtime.java:788)
	at java.lang.System.loadLibrary(System.java:832)
	at com.ibm.speech.synthesis.SynthImpl.loadLibraries(SynthImpl.java:110)
	at com.ibm.speech.synthesis.IBMEngineCentral.createEngineList(IBMEngineCentral.java:84)
	at javax.speech.Central.availableSynthesizers(Central.java:660)
	at javax.speech.Central.createSynthesizer(Central.java:553)
	at geral.TesteSpeech.main(TesteSpeech.java:10)
Exception in thread "main" 

Aqui deu a mesma coisa

Legaaaaaaaaal…
E agora, quem poderá nos defender?

vem umas DLLs junto com as APIs da IBM se não me engano (quando testei isto eu tinha mais uma porrada de troço para Speech instalado na maquina ja :slight_smile:

se vem as DLLs, vocês colocaram elas no PATH?? não adianta só colocar no diretório da aplicação (pelo menos para mim não adiantou, ai copiei para o %WINDOWS%system :slight_smile:

passou a funcionar como por magica,
se isto não funcionar, pode ser que tenha funcionado na minha casa por eu ja ter o Via Voice istalado, depois vocês me dizem :slight_smile:

ADIVINHA?? :smiley:

Não funcionou… :splat:

Acho que tem que ter o via voice
num vo instala nao

você pode instalar o runtime dele só que tem disponivel para download no site da IBM para desenvolvedores :slight_smile:

po…

manda o link ai do runtime do via voice…

ta ai o link :slight_smile:

http://www.wizzardsoftware.com/voice/voicetools/download.htm

você precisa baixar o “ViaVoice SDK for Windows” e o “ViaVoice TTS SDK for Windows”

li em algum lugar que eles tem também o runtime para linux disponivel para download, mas não achei :frowning:

se eu achar posto aqui :slight_smile:

tem também esta implementação aqui da JSpeech API que é free, mas só tem TTS, não tem Text Recognition ainda, e pelo geito não vão implementar isto por enquanto :slight_smile:
mas dependendo da necessidade :slight_smile:

ahh, e é 100% puro java :slight_smile:

http://chronogears.sourceforge.net/html/download.html

:stuck_out_tongue:

E ai galera !!!
Pow … baixei o ViaVoice SDK for Windows eo ViaVoice TTS SDK for Windows mais ta dando um erro:

/*
 * Voz.java
 *
 * Created on 1 de Fevereiro de 2003, 12:09
 */

package voice;

import javax.speech.*; 
import javax.speech.synthesis.*; 

/**
 *
 * @author  William J. Oliveira
 */
public class Voz {
    
    /** Creates a new instance of Voz */
    public Voz() {
    }
    
    public void fala(String arg){
        try{
            // Cria o sintetizador para a lingua inglesa
            Synthesizer sintetizador = Central.createSynthesizer(
            new SynthesizerModeDesc(java.util.Locale.ENGLISH));
            // Aloca os recursos necessarios
            sintetizador.allocate();
            // Resume o sintetizador
            sintetizador.resume();
            // "Fala" Hello World
            sintetizador.speakPlainText("Hellow Word",null);
            // Aguarda o sintetizador terminar de "falar"
            sintetizador.waitEngineState(Synthesizer.QUEUE_EMPTY);
            // Libera os recursos
            sintetizador.deallocate();
            
        }catch (Exception e){
            e.printStackTrace();
        }        
        
    }
    
    

java.lang.NullPointerException
at voice.Voz.fala(Voz.java:28)
at voice.FrmFala.cmdFalarActionPerformed(FrmFala.java:75)
at voice.FrmFala.access$100(FrmFala.java:13)
at voice.FrmFala$2.actionPerformed(FrmFala.java:54)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1767)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1820)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:258)
at java.awt.Component.processMouseEvent(Component.java:5022)
at java.awt.Component.processEvent(Component.java:4819)
at java.awt.Container.processEvent(Container.java:1525)
at java.awt.Component.dispatchEventImpl(Component.java:3527)
at java.awt.Container.dispatchEventImpl(Container.java:1582)
at java.awt.Component.dispatchEvent(Component.java:3368)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3359)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3074)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3004)
at java.awt.Container.dispatchEventImpl(Container.java:1568)
at java.awt.Window.dispatchEventImpl(Window.java:1586)
at java.awt.Component.dispatchEvent(Component.java:3368)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:191)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:144)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)

Oque pode ser ? :roll: ai galera quem conseguiu, manda pra mim oque baixou .
t+

Olá Pessoal!
Por favor, se alguem tiver o IBM Speech for Java ou o Via Voice SDK e o RUNTIME me enviem por gentileza!
Já fiz meus aplicativos funcionarem e preciso destas engines.

mandem para fercesarb2@ig.com.br

Olá Pessoal li a documentação que vcs escreveram e tive os mesmos erros que vcs. Estou fazendo um agente que fala. Gostaria de saber se alguém realmente conseguiu implementar isto o que preciso. Saliento que baixei aquele demo do speech da ibm so não adiantou. Se tiverem as classes para mim dar uma olhada ou qualquer coisa desde ja agradeço. Salve JAVA, Salve Javaneiros!!!
Meu email é: miguelbauermann@yahoo.com.br

Entranho, tive o mesmo problema e constatei que o erro só acontece quando utlizo a expressão:

Synthesizer sintetizador = Central.cresteSynthesizer( new SynthesizerModeDesc(java.util.Locale.ENGLISH) );

Quando utilizo:

Synthesizer sintetizador = Central.cresteSynthesizer( null );

o erro não acontece. Alguem tem alguma idéia do porque ?

Pessoal, o meu problema é o seguinte…
Tenho um problema inverso, necessito converter um arquivo de áudio em texto… isso é possível em java… Com qual ferramenta ou API eu consigo fazer… Se alguém tiver alguma idéia.

Ola sei que este topico e antigo mas usando ele como base eu consegui fazer funcionar a fala.

import javax.speech.Central;
import javax.speech.synthesis.Synthesizer;
import javax.speech.synthesis.SynthesizerModeDesc;


public class demo {
	  public static void  main (String[] arg){  
			    try{  
			      // Cria o sintetizador para a lingua PORTUGUES BRASIL!!!
			      Synthesizer sintetizador = Central.createSynthesizer(  
			          new SynthesizerModeDesc(java.util.Locale.forLanguageTag("pt-BR")));  
			      // Aloca os recursos necessarios
			      sintetizador.allocate();  
			      // Resume o sintetizador  
			      sintetizador.resume();  
			      // "Fala" Hello World  
			      sintetizador.speakPlainText("Teste!",null);  
			      // Aguarda o sintetizador terminar de "falar"  
			      sintetizador.waitEngineState(Synthesizer.QUEUE_EMPTY);  
			      // Libera os recursos  
			      sintetizador.deallocate();  
			  
			    }catch (Exception e){  
			      e.printStackTrace();  
			    }  
			  
			    System.exit(0);  
			  } 

}

para instalar a fala em pt-BR use o seguinte tuto…
Link: http://answers.microsoft.com/pt-br/windows/forum/windows_vista-windows_install/microsoft-translator-fala-em-portugu%C3%AAs-como/04440df6-b5a5-4099-8dc6-6fd6b9b4f16a?msgId=28069a8c-0f7f-48df-950b-4cb84ea0aa18

estou usando a seguinte API
http://sourceforge.net/apps/mediawiki/fingon/index.php?title=How_to_use_another_JSAPI_implementation

Eu testei no meu note Win7 64bit e em uma VM WinXP 32Bit, em ambos funcionou normal sem erros. (só a instalação da tradução que muda um pouco no XP).
Espero ter ajudado…

agora vou para o segundo passo reconhecer comandos de voz. =] se alguém ai já tiver feito algo do tipo posta ai pra ajudar, desde já obrigado.