Java,Reconocimiento y Sintetización de Voz con Cloud Garden TalkingJava SDK with Java Speech API implementation

Java Talking
Java Talking

Hola a todos, hace un tiempo desarrollé un programa en Java de Reconocimiento y Sintetización de Voz usando la librería de Cloud Garden TalkingJava SDK with Java Speech API implementation, la cual es una implementación de JSAPI, la cual es una de las tantas.

Con dicha librería pude  realizar un dictado simple y el programa me lo reconocía sin problema, además podía realizar la lectura de lo que le dicatba, pero la voz utilizada era una voz en inglés y lo que yo dictaba era español asi que ya imaginarán como sonaba.

El inconveniente es que solo esta soportada para el Sistema Operativo Windows, además de estar restringida en cuanto al uso, pues dice FREE (gratuita) para uso individual pero para alguna insitución o fines comerciales se debe pagar una licencia.

En el ejemplo que desarrollo, cuando digo la palabra «cmop» el programa emite un mensaje y termina la aplicación, este es un simple ejemplo de comandos por voz usando java.

Para lograr el objetivo emplee un diccionario que cumple con JGSF, el cual es un conjunto de convenciones para la gramática en el reconocimiento de Voz.

Aquí el codigo de la clase Escucha que es la encargada de Reconocer lo hablado.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LE;

/**
 *
 * @author Cmop
 */
import javax.speech.*;
import javax.speech.recognition.*;
import java.io.FileReader;
import java.util.Locale;

public class Escucha extends ResultAdapter
{

 static Recognizer recognizer;
 String gst;

 @Override
 public void resultAccepted(ResultEvent re)
 {
 try
 {
 Result res = (Result)(re.getSource());
 ResultToken tokens[] = res.getBestTokens();

 String args[]= new String[1];
 args[0]="";
 for (int i=0; i < tokens.length; i++)
 {
 gst = tokens[i].getSpokenText();
 args[0]+=gst+" ";
 System.out.print(gst + " ");
 }
 System.out.println();
 if(gst.equals("cmop"))
 {
 recognizer.deallocate();
 args[0]="Hasta la proxima Cmop!";
 System.out.println(args[0]);
 Lee.main(args);
 System.exit(0);
 }
 else
 {
 recognizer.suspend();
 Lee.main(args);
 recognizer.resume();
 }
 }catch(Exception ex)
 {
 System.out.println("Ha ocurrido algo inesperado " + ex);
 }
 }

 public static void main(String args[])
 {
 try
 {
 recognizer = Central.createRecognizer(new EngineModeDesc(Locale.ROOT));
 recognizer.allocate();

 FileReader grammar1 =new FileReader("c:/SimpleGrammarES2.txt");

 RuleGrammar rg = recognizer.loadJSGF(grammar1);
 rg.setEnabled(true);

 recognizer.addResultListener(new Escucha());

 System.out.println("Empieze Dictado");
 recognizer.commitChanges();

 recognizer.requestFocus();
 recognizer.resume();
 }catch (Exception e)
 {
 System.out.println("Exception en " + e.toString());
 e.printStackTrace();
 System.exit(0);
 }
 }
}

Y aquí el codigo de la Clase que Lee.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LE;

/**
 *
 * @author Cmop
 */
import javax.speech.*;
import javax.speech.synthesis.*;
import java.util.*;

public class Lee {

