Freetts не в состоянии найти любой голос
-
12-12-2019 - |
Вопрос
Я пытаюсь использовать freetts, вот код:
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();
}
.
}
Это компилируется нормально, но бросает следующее время выполнения:
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)
.
Я использую: Java версия "1.6.0_24"
Среда выполнения OpenJDK (ICEDTEA6 1.11.3) (6b24-1.11.3-11.12.04.1)
openjdk сервер vm (сборка 20,0-b12, смешанный режим)
freetts версия 1.2.2
Почему это дает эту ошибку?Пожалуйста, помогите
Решение
Возможно, некоторые банки не были правильно связаны .. Начал работать, как только я построил проект с помощью NetBeans!
спасибо ребят (@netbeans) .. ты спас мой день!:)
Для тех, кто может иметь такую же проблему, использовать NetBeans, чтобы избежать хлопот библиотек.
- Добавить lib / freetts.jar из папки "Lib" в "Фрецес-1.2.2-src.zip" (Загружается с sf.net )
- добавить папку JDK (если она еще не указана) в проектные библиотеки
- Вы сделали!Теперь запустите код.
Другие советы
Я получил одно и то же исключение недавно, это исключение, потому что в вашем приложении вы добавили банки в пути сборки, но не в lib папка.
Пожалуйста, добавьте банки в папке Lib, и она будет работать. Надеюсь, это поможет.
Я нашел решение в следующем форуме Java: https://community.oracle.com/thread/ 2182800
попробуйте установить SystemProperty, какую синтезатор использовать ..
System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
.
Теперь это работает красиво!