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();
}
.
}
그것은 잘 컴플 리거나 다음 런타임 오류를 throw합니다.
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-1UBUNDUU0.12.04.1)
openjdk 서버 VM (빌드 20.0-B12, 혼합 모드)
Freetts 버전 1.2.2
왜 그 오류가 있습니까?를 도와주세요
해결책
아마도 일부 항아리가 정확하게 연결되지 않았습니다. NetBeans를 사용하여 프로젝트를 구축 한대로 일하기 시작했습니다!
감사합니다. 얘들 아, u는 내 하루를 저장했습니다!:)
동일한 문제가 발생할 수있는 사용자를 위해 NetBeans를 사용하여 라이브러리의 번거 로움을 피하십시오.
- "freetts-1.2.2-src.zip"의 "lib"폴더에서 lib / freetts.jar 추가 ( sf.net )
- 프로젝트 라이브러리에 JDK 폴더 추가 (아직 나열되지 않은 경우)
- 당신은 완료되었습니다!이제 코드를 실행하십시오.
다른 팁
나는 동일한 예외를 얻었습니다.이 예외는 앱에서 빌드 경로에 항아리를 추가했지만 안에 있지 않기 때문입니다. lib 폴더.
lib 폴더에 JAR을 추가하고 작동합니다. 희망이 도움이됩니다.
다음 자바 포럼에서 해결책을 찾았습니다. https://community.oracle.com/thread/ 2182800
신디사이저가 사용하는 SystemProperty를 설정하십시오.
System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
.
이제는 멋지게 작동합니다!
제휴하지 않습니다 StackOverflow