 /**
 * @param args the command line arguments
 */
 public static void main(String[] args) {
 try {

 String say=args[0];

 SynthesizerModeDesc required = new SynthesizerModeDesc();
 required.setLocale(Locale.ROOT);

 Voice voice=new Voice(null, Voice.GENDER_FEMALE, Voice.GENDER_FEMALE, null);

 required.addVoice(voice);

 Synthesizer synth = Central.createSynthesizer(null);

 synth.allocate();
 synth.resume();

 synth.speakPlainText(say,null);

 synth.waitEngineState(Synthesizer.QUEUE_EMPTY);
 synth.deallocate();

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

Además incluyo el diccionario que empleé.

#JSGF V1.0;
grammar sentence;

public <sentence> =
[<dato0>]
[<dato1>]
[<dato2>]
[<dato3>]
[<dato4>]
[<dato1><dato2><dato3><dato4>]
[<dato5>][<dato6>][<dato7>][<dato8>][<dato9>][<dato10>][<dato11>][<dato12>][<dato13>][<dato14>]
[<dato15>];

<dato0>=Metodologia de la Investigacion Cientifica;
<dato1>=Java;
<dato2>=Programacion;
<dato3>=Orientada;
<dato4>=Objetos;
<dato5>=cmop;
<dato6>=Clases;
<dato7>=Horario;
<dato8>=Canario;
<dato9>=Radio;
<dato10>=Television;
<dato11>=Ingenieria;
<dato12>=Industrial;
<dato13>=Informatica;
<dato14>=Comida;
<dato15>=1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 ;

y Aquí un video demostrativo de como Reconoce lo que le digo por el micrófono.

Saludos a todos y espero les sirva.

215 comentarios sobre “Java,Reconocimiento y Sintetización de Voz con Cloud Garden TalkingJava SDK with Java Speech API implementation

  1. hola, que tal, estoy interesado en la parte del reconocimiento de voz, ya que mis manos me van a hacer huelga, jeje, pero bueno, quisiera saber un poico mas sobre como organizar el proyecto en el netbeans, ya que no me reconoce el paquete javax.speech, sale que no existe, alguna ayuda?

    1. Debes descargarte la libreria http://cloudgarden1.com/TalkingJavaSDK-170.jar y copiar los archivos cgjsapi.jar y cgjsapi170.dll en la carpeta «ext» de tu JRE.
      Después Crear una libreria en Netbeans llamada TalkingJavaSDK y agregar a esta el archivo cgjsapi.jar.
      Luego Copias el Diccionario en algun lugar de tu HD facil de reconocer algo asi como en «C:\» lo guardas como «SimpleGrammarES2.txt»

      Eso es todo, saludos.

    1. Hola a ver en la Web dicen esto:
      El SDK TalkingJava es gratuito para uso no comercial.
      Una licencia profesional es OBLIGATORIO para las empresas, corporaciones e instituciones que utilizan la aplicación (incluso en las fases de exploración de desarrollo de productos) o la distribución de las bibliotecas de tiempo de ejecución como parte de un producto.
      El precio es de $ 500 por una licencia de desarrollador individual que incluye:
      De instalación para los propósitos de desarrollo – una licencia debe ser comprada por cada desarrollador que trabaja con la aplicación.
      La redistribución de hasta 1000 ejemplares de las bibliotecas de tiempo de ejecución incluido con cualquier producto.
      La instalación en un servidor (por ejemplo, servidores web o de máquinas de tratamiento de las solicitudes de red) cuando se utiliza para procesar el habla como parte de una aplicación de servidor.
      Si la distribución ilimitada se requiere entonces cuatro licencias profesionales deben ser comprados.
      Si se usa por una institución académica como parte de un curso de enseñanza a continuación, una licencia debe ser comprada por cada departamento. Una licencia cubre todos los cursos impartidos por ese departamento.

      1. Stiven Vásquez

        necesito saber que precio tiene en moneda colombiana, para uso comercial y cuales son los tramites y requisitos para adquirirla.

  2. Hola,

    En tu respuesta a John dices que la librería es de uso gratuito no comercial. La puedo utilizar en mi Tesis ?.. es decir; queda para la Universidad pero no para comercializarla. Esto es posible?

    Gracias

  3. que tal cmop!, le escribo nuevamente para ver si me puedes recomendar un motor «libre» (que no requiera licencia) para correr el proyecto, ya que el que tenia (Dragon naturally speaking) ps es licenciado y no va mas.

    de antemano muchas gracias!

    1. Hola he escuchado hablar del Natural Dragon, incluso encontré que ellos tienen su propia librería, pero ese Software es orientada al usuario final, si deseas usar en algun proyecto una herramienta Libre, te recomiendo SIMON un proyecto Libre que se implementa en Linux.
      Te recomiendo este post: reconocimiento en español
      saludos

  4. EY CMOP, GRACIAS POR EL POST!, MUY ENTERESANTE Y NO CONOCÍA «JULIUS». PERO LA VERDAD TE MOLESTO NUEVAMENTE YA QUE NECESITO Y ME GUSTARÍA ENCONTRAR UNO PARA WINDOWS (XP O VISTA) Y EN CASTELLANO, TRATÉ CON SPHINX4, PERO TAMBIEN ESTÁ EN INGLÉS.

    AGRADEZCO NUEVAMENTE TU AMABILIDAD Y SI ALGO, PS TAMBIÉN SEGUIR CONTANDO CON TU ORIENTACIÓN.

    ATT: DAVID

  5. Hola, esta muy bueno este post solo queriendo aclarar un problemilla que me salio.

    Porque será que me marca un error en la siguiente linea:
    recognizer.allocate();

    —————————————————————————–
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Exception en java.lang.NullPointerException
    java.lang.NullPointerException
    at escucha.Escucha.main(Escucha.java:65)
    >> Initializing Cloudgarden’s JSAPI 1.0, version 1.7.0
    >> Free for personal use only.
    >> Any form of commercial, corporate or institutional use requires purchase of a license.
    >> Please visit http://www.cloudgarden.com for details.

    >> Shutting down Cloudgarden’s JSAPI 1.0 version 1.7.0
    —————————————————————————–

    Ya he importado en la libreria del proyecto el cgjsapi.jar y puesto el .dll y el .jar en donde me señalan…

    —————————————————————————–
    Select all the JREs that you wish to use JSAPI with (or select the «Select All JREs» checkbox). Two files will be copied – cgjsapi.jar to the lib/ext directory and cgjsapi170.dll to the bin directory. The «Install for Applets» checkbox will install the JSAPI for use with Netscape and IE native VMs.

    You may want to try out the examples first, to check that the code works on your system, then install the jsapi files.
    —————————————————————————–

    ¿Por que será que me marca el error en recognizer.allocate(); ? Gracias…

    1. Debes copiarlo en las ubicaciones de JREs y en el JDK, yo lo tengo básicamente en: C:\Program Files\Java\jdk1.6.0_20\jre\lib\ext y con eso no me da problemas, saludos.

  6. Hola CMOP en este momento estoy realizando un pequeño proyecto personal, y quiero hacer que mi programita reconózca voz. entonces me gustaria me instruyeras un poco ya que uso linux no windows, si pudieras ayudarme te lo agradecería…

      1. mmm El link no funciona pero bueno, más que todo pediria que me ayudaras a encontrar una libreria similar pero que sea para linux, pues es lo que me hace falta, y gracias por la ayuda que me has dado hasta ahora…

  7. Hola…he probado a hacer el programa pero al ejecutar se me sale de rango, el problema me lo da en String say= args[0]…alguien sabe por que es?? gracias!

    1. Hola, el archivo debes guardarlo en «C:\», con el nombre de: SimpleGrammarES2.txt, esto lo puedes cambiar en la línea 67 del archivo Escucha.java del paquete.
      Saludos.

      1. muchas gracias, pero ahora tengo otro problema, se me sale de rango en la linea 24 del main, se me sale de rango…alguien sabe cual puede ser el problema??

  8. ola estimado amigo, muchas gracias por este excelente aporte..

    me da un mensaje y no puedo ni probarlo:
    ——————–Configuration: ——————–
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Exception en java.lang.NullPointerException
    >> Initializing Cloudgarden’s JSAPI 1.0, version 1.7.0
    >> Free for personal use only.
    >> Any form of commercial, corporate or institutional use requires purchase of a license.
    >> Please visit http://www.cloudgarden.com for details.

    >> Shutting down Cloudgarden’s JSAPI 1.0 version 1.7.0

    he copiado el jsapi en todos los directorios jre, ext, bin y tambien lo hice con el dll..

    Mi dll se llama:
    * cgjsapi170_x64.dll
    * cgjsapi170.dll

    no se que pasa..
    muchas gracias…

      1. Me pasa lo mismo NullPointerException en allocate()… Estoy usando Eclipse y la version 6 del jdk…Hice todo lo q decia este post… que mas podria ser?.. gracias de antemano.

        1. Hice un debug a la linea 64 (reconocerdor = Central.createRecognizer(new EngineModeDesc(Locale.ROOT));) de la clase Escucha y el Locale.ROOT viene vacio, ¿tendrá algo que ver con la configuración local de mi maquina? … seguire investigando y posteando.

  9. Saludos,

    Implemte el ejemplo y funciona ok. pero cuando la gramática es demasiado grande,falla totalmente.

    Alguien sabe cual es la causa ?

    Gracias

    1. Hola, deberías revisar la gramática, yo hice un diccionario de 300 palabras y no falló, pero la pronunciación es clave, a veces yo pronunciaba en ingles porque al pronunciar en español no me reconocía las palabras 🙂
      Saludos

    1. Si me hablas de la estructura, pues es JSGF, el cual tiene un conjunto de reglas, con las cuales se pueden colocar palabras sueltas, o permitir su concatenacion.
      La extension del archivo no interesa, puede ser txt o incluso no poseer extension, pero debes editar dentro del projecto la linea de codigo que accede al fichero del diccionario.
      Saludos.

  10. Estoy desarrollando una investigacion sobre este tema de el reconocimiento de vos y e desarrollado hasta el momento casi todo tu ejemplo pero no e podido hacer el diccionario por que no se en que formato debo agradeceria mucho tu ayuda pues estoy terminando mis estudios y ahi muchas cosas que me gustaria a prender antes de graduarme gracias….!!!!

  11. Discula pero Este es mi problemas yo creee el diccionario en un bloque de notas con una estencion .txt
    y al correrlo este es el error q me sale

    run:
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Exception en java.io.FileNotFoundException: C:\SimpleGrammarES2.txt (Acceso denegado)
    java.io.FileNotFoundException: C:\SimpleGrammarES2.txt (Acceso denegado)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.(FileInputStream.java:106)
    at java.io.FileInputStream.(FileInputStream.java:66)
    at java.io.FileReader.(FileReader.java:41)
    at Le.Escucha.main(Escucha.java:120)
    BUILD SUCCESSFUL (total time: 3 seconds)

    Gracias por tu tiempo …!!

    1. Debes checkar los permisos, a la ruta «C:\SimpleGrammarES2.txt» pues ese es el nombre y ubicación por defecto del archivo que yo le he dado, si deseas cambiar la ruta lo debes hacer en la linea 67 de la clase Escucha.
      Saludos.

  12. La ruta que yo tengo es la misma que aplicaste en el ejemplo pero creo que talvez es el sistema operativo ya que tengo windows 7 y creo que tu ejemplo es para linux y solaris si no me equivoco ,ya que e revisado los permisos y creo que estan bien aunque no se cual es el persmiso que debo darle igual sigo intentantolo si me puedes ayudar con este ejemplo te lo agradeceria. si no megustaria que me digas que tipo de informacion debo de a prender a utilizar para poder llevar acabo un programa con este tipo de tegnologia que corra en windows
    Gracias…!!

    1. Hola en el video de demostracion se observa que lo estoy usando bajo Vista, pues esa API solo funciona bajo windows, pienso que el problema es de permisos, a mi me paso una vez, pero lo coloqué en la carpeta mis documentos, y alli si pude trabajar sin problemas.
      saludos.

  13. ola brother muy bueno tu trabajo…kiero saber si pueo hacer un sintetizador en español………mi codigo es este

    try {
    SynthesizerModeDesc rec = new SynthesizerModeDesc();
    rec.setLocale(new Locale( «es», «ES», «Traditional_WIN»));
    Voice voice=new Voice(null, Voice.GENDER_MALE, Voice.AGE_DONT_CARE, null);
    rec.addVoice(voice);
    Synthesizer synth = Central.createSynthesizer(rec);
    synth.allocate();
    synth.resume();
    synth.speakPlainText(«hola a todos», null);
    synth.waitEngineState(Synthesizer.QUEUE_EMPTY);

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

    me sale error en

    run:
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    java.lang.NullPointerException
    at reconocimientooz.Main.main(Main.java:32)

    k es la linea de synth.allocate();

    1. Tengo el mismo problema. Podrias poner como ligas los jar/zip al proyecto para que funcione…. lo otro que tengo duda que si hay que instalar algo para que el PC pueda hablar (MS-Agent o algo asi???)… gracias por la respuesta.

      1. Hola Ok, subire el jar ejecutable, y el proyecto en Netbeans, respondiendo a tu pregunta, no es necesario que instales otro software, la librería hace lo propio y necesario.
        saludos

  14. No e podido lograr que el programa accese a el archivo del diccionario lo e puesto entodas partes y me da la misma respuesta (acceso denegado) megustaria que me ayudes a que me funcione. Lo que estoy tratando es revisando los permisos de el bloque de notas (SimpleGrammarES2.txt)
    pero hasta el momento no me afuncionado si me pudiras facilitar esa informacion te lo agradeceria mucho..!!
    Gracias..!!

  15. Estoy usando Windows 7 Starter y la version de netbeans es 6.9.1 estaba usando la anterior pero la cambien para ver si asi me funcionaba, tambien le di control total a netbeans y hise lo mismo con el archivo SimpleGrammarES2.txt aun asi meda el mismo error voy a tratar en otro sistema operativo espero funcione ,si me tienes alguna otra sugerencia te lo agradeceria y disculpa las moslestias ..!!
    Gracias..!!

  16. Creo que e logrado algunos avances pero todavia no me funciona estos son los nuevos errores que me aparecen

    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Exception en javax.speech.recognition.GrammarException
    line 3
    >>> Grammar name not defined near: grammar sentence

    grammar: UNDEFINED
    line 5
    >>> line does not start with a rule name
    grammar sentence
    ^
    2 JSGF errors found

    javax.speech.recognition.GrammarException
    line 3
    >>> Grammar name not defined near: grammar sentence

    grammar: UNDEFINED
    line 5
    >>> line does not start with a rule name
    grammar sentence
    ^
    2 JSGF errors found

    at com.cloudgarden.speech.CGRecognizer.a(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer.a(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer.loadJSGF(Unknown Source)
    at Le.Escucha.main(Escucha.java:124)
    >> Initializing Cloudgarden’s JSAPI 1.0, version 1.7.0
    >> Free for personal use only.
    >> Any form of commercial, corporate or institutional use requires purchase of a license.
    >> Please visit http://www.cloudgarden.com for details.

    >> Shutting down Cloudgarden’s JSAPI 1.0 version 1.7.0

    BUILD SUCCESSFUL (total time: 1 second)

    Gracias…!!

  17. por fin lo logre muchisimas gracias ahora solo el ultimo detalle el migrofono q utilisaste en el video por que me dice que empiese el dictado y digo las palabras que el me deberia reconocer y no aparecen

    run:
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Empieze Dictado

    ya ahi no me reconoce las palabra pero estoy seguro q tiene que ver con el migrofono no con el programa si me hechas la ultima empujadita
    muchisimas gracias….!!

    1. Hola las palabras dependen del diccionario, yo use un microfono que viene con auriculares, porque esta cerca de la boca, y eso aumenta la precision.
      Al principio probé con el microfono integrado de mi laptop pero la distancia (el microfono viene al lado de la webcam).
      En conclusion usar un microfo lo mas cercano posible a la boca, tipo central telefonica, jeje, saludos.

  18. Hola.
    Excelente lo e logrado no pude haverlo hecho sin tu ayuda muchisimas gracias…!!
    y gracias por implementar este tipo de ejemplos que realmente son excelente no ahi otra palabra
    mil gracias y espero seguir aprendiento mas de este tipo de tegnologia..
    Suerte en tus proyectos futuros..

    1. Hola Ariel podrias decir como fue que lograste que te escuchara el programa, tengo el mismo problema donde se queda en Empieze Dictado y no se si se deba al microfono de la laptop…
      ayuda por favor

  19. holas he provado el ejemplo para ver como funciona pero me sale el siguiente error
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Unable to register recognizer notify listener
    Empieze Dictado
    java.lang.RuntimeException: Failed to commit grammar sentence, error code = -1
    at com.cloudgarden.speech.CGRecognizer.commitChanges(Unknown Source)
    at reconocimientovoz.Escucha.main(Escucha.java:78)
    GENERACIÓN INTERRRUMPIDA (total time: 11 seconds)

    a pesar de que ya hice todo lo necesario para poder hacer q funcione haber si alguien puede ayudarme gracias de antemano

  20. brother sigo con el problema de que no puedo hacer que el sintetizador sea en español…………..por defecto sale en ingles………..espero que me puedas ayudar…………gracias

    try {
    SynthesizerModeDesc rec = new SynthesizerModeDesc();

    rec.setLocale(new Locale( “es”, “ES”, “Traditional_WIN”));

    Voice voice=new Voice(null, Voice.GENDER_MALE, Voice.AGE_DONT_CARE, null);
    rec.addVoice(voice);
    Synthesizer synth = Central.createSynthesizer(rec);
    synth.allocate();
    synth.resume();
    synth.speakPlainText(“hola a todos”, null);
    synth.waitEngineState(Synthesizer.QUEUE_EMPTY);

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

    1. Hola brother, gracias por tu interes, debo decirte algunas cosas, para poder hacer un sintetizador en español, deberías poder usar las librerías MBROLA, existe un Script hecho en PERL que sintetiza en voces de Mexico, yo quise pasar el script a Java pero no lo concluí, otra opción es usar un conjunto de voces libres, mira te paso este enlace http://ubanov.wordpress.com/2008/11/28/reconocimiento-de-voz-en-castellano/ espero que te sirva eso es lo mas cerca que he estado de usar un sintentizador en español.
      Saludos y espero haberte ayudado.

  21. Hola.
    Estoy tratando de implementar tu aplicación, he instalado y copiado los archivos tal como se menciona, el .jar y el .dll en las carpetas del jre y jdk pero obtengo este error:

    —————————————————

    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Exception en java.lang.NullPointerException
    java.lang.NullPointerException
    at pruebatalking.Escucha.main(Escucha.java:65)
    >> Initializing Cloudgarden’s JSAPI 1.0, version 1.7.0
    >> Free for personal use only.
    >> Any form of commercial, corporate or institutional use requires purchase of a license.
    >> Please visit http://www.cloudgarden.com for details.

    >> Shutting down Cloudgarden’s JSAPI 1.0 version 1.7.0

    ——————————————————

    No entiendo qué puede pasar si todo está instalado y copiado correctamente, estoy usando Netbenas IDE 6.9.1 sobre Windows XP.

    Gracias por la atención

    1. Hola.

      Ya encontré la solución, el problema no era la instalación del TalkingJava, lo que pasa es que en Windows XP no viene instalado el motor de reconocimiento de voz. Estuve buscando y solo logré encontrarlo en inglés, se puede descargar desde aquí: http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530
      Según leía, el motor de reconocimiento de voz en español solo está disponible en Windows Vista o 7, no se si habrá alguna alternativa de un motor en español para Windows XP.

      Gracias por la atención

  22. POr favor amigo te pido ayuda sigoo teniendo este problema Uso net beans y ya segui todo los pasos pero nada sigue esto:
    —————————————————

    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Exception en java.lang.NullPointerException
    java.lang.NullPointerException
    at pruebatalking.Escucha.main(Escucha.java:65)
    >> Initializing Cloudgarden’s JSAPI 1.0, version 1.7.0
    >> Free for personal use only.
    >> Any form of commercial, corporate or institutional use requires purchase of a license.
    >> Please visit http://www.cloudgarden.com for details.

    >> Shutting down Cloudgarden’s JSAPI 1.0 version 1.7.0

    ——————————————————

    De antemano te agradesco saludos…

      1. Listo, mi solución fué la que implementó David en la publicación del día 29 de Septiembre 29 de 2010 a las 9:09 pm. La cuestión está en que el sintetizador está en Inglés.

  23. hola oye estuve viendo tu gramatica y hay algo q me llamo la atencion tienes todos tus datos y entonces:
    []
    []
    [] //aqui repites dato 1,2,3 y4
    me gustaria saber porque lo hiciste asi
    lo que pasa es que quiero hacer mi propio diccionario por asi llamarlo pero ps no se se nadamas tenga q escribir asi todos los datos declarando [][][]…… []
    saludos y gracias

    1. Hola eso es para permitir la concatenacion de las palabras, osea concatenas palabra1+palabra2+palabra3+palabra4 en ese orden (segun mis experimentos 🙂 ), ademas creo que existe un modificar para que no dependa del orden, si te das cuenta es una expresion regular. Por ello lo hago, sino como se aprecia en el video puedo decir «JAVA» y despues «JAVA ORIENTADA» y «PROGRAMACION ORIENTADA OBJETOS». por eso puse en el dato0= «metodologia de la investigacion cientifica» en este caso es una frase completa, pero en «Programacion orientada objetos» las palabras fueron declaradas individualmente como [], [ ], [] pero mas abajo [] con eso doy paso a permitir la concatenación.
      Saludos y espero haberte respondido.

      1. oooo ok ya entendi, oye estuve buscando como hacerle para no depender del orden pero no encuentro nada en todas las paginas me dice que tiene q ser en orden entonces queria saber si tu conoces alguna pagina o sabes como hacerle para que no dependa del orden y pueda decir «comida java» bueno para dar el ejemplo. y sin la necesidad de concatenar, te lo agradezco mucho SALUDOS

  24. buenas tardes estimado cmop tengo una idea para implementar su proyecto en un jFrame y que en vez de que escriba en la salida de netbeans que me vaya escribiendo los datos en los textfield correspondientes a cada dato como podria implementarlo…….Gracias por su atencion

  25. hola que tal, copie tu codigo y funciona perfecto, solamente funciona con la primera palabra, la siguiente palabra me la reconoce pero me sale un error inesperado dice, siempre siempre, me reconoce la primera y la segunda pero en la segunda me lanza un erro que puede estar pasando? gracias buen dia

  26. Que tal, he implementado tu codigo (que por cierto me ayudo un monton) y he hecho mi propio diccionario pero tengo un problema. Al mencionar una palabra, el soft reconoce la palabra y escribe lo que le mencione, hasta ahi todo bien, sin embargo, cuando pronuncio una palabra que no esta en el diccionario, el soft igual escribe algo.
    Ejemplo:
    * Si la palabra Java esta en el diccionario, el soft la escribe al yo pronunciar «Java»

    * Si la palabra «papa» no esta en el diccionario, el soft me escribe cualquier palabra que este en el diccionario.

    En resumen, el soft siempre interpreta algo, a pesar de que la palabra no esta en el diccionario.

    ¿Cual puede ser el problema?

    He probado con tu diccionario y me da el mismo resultado.

    Otra cosa, dejame decirte que tu aporte ha sido de mucha utilidad y que la tarea que estas llevando a cabo compartiendo informacion es respetable. Espero pronto empezar con la misma tarea.

    Saludos

    1. Hola CMOP! a mi tambien me pasa lo mismo. No hay alguna manera de que cuando se diga una palabra que no esta en el diccionario, esta no se tome en cuenta?

      Y tambien te queria preguntar si no hay alguna manera de poder pausar el reconocimiento hasta que yo le indique al programa que voy a decir una palabra?

      Agradeceria mucho que noas ayudaras con esas dudas ya que estoy haciendo una aplicacion que quiero comercializar y estoy atorado con eso.

  27. Saludos Cmop, gracias por el post. Definitivamente es necesario encontrar una forma para crear un sintetizador en español. He buscado por todas partes y nada. Creo que nos podrías ayudar mucho si nos muestras como hacerlo.

  28. Mi problema es el siguiente, cuando ejecuto la aplicación aparentemente funciona, pero en ocasiones cuando digo una palabra se cicla y se repite varias veces, en otras ocasiones no reconoce ninguna palabra, o tambien cuando lo ejecuto aparece este error:
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Unable to register recognizer notify listener
    Empieze a Dictar
    java.lang.RuntimeException: Failed to commit grammar sentence, error code = -1
    at com.cloudgarden.speech.CGRecognizer.commitChanges(Unknown Source)
    at Speech.Reconocedor.main(Reconocedor.java:43)

    Me puedes ayudar!!!!!!!!!

  29. Mi problema es el siguiente, cuando ejecuto la aplicación aparentemente funciona, pero en ocasiones cuando digo una palabra se cicla y se repite varias veces, en otras ocasiones no reconoce ninguna palabra, o tambien cuando lo ejecuto aparece este error:
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Unable to register recognizer notify listener
    Empieze a Dictar
    java.lang.RuntimeException: Failed to commit grammar sentence, error code = -1
    at com.cloudgarden.speech.CGRecognizer.commitChanges(Unknown Source)
    at Speech.Reconocedor.main(Reconocedor.java:43)

    Me puedes ayudar!!!!!!!!!

    mi correo es nemesis_eve@hotmail.com

  30. ¿podría alguien decir como solucionaron el problema del netbeans y el java.lang.NullPointerException?

    Está muy bien preguntar pero lo suyo es si se encuentra la solución no decir «ya la he encontrado» sino explicar como solucionarlo para que otros luego (como yo ahora) no estén dando vueltas sin encontrar solución…

    Gracias por el post, aunque no consigo que funcione en netbeans ( y si he copiado el jar y el dll en todos los /jre/lib/ext en todos los /jre/lib y en todos los /bin de todos los java instalados y nada…

  31. ¿quizás hay que instalar algún motor de reconocimiento antes y no lo hice y por eso me da un NullPointerException pero el código y ubicación de .jar y .dll es correcto?
    Sustituí la línea:
    recognizer = Central.createRecognizer(new EngineModeDesc(Locale.ROOT));

    Por el código de un ejemplo que saca al principio un diálogo para listar los engines disponibles:
    RecognizerModeDesc desc = new RecognizerModeDesc(null,Boolean.TRUE);
    SpeechEngineChooser chooser = SpeechEngineChooser.getRecognizerDialog(desc);
    chooser.show();
    desc = chooser.getRecognizerModeDesc();
    recognizer = Central.createRecognizer(desc);

    Que me saca un diálogo, pero no hay ningún engine que seleccionar…creo que van a ir por ahi los tiros… me voy a comer algo, que ya me está estresando esto 🙂

  32. Ya consegui utilizar el reconocimiento de voz en una interfaz grafica, pero ahora el problema es que al comprimirlo en un jar, no se ejecuta este.

    Como puedo comprimir el programa en un jar?

  33. hOLA!1 espero podeis ayudarme lo que pasa es que tengo mi diccioanrio!!! y no me funciona!!!!solo me soporta 100 palabras 😦
    algien me puede ayudar

  34. holas Cmop
    Un gran favor….
    te cuento que segui todos los pasos que diste para hacer correr el programa…
    pero aun asi no da…. la verdad no se cual es mi error

    mi SO es windows 7

    Los errores que salen son estos

    java.lang.NoClassDefFoundError: main/Main
    Caused by: java.lang.ClassNotFoundException: main.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    Could not find the main class: main.Main. Program will exit.
    Exception in thread «main» Java Result: 1
    BUILD SUCCESSFUL (total time: 0 seconds)

    De antemano te agradezco la respuesta..

    GRACIAS…………..

  35. HOLA QUE TAL BUENO PUES AL ESTAR HACIENDO FUNCIONAR EL CODIGO ME MANDA ESTE ERROR, Y PUES QUISIERA QUE ME AYUDARAN PORFAVOR, EN ESPECIAL TU ARIEL YAQUE ES EXACTAMENTE EL MISMO ERROR QUE HE TENIDO, BUENO USO W7 Y NETBEANS 6.8 ESPERO ME PUEDAN AYUDAR GRACIAS Y BUENA INFORMACION.

    run:
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Exception en javax.speech.recognition.GrammarException
    line 2
    >>> Grammar name not defined near: grammar sentence

    grammar: UNDEFINED
    line 3
    >>> line does not start with a rule name
    grammar sentence
    ^
    2 JSGF errors found

    javax.speech.recognition.GrammarException
    line 2
    >>> Grammar name not defined near: grammar sentence

    grammar: UNDEFINED
    line 3
    >>> line does not start with a rule name
    grammar sentence
    ^
    2 JSGF errors found

    at com.cloudgarden.speech.CGRecognizer.a(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer.a(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer.loadJSGF(Unknown Source)
    at Escucha.main(Escucha.java:58)
    BUILD SUCCESSFUL (total time: 1 second)

  36. No sirve esto.. siempre marca error index out bond exeption
    java.lang.ArrayIndexOutOfBoundsException: 0
    at Lee.main(Lee.java:19)
    y ya puse el diccionario..

  37. hola sera que mepueden ayudar me sale el siguiente error
    java.lang.ArrayIndexOutOfBoundsException: 0
    at LE.Lee.main(lee.java:24)

    por alguien sabe que falta

  38. Muchas gracias. Una pregunta, sabes como se podria hacer esto mismo pero en vez de desde un microfono desde un fichero .wav?? es decir, grabo un fichero .wav donde digo «programacion» y se lo paso al reconocedor. Me ayudarias mucho.De nuevo muchas gracias.

    Un saludo

  39. HOLA ME SALE ESTO CUANDO COMPILO LA CLASE ESCUCHA

    loudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    The cgjsapi170 file could not be loaded.

    This means that either your evaluation period has
    expired or the cgjsapi170 file is not in your system’s PATH.

    If your evaluation period has expired and you wish
    to purchase a Personal or Professional license, please
    visit the CloudGarden website at http://www.cloudgarden.com.

    If the cgjsapi170 file could not be found, you can place it in
    the directory from which you are executing your Java code.
    =====================================
    java.lang.UnsatisfiedLinkError: no cgjsapi170 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at com.cloudgarden.loader.Loader.loadJSAPILibrary(Unknown Source)
    at com.cloudgarden.speech.CGEngine.loadLibs(Unknown Source)
    at com.cloudgarden.speech.CGEngine.(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.createEngineList(Unknown Source)
    at javax.speech.Central.availableRecognizers(Unknown Source)
    at javax.speech.Central.createRecognizer(Unknown Source)
    at LE.Escucha.main(Escucha.java:62)
    java.lang.UnsatisfiedLinkError: com.cloudgarden.speech.CGRecognizer.enterMainEventLoop()I
    at com.cloudgarden.speech.CGRecognizer.enterMainEventLoop(Native Method)
    at com.cloudgarden.speech.CGRecognizer.access$10(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer$5.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:722)
    java.lang.UnsatisfiedLinkError: com.cloudgarden.speech.CGRecognizer.enterMainEventLoop()I
    at com.cloudgarden.speech.CGRecognizer.enterMainEventLoop(Native Method)
    at com.cloudgarden.speech.CGRecognizer.access$10(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer$5.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:722)
    Exception in thread «main» java.lang.UnsatisfiedLinkError: com.cloudgarden.speech.CGRecognizer.nallocate(II)I
    at com.cloudgarden.speech.CGRecognizer.nallocate(Native Method)
    at com.cloudgarden.speech.CGRecognizer.(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer.getEngineList(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.a(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.createEngineList(Unknown Source)
    at javax.speech.Central.availableRecognizers(Unknown Source)
    at javax.speech.Central.createRecognizer(Unknown Source)
    at LE.Escucha.main(Escucha.java:62)
    DLL already unloaded when deallocate method called
    Java Result: 1
    GENERACIÓN CORRECTA (total time: 0 seconds)

    *******************************
    NETBEANS 7.0.1
    WINDOWS 7

    NO SE QUE PASA ME PUEDEN AYUDAR !!!!!!!!!!!!!

    GRACIASS TOTALESSS

  40. Primeramente felicitarte por el trabajo que desarrollaste.
    Lo hice paso a paso como explicabas y tambien me guie con los comentarios que hicieron los demas lectores el problema es el siguiente: se ejecuta el run
    y me sale esto
    run:
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Empieze Dictado

    Cambie el microfono como decia en los comentarios uno con auriculares para que recepcione bien la voz. tambien lo puse un microfono que adapte y le puse un plus y lo conecte al puerto de sonido para el microfono pero no funciono.

    se queda ahi Empieze Dictado pronuncio y no pasa nada no se cual sea el problema pero te pediria amablemente tu orientacion gracias …

    bueno tengo mas curiosidades que preguntarte pero mas adelante te los voya hacer:

    Espero que respondas gracias…

  41. CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    The cgjsapi170 file could not be loaded.

    This means that either your evaluation period has
    expired or the cgjsapi170 file is not in your system’s PATH.

    If your evaluation period has expired and you wish
    to purchase a Personal or Professional license, please
    visit the CloudGarden website at http://www.cloudgarden.com.

    If the cgjsapi170 file could not be found, you can place it in
    the directory from which you are executing your Java code.
    =====================================
    java.lang.UnsatisfiedLinkError: no cgjsapi170 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
    at java.lang.Runtime.loadLibrary0(Runtime.java:822)
    at java.lang.System.loadLibrary(System.java:993)
    at com.cloudgarden.loader.Loader.loadJSAPILibrary(Unknown Source)
    at com.cloudgarden.speech.CGEngine.loadLibs(Unknown Source)
    at com.cloudgarden.speech.CGEngine.(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.createEngineList(Unknown Source)
    at javax.speech.Central.availableRecognizers(Unknown Source)
    at javax.speech.Central.createRecognizer(Unknown Source)
    at LE.Escucha.main(Escucha.java:58)
    java.lang.UnsatisfiedLinkError: enterMainEventLoop
    at com.cloudgarden.speech.CGRecognizer.enterMainEventLoop(Native Method)
    at com.cloudgarden.speech.CGRecognizer.access$10(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer$5.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:595)
    Exception in thread «main» java.lang.UnsatisfiedLinkError: nallocate
    at com.cloudgarden.speech.CGRecognizer.nallocate(Native Method)
    at com.cloudgarden.speech.CGRecognizer.(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer.getEngineList(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.a(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.createEngineList(Unknown Source)
    at javax.speech.Central.availableRecognizers(Unknown Source)
    at javax.speech.Central.createRecognizer(Unknown Source)
    at LE.Escucha.main(Escucha.java:58)
    java.lang.UnsatisfiedLinkError: enterMainEventLoop
    at com.cloudgarden.speech.CGRecognizer.enterMainEventLoop(Native Method)
    at com.cloudgarden.speech.CGRecognizer.access$10(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer$5.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:595)
    DLL already unloaded when deallocate method called

        1. que tal muchas gracias por tan buen tutorial, podrias especificar como agragar la libreria en classpath. me podrias responder al email muchas gracias

  42. Alguien logro corregir el error:

    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Exception en java.lang.NullPointerException
    java.lang.NullPointerException
    at javaapplication2.Escucha.main(Escucha.java:69)
    >> Initializing Cloudgarden’s JSAPI 1.0, version 1.7.0
    >> Free for personal use only.
    >> Any form of commercial, corporate or institutional use requires purchase of a license.
    >> Please visit http://www.cloudgarden.com for details.

    >> Shutting down Cloudgarden’s JSAPI 1.0 version 1.7.0

    Tengo todo instalado como especifican pero sigo sin poderlo hacer funcionar, estoy usando XP

    1. Hola Ray a mi me sirvió descargarme un motor de arranque de voz de la pagina q publico David, entra a la pagina y veras unos programas .exe, yo los instale y ya me hace el reconocimiento, el unico problema q tengo es q después de dictar alguna palabra se me desborda y hace un bucle infinito hasta q lo paro, si alguien sabe de este error espero me pueda dar la respuesta.

  43. A mi si me funciona, pero el problema que tengo es el siguiente.
    yo quiero que solo me permita ingresar una palabra y luego que se detenga, pero sin utilizar el System.exit(0). ya que este se sale de la ejecución.

    por si alguien sabe porfa!!!!

  44. Muchas gracias Cmop por tu aporte, me ha sido de mucha ayuda en un proyecto final de IA que estoy elaborando para la Universidad de verdad que ha sido muy valioso

  45. Valioso aporte!

    Pero alguien podría decirme como hicieron para solucionar el error: java.lang.NullPointerException, en la clase Escucha.

    De antemano gracias.

    Saludos,
    Harssed

    1. Listo, mi solución fué la que implementó David en la publicación del día 29 de Septiembre 29 de 2010 a las 9:09 pm. La cuestión está en que el sintetizador está en Inglés.

  46. Hola como estan tengo una duda este programa tambien funciona con Visual Basic o talvez tngas o sepas de alguna libreria para visualbasic, gracias espero respondas …

  47. Hola,

    Quisiera saber si hay alguna versión para Windows 7 de 64 bits.

    En 32 corre de manera excelente, pero como ocupo pasarlo a la portátil me pide que tiene que ser versión de 64 bits, espero puedas ayudarme.

    De antemano muchas gracias.

    1. Yo mismo me respondo, ya logre solucionar mi problema.

      E estado haciendo mas pruebas cambiando palabras al diccionario y funciona de maravilla 😀

  48. Hola amigo ya hize la aplicacion de la voz y todo lo que pusiste, pero solo detecta hasta la palabra Programacion cuando digo Clases, Horario, Orientada y lo demas q queda no me reconoce las palabras no me sale ningun error, el microfono que uso esta bien lo eh configurado me podrias decir cual es el error porque no me reconoce las demas palabras.
    Hasta luego.
    Espero respondas ….

  49. HOla soy nueva en java, tengo un proyecto escolar en el cual necesito que el sistema escriba las palabras que le dicto. me podrias orientar en el uso del cloud garden. tu ejemplo me a ayudado mucho a entender un poco mas del cloud ya que nunca lo habia utilizad, pero necesito que me imprima lo que le digo para asi mandarlo como parametro. saludos 😀

  50. Estoy usando la libreria desde NETBEANS 1.7 con SDK 1.7 me sale el siguiente error podrias comertarme si funciona en sistemas de 64-bit.

    Saludos y Gracias

    Jose Luis

    run:
    Using 64-bit native code – SAPI4 is NOT supported
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0_x64
    Implementation contained in files cgjsapi.jar and cgjsapi170_x64.dll
    The cgjsapi170_x64 file could not be loaded.

    This means that either your evaluation period has
    expired or the cgjsapi170_x64 file is not in your system’s PATH.
    java.lang.UnsatisfiedLinkError: no cgjsapi170_x64 in java.library.path

    If your evaluation period has expired and you wish
    to purchase a Personal or Professional license, please
    visit the CloudGarden website at http://www.cloudgarden.com.

    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    If the cgjsapi170_x64 file could not be found, you can place it in
    the directory from which you are executing your Java code.
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    =====================================

  51. Con algunos ajustes igual sale el siguiente error:

    run:
    Using 64-bit native code – SAPI4 is NOT supported
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0_x64
    Implementation contained in files cgjsapi.jar and cgjsapi170_x64.dll

    Al parecer la version no es soportada para sistemas de 64-bit, favor de confirmarme esto pues tendre que tomar otro camino para un proyecto que usa justamente sistemas de 64-bit.

    Saludos y Gracias

    Jose Luis

  52. Bueno compañeros solucione el problema las librerias DLL hay que copiarlas a la carpeta de Window entonces recien funciona todo ok.

    Saludos y Gracias

    Jose Luis

  53. Buenas tardes, Cmop…

    Por favor tengo el mismo inconveniente que el comentario numero 46… Puedes aclararnos ese problema… Te lo agradecería mucho.

  54. bueno yo hice lo que sugiere cmop y resulta que no corre me sale un mensaje diciendo que ya expiraron los archivos o que no se encuentran en el path alguien sabe como puedo arreglar es problema de antemano gracias por su colaboriacion

  55. que honda chatos me podrian dar una ayudada, ya baje la libreia pero de donde saco los archivos cgjsapi.jar y cgjsapi170.dll
    y la libreria TalkingJavaSDK-170 solo tengo que meterla en la carpeta del JDK, en la ruta que comentan, de favor me pueden contestar…………….

  56. try {

    recognizer = Central.createRecognizer(new EngineModeDesc(Locale.ROOT));
    81** recognizer.allocate();

    FileReader grammar1 = new FileReader(«c:/SimpleGrammarES2.txt»);

    run:
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    java.lang.NullPointerException
    Exception en java.lang.NullPointerException
    at javaapplication4.Escucha.main(Escucha.java:81)
    >> Initializing Cloudgarden’s JSAPI 1.0, version 1.7.0
    >> Free for personal use only.
    >> Any form of commercial, corporate or institutional use requires purchase of a license.
    >> Please visit http://www.cloudgarden.com for details.

    >> Shutting down Cloudgarden’s JSAPI 1.0 version 1.7.0

    BUILD SUCCESSFUL (total time: 0 seconds)

    cual podria ser el error en la fila 81

  57. hola, muchas gracias!!!
    el ejemplo funciono muy bien!!!
    lo que estaba pensando en hacer un applet con este código, la idea es que escriba en un textarea, bueno si alguien a hecho algo similar agradecería que me ayudara
    desde ya muchas gracias!!!
    salu2

  58. Lo ejecute pero no corre, sale el sgte. error. Espero una respuesta positiva.
    Desde ya muchas gracias,
    Leo

    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    The cgjsapi170 file could not be loaded.

    This means that either your evaluation period has
    expired or the cgjsapi170 file is not in your system’s PATH.

    If your evaluation period has expired and you wish
    to purchase a Personal or Professional license, please
    visit the CloudGarden website at http://www.cloudgarden.com.

    If the cgjsapi170 file could not be found, you can place it in
    the directory from which you are executing your Java code.
    =====================================
    java.lang.UnsatisfiedLinkError: no cgjsapi170 in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.cloudgarden.loader.Loader.loadJSAPILibrary(Unknown Source)
    at com.cloudgarden.speech.CGEngine.loadLibs(Unknown Source)
    at com.cloudgarden.speech.CGEngine.(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.createEngineList(Unknown Source)
    at javax.speech.Central.availableRecognizers(Unknown Source)
    at javax.speech.Central.createRecognizer(Unknown Source)
    at Escucha.main(Escucha.java:53)
    java.lang.UnsatisfiedLinkError: com.cloudgarden.speech.CGRecognizer.enterMainEventLoop()I
    at com.cloudgarden.speech.CGRecognizer.enterMainEventLoop(Native Method)
    at com.cloudgarden.speech.CGRecognizer.access$10(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer$5.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Exception in thread «main» java.lang.UnsatisfiedLinkError: com.cloudgarden.speech.CGRecognizer.nallocate(II)I
    at com.cloudgarden.speech.CGRecognizer.nallocate(Native Method)
    at com.cloudgarden.speech.CGRecognizer.(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer.getEngineList(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.a(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.createEngineList(Unknown Source)
    at javax.speech.Central.availableRecognizers(Unknown Source)
    at javax.speech.Central.createRecognizer(Unknown Source)
    at Escucha.main(Escucha.java:53)
    java.lang.UnsatisfiedLinkError: com.cloudgarden.speech.CGRecognizer.enterMainEventLoop()I
    at com.cloudgarden.speech.CGRecognizer.enterMainEventLoop(Native Method)
    at com.cloudgarden.speech.CGRecognizer.access$10(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer$5.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    DLL already unloaded when deallocate method called

      1. ESTOY TRABAJANDO EN ESE PROYECTO Y AYER QUE LO COMPILE ME SALIO ESE MISMO ERROR. HACE DOS MESES QUE TERMINE ESE PROYECTO, Y AHORA QUE QUISE HACER UNAS MODIFICACIONES ME SALE ESA PARTE DE LA DICHOSA LIBRERÍA QUE YA SE VENCIÓ, SALE IGUAL Y SI PUEDO CORREGIR EL ERROR YO TE ESCRIBO para que sepas como lo corregí, PARA QUE SIGAS CON TU PROYECTO igual TU SI LO LOGRAS ME MANDAS UN MENSAJE, MI CORREO: estrella.211@hotmail.com, me escribes el tuyo, sale.

  59. hola tengo un error en la siguiente linea espero me puedan ayudar para sabre cual es mi error

    ResultToken tokens[] = rest.getBestTokens();

    el .getBestTokens(); es lo que me marca rojo ayuda por favor

  60. Amigos ayuda con el siguiente ejercicio, si tienen documentacion o con lo que me puedan ayudar:

    Construir un programa java-netbeans que lea en español un número dado.
    El sistema debe ser capaz de pronunciar correctamente un número máximo
    de 18 dígitos.
    Soy nuevo en este mundo de la programación, espero me puedas ayudar, gracias de antemano

  61. hay que copiar los dos archivos cgjsapi.jar and cgjsapi170.dll si utilizan netbeans, copiar los dos archivos en la ruta C:\Program Files\NetBeans 7.2\java\ant\lib.

  62. Hola mi problemilla es que ya copie las librerias por todo lado sin embargo me sigue pidiendo TalkingJavaSDK.jar ya cargue la TalkingJavaSDK-170.jar pero no me la asimila como TalkingJavaSDK.jar en los problemas de referencias dice lo siguiente :No fue posible encontrar la biblioteca «TalkingJavaSDK» Gracias 😀

    1. Empieza desde cero otra vez, te recomiendo darle formato a tu maquina,, después haz todo paso a paso y veras que si funciona, instala Netbeans 6.8 y su Jdk para esa versión. A mi me funciono.

  63. Hola cmop q buen aporte gracias por compartirlo, ahora mismo ya lo programe aunq nose nada de java, tuve problemas debido a q no me reconocía la voz pero fué xq uso XP y lo solucione instalando un motor de arranq de voz, y ya me corre el programa y me reconoce la mayoría de las palabras del diccionario, solo tengo un problemita: después de dictar alguna de las palabras el programa lo reconoce pero enseguida se desborda y no para hasta q yo lo cierro, así q te quiero preguntar si sabes algo acerca del error al parecer creo entender q está bien el ciclo for, o si alguién tuvo el mismo problema y sabe como solucionarlo para q pueda dictar todas las palabras sin q se desborde el programa.

  64. Yo se como corregir el problema del desbordamiento. Tengo meses trabajando con ese proyecto. Ahora tengo algunos problemas extras en los cuales estoy trabajando. Se tratan sobre la librería me sale un error sobre su vencimiento. pero igual ya encontrare la forma de corregirlo..Saludos

  65. Hola Pedro,
    y puedes compartir cual es la solución para evitar el desvordamiento de la aplicacion. No lo puedo cachar, pense que era un proceso aparte que corria internamente de la libreria y que no hay forma de acceder a manipular la exepcion.

    Gracias de antemano 🙂

    1. Bueno pues la verdad ami me sucedía eso porque yo implemente el código e hice algunas modificaciones para trabajar con un PIC, y este al estarlo utilizando con el circuito tenia un error que hacia que me reiniciara el micro, entonces me marcaba una excepción en el código. Pero igual dime en que lo estas usando y posiblemente te pueda ayudar. Otra cosa hay un código muy bueno en la red, yo fue el primero que utilice para mi proyecto y ese anda muy bien no marca ese error, si le buscas un poco y haces pruebas, veras que tu error corriges. sale. saludos.

  66. Ya se como resolver esto, sale, para el que guste preguntar…

    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    The cgjsapi170 file could not be loaded.

    This means that either your evaluation period has
    expired or the cgjsapi170 file is not in your system’s PATH.

    If your evaluation period has expired and you wish
    to purchase a Personal or Professional license, please
    visit the CloudGarden website at http://www.cloudgarden.com.

    1. Que tal, me gustaria saber como resolviste el problema.
      Yo estoy tratando de ejecutar el codigo pero me sale lo siguiente:

      Using 64-bit native code – SAPI4 is NOT supported
      CloudGarden’s JSAPI1.0 implementation
      Version 1.7.0_x64
      Implementation contained in files cgjsapi.jar and cgjsapi170_x64.dll
      The cgjsapi170_x64 file could not be loaded.

      This means that either your evaluation period has
      expired or the cgjsapi170_x64 file is not in your system’s PATH.

      If your evaluation period has expired and you wish
      to purchase a Personal or Professional license, please
      visit the CloudGarden website at http://www.cloudgarden.com.

      If the cgjsapi170_x64 file could not be found, you can place it in
      the directory from which you are executing your Java code.

      De antemano muchas gracias

  67. hola compañeros me alguien sabe que puedo hacer para solucionar esto

    ————————————————————————————
    The cgjsapi140 file could not be loaded.

    This means that either your evaluation period has
    expired or the cgjsapi140 file is not in your system’s PATH.

    If your evaluation period has expired and you wish
    to purchase a Personal or Professional license, please
    visit the CloudGarden website at http://www.cloudgarden.com.

    If the cgjsapi140 file could not be found, you can place it in
    the directory from which you are executing your Java code.

    ————————————————————————————

    esto se me presenta al momento de correr el programa de antemano gracias

  68. CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    java.lang.UnsatisfiedLinkError: no cgjsapi170 in java.library.path
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    The cgjsapi170 file could not be loaded.

    This means that either your evaluation period has
    expired or the cgjsapi170 file is not in your system’s PATH.

    If your evaluation period has expired and you wish
    to purchase a Personal or Professional license, please
    visit the CloudGarden website at http://www.cloudgarden.com.

    If the cgjsapi170 file could not be found, you can place it in
    the directory from which you are executing your Java code.

    hola me gustaria saber como resolver este problema….les agradeceria muchisimo a cualquiera que me ayude

  69. hola quisiera saber si me puedes ayudar con un problema que pasa al correr el programa es el siguiente:
    CloudGarden’s JSAPI1.0 implementation
    java.lang.UnsatisfiedLinkError: no cgjsapi170 in java.library.path
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    The cgjsapi170 file could not be loaded.

    This means that either your evaluation period has
    expired or the cgjsapi170 file is not in your system’s PATH.

    If your evaluation period has expired and you wish
    to purchase a Personal or Professional license, please
    visit the CloudGarden website at http://www.cloudgarden.com.

    If the cgjsapi170 file could not be found, you can place it in
    the directory from which you are executing your Java code.
    =====================================
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at com.cloudgarden.loader.Loader.loadJSAPILibrary(Unknown Source)
    at com.cloudgarden.speech.CGEngine.loadLibs(Unknown Source)
    at com.cloudgarden.speech.CGEngine.(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.createEngineList(Unknown Source)
    at javax.speech.Central.availableRecognizers(Unknown Source)
    at javax.speech.Central.createRecognizer(Unknown Source)
    at LE.Escucha.main(Escucha.java:56)
    java.lang.UnsatisfiedLinkError: com.cloudgarden.speech.CGRecognizer.enterMainEventLoop()I
    at com.cloudgarden.speech.CGRecognizer.enterMainEventLoop(Native Method)
    at com.cloudgarden.speech.CGRecognizer.access$10(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer$5.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:722)
    Exception in thread «main» java.lang.UnsatisfiedLinkError: com.cloudgarden.speech.CGRecognizer.nallocate(II)I
    at com.cloudgarden.speech.CGRecognizer.nallocate(Native Method)
    at com.cloudgarden.speech.CGRecognizer.(Unknown Source)
    at com.cloudgarden.speech.CGRecognizer.getEngineList(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.a(Unknown Source)
    at com.cloudgarden.speech.CGEngineCentral.createEngineList(Unknown Source)
    at javax.speech.Central.availableRecognizers(Unknown Source)
    at javax.speech.Central.createRecognizer(Unknown Source)
    at LE.Escucha.main(Escucha.java:56)
    DLL already unloaded when deallocate method called
    Java Result: 1
    Esque todo eso sale al correr el programa y no me corre como a ti y si copie los archivos cgjsapi.jar y cgjsapi170.dll en la carpeta “ext” pero no me corre por favor necesito ayuda

  70. Hola que honda … me aparece un pequeño error … le aplique un debug y me sale esto
    Non-existing path «C:\Users\Samuel Alvarez B\Downloads\ControlVoz By @CristhGunners\ControlVoz\${libs.edisoncorSX.classpath}» provided.
    Si me ayudan se los agradecería ….

  71. que se supone que debe llevar la clase ResultAdapter 😦 me da un error en el override y en esta linea : recognizer.addResultListener(new Escucha()); ………….por favor ayuda

  72. Compadre tengo que admitirlo este trabajo tuyo esta excelente! te has ganado mi respeto! he aprendido bastante leyendo el codigo! a entenderlo y todo, felicitaciones 🙂

    1. alguien sabe si existe alguna libreria de codigo abierto de reconocimiento de voz para windows??? y que pueda funcionar hasta en windows 8???, de ante mano por la respuesta gracias!!!!

      1. Hola cmop!, muy buen post, estoy aprendiendo mucho con tu código, y actualmente lo estoy utilizando en mi anteproyecto de tesis. Gracias.

        @ Ariel la librería funciona perfectamente en Windows 8, el cual estoy utilizando actualmente, por tanto creo no hay necesidad de que busques otro.

        Para todos aquellos que les marca un error como este:

        «Implementation contained in files cgjsapi.jar and cgjsapi170.dll
        The cgjsapi170 file could not be loaded.»

        ó este:

        Implementation contained in files cgjsapi.jar and cgjsapi170_x64.dll
        The cgjsapi170_x64 file could not be loaded.

        Deben copiar el archivo cgjsapi.jar y cgjsapi170.dll (para sistemas operativos de 32 bits) ó cgjsapi.jar y cgjsapi170_x64.dll (para sistemas operativos de 64 bits) en la carpeta:

        c:\Archivos de programa\Java\jre7\lib\ext (en caso de tener instalado el JDK 1.7),

        además en:

        c:\Archivos de programa\Java\jdk1.7\jre\lib\ext

        Luego agregarlo como una librería a tu proyecto (no importa si es eclipse o netbeans), creamos una librería, buscamos el archivo cgjsapi.jar en la ruta que acabamos de copiarlo y lo agregamos.

        Si aun asi, vuelve a marcar el error, deben copiar el archivo cgjsapi170.dll ó cgjsapi170_x64.dll en la carpeta donde se encuentra su aplicación, por ejemplo si mi aplicación esta en d:\miApp\ entonces la copio dentro de miApp y listo.

        Otro que aclarar es que no necesariamente deben poner el diccionario en el disco C, pueden colocarlo en la unidad y carpeta que Ustedes consideren conveniente, y luego editar la línea de la Clase Escucha

        FileReader grammar1 = new FileReader(«C:\SimpleGrammarES2.text»);

        por la nueva ruta en la que esta su diccionario, por ejemplo si también la coloque en mi carpeta D:\miApp\, entonces quedaría:

        FileReader grammar1 = new FileReader(«D:\miApp\SimpleGrammarES2.text»);

        Espero que les sea de utilidad!

        1. Solo como observación, las rutas para windows en java se escriben asi: funciónQueRecibe(«C:\\archivoX.txt»); y si quieren que su programa sea un poco más profesional inventen sus propias extensiones, puede ser «.dic» referente a diccionario, java sabe que el archivo contiene el texto que necesita, solo que en windows no se verá a menos que le den a la opción Abrir con…

  73. Holas gente, saludos cmop, he probado el ejemplo y me sale el siguiente error:
    ###########################################
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0
    Implementation contained in files cgjsapi.jar and cgjsapi170.dll
    Exception en java.lang.NullPointerException
    java.lang.NullPointerException
    at pruebatts.Escucha.main(Escucha.java:69)
    >> Initializing Cloudgarden’s JSAPI 1.0, version 1.7.0
    >> Free for personal use only.
    >> Any form of commercial, corporate or institutional use requires purchase of a license.
    >> Please visit http://www.cloudgarden.com for details.

    >> Shutting down Cloudgarden’s JSAPI 1.0 version 1.7.0
    ############################################
    cuando compilo escuchas.java y cuando compilo Lee.java me sale esto
    ############################################
    run:
    java.lang.ArrayIndexOutOfBoundsException: 0
    at pruebatts.Lee.main(Lee.java:19)
    BUILD SUCCESSFUL (total time: 0 seconds)
    ###########################################
    POrfavor les pido su ayuda para solucionarlo, tengo toso instalado como indican anteriormente lo que me falta instalar es el Speech SDK 5.1 de windows, tengo windows xp, necesito este ejemplo para desarrollar un proyecto de la universidad, les reugo su ayuda para resolver este error.

    Saludos cordiales

  74. Excelente luego de un poco de troubleshoot me funciono el programa pero tengo un problema cuesta mucho que reconozca las palabras, esto depende mi hardware? tengo conectado un headset, y casualmente cuando hago la prueba de sonido en mi muy fiel pero muy antiguo winXP es cuando «mejor» funciona pero si cuesta mucho que reconozca las palabras alguna idea de como mejorar esto?
    gracias
    saludos
    JAG

  75. Men, uso netbeans en Linux y en esta linea:

    ResultToken tokens [] = res.getBestTokens();

    me marca error cuando llamo la función getBestTokens();

    cuando busco si es porque me falta importar algo no me lo reconoce como parte de la libreria, o sea, no lo encuentra.
    me ayudas con eso? gracias

  76. cual sera la solucion del siguiente error: java.lang.ArrayIndexOutOfBoundsException: 0, me sale al correr el programa, he visto que a varios les ha parecido lo mismo, pero solo veo que es porque el string esta vacio, pero no habra una respuesta mas especifica, saludos

  77. Me podrias decir como debe ir el diccionario de palabras? solo me tomas las primeras 16 palabras, como debe ser la sentencia y todo. porque primero habia pensado que era la imprecision del programa luego pense que era el micro, luego las palabras que no me detectaba las puse al principio y si me las toma normalmente. y me di cuenta que tienes :

    public =
    []
    []
    []
    []
    []
    []
    [][][][][][][][][][]
    [];

    porque repites?o porque tomas unas juntas y repetidas y porque las demas no??

    Lo estoy haciendo en Eclipse. lo demas me funciona de maravilla

  78. Ojala y aun tenga oportunidad de que me respondan,
    Realmente estoy muy agradecido con este post, usé el mismo codigo de cmop, para interpretar y sintetizar e incluso el diccionario, y me funciono, perfecto. Uso eclipse en una lap de 32bits con Windows 8.1 pro.

    Este tema me gusta bastante, pero cada día me doy cuenta que hay mucho por aprender en cuanto a esto del reconocimiento de voz. Al correr mi proyecto me surgen algunas dudas que no logro resolver por mas que busco en la documentación de esta librería o en lo que a spech se refiere en los documentos de oracle.

    Bueno, entre las carpetas de Talking java vienen una serie de *.bat que aparentemente son para testear algunas funcionalidades del reconocimiento de voz de windows y en general de la appi de cloudgarden, una de estas es TestSynthetizer . alli me muetra 3 sintetizadores con 3 voces diferentes «Helena» que es la voz del video, «Zira» (en ingles) y «Sabina» que habla en español latino. Por lo que supongo que es posible cambiar la voz. así que espero que alguien se anime a decirme como hacerlo mientras sigo consultando.

  79. me sale este mensaje, alguien me puede ayudar, gracias

    Using 64-bit native code – SAPI4 is NOT supported
    CloudGarden’s JSAPI1.0 implementation
    Version 1.7.0_x64
    Implementation contained in files cgjsapi.jar and cgjsapi170_x64.dll
    >> Initializing Cloudgarden’s JSAPI 1.0, version 1.7.0_x64
    >> Free for personal use only.
    >> Any form of commercial, corporate or institutional use requires purchase of a license.
    >> Please visit http://www.cloudgarden.com for details.

    >> Shutting down Cloudgarden’s JSAPI 1.0 version 1.7.0_x64

  80. hola buen dia donde puedo encontrar las librerias de cloudgarden ya no aparece la pagina y necesito eso para un proyecto que estoy realizando

  81. Hola, perdona la molestia cmop, pero me sale un letrero que dice; SAPI4 is not supported y ejecuta, pero cuando me dice iniciar dictado ya no hace nada, ¿qué podrá ser? perdona si ya habías respondido esta pregunta, me quedé en la pregunta 33, pero seguiré buscando por si ya la habías respondido, espero me puedas hechar una mano, muchas gracias

  82. cuando lo ejecuto me sale este problemita:

    java.lang.ArrayIndexOutOfBoundsException: 0
    at ejemplo_voz.Ejemplo_voz.main(Ejemplo_voz.java:26)

  83. RIMERO VERIFICA TUS VARIABLES DE ENTORNO Path para utilizarlo en Windows 10

    C:\Program Files\Java\jre1.8.0_121\lib\ext
    C:\Program Files\Java\jre1.8.0_121\bin\jre

    C:\Program Files\Java

    Dentro del JDK de Java
    C:\Program Files\Java\jdk1.8.0_111

    Solo dentro de las siguientes direcciones
    C:\Program Files\Java\jdk1.8.0_111\jre\bin — detro de la carpeta
    C:\Program Files\Java\jdk1.8.0_111\jre\lib — detro de la carpeta

    C:\Program Files\Java\jdk1.8.0_111\lib — detro de la carpeta

    Dentro del JRE
    C:\Program Files\Java\jre1.8.0_121\bin — detro de la carpeta
    C:\Program Files\Java\jre1.8.0_121\lib — detro de la carpeta

    Dentro del proyecto de NetBeans
    En Libraries agrega cgjsapi.jar al proyecto.

    Espero les sirva 🙂

  84. hola que tal, fíjate que me dejaron un proyecto en proloj que reconozca expresiones con voz, pero utilizando java y un txt. con todas las sentencias que reconozca, pero no tiene que conectar proloj con java. Me podrías ayudar con mi duda por favor, es que he investigado y no hay mucha info. Gracias

Replica a Rony Cancelar la respuesta