Pregunta

Estoy tratando de usar Freetts, aquí está el código:

import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;

public class FreeTTSVoice {

public static final String VOICE_ALAN = "alan";
public static final String VOICE_KEVIN = "kevin";
public static final String VOICE_KEVIN16 = "kevin16";

private Voice voice;

public FreeTTSVoice(String voiceName) {

    VoiceManager voiceManager = VoiceManager.getInstance();
    voice = voiceManager.getVoice(voiceName);

    if (voice == null) {
        System.err.println(
            "Cannot find a voice named "
            + voiceName + ".  Please specify a different voice.");
        System.exit(1);
    }
}

public void speak(String msg) {
    voice.speak(msg);

}

public void open() {
    voice.allocate();
}

public void close() {
    voice.deallocate();
}

public static void main(String[] args) {
    System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");

    FreeTTSVoice me = new FreeTTSVoice(FreeTTSVoice.VOICE_KEVIN);
    me.open();
    me.speak("Hello java is smart. isn't is?");
    me.close();
}

}

se compila bien, pero arroja el siguiente error de ejecución:

    pkswatch@neurals:~/dev/java/speech/viame-speech$ javac FreeTTSVoice.java
    pkswatch@neurals:~/dev/java/speech/viame-speech$ java FreeTTSVoice 
    Exception in thread "main" java.lang.Error: Unable to load voice directory.java.lang.ClassNotFoundException: com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory
    at com.sun.speech.freetts.VoiceManager.getVoiceDirectories(VoiceManager.java:198)
    at com.sun.speech.freetts.VoiceManager.getVoices(VoiceManager.java:110)
    at com.sun.speech.freetts.VoiceManager.getVoice(VoiceManager.java:502)
    at FreeTTSVoice.<init>(FreeTTSVoice.java:15)
    at FreeTTSVoice.main(FreeTTSVoice.java:39)

Estoy usando: Versión Java "1.6.0_24"

Entorno de tiempo de ejecución de OpenJDK (ICEDTEA6 1.11.3) (6B24-1.11.3-1UBUNTU0.12.04.1)

VM de servidor OpenJDK (construir 20.0-B12, MODO MIXTO)

Freetts versión 1.2.2

¿Por qué está dando ese error?Por favor ayuda

¿Fue útil?

Solución

Probablemente algunos frascos no estaban vinculados correctamente. ¡Comencé a trabajar tan pronto como construí el proyecto usando NetBeans!

Gracias, chicos (@NETBEANS) .. U guardaron mi día!:)

Para aquellos que pueden tener el mismo problema, use NetBeans para evitar la molestia de las bibliotecas.

  1. Agregar lib / freetts.jar de la carpeta "lib" en "freetts-1.2.2-src.zip" (descargable desde sf.net )
  2. agrega la carpeta JDK (si aún no está en la lista) para proyectar las bibliotecas
  3. ¡estás hecho!Ahora ejecuta el código.

Otros consejos

Obtuve la misma excepción recientemente, esta excepción se debe a que en su aplicación ha agregado frascos en la ruta de construcción, pero no en carpeta lib.

Agregue los frascos en la carpeta LIB y funcionará. Espero que ayude.

Encontré una solución en el siguiente foro de Java: https://community.oracle.com/thread/ 2182800

Intente configurar SystemProperty que se usa el sintetizador ..

System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");

¡Ahora funciona bien!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top