Freetts incapaz de encontrar cualquier voz
-
12-12-2019 - |
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
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.
- Agregar lib / freetts.jar de la carpeta "lib" en "freetts-1.2.2-src.zip" (descargable desde sf.net )
- agrega la carpeta JDK (si aún no está en la lista) para proyectar las bibliotecas
- ¡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!