문제

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를 사용하여 라이브러리의 번거 로움을 피하십시오.

  1. "freetts-1.2.2-src.zip"의 "lib"폴더에서 lib / freetts.jar 추가 ( sf.net )
  2. 프로젝트 라이브러리에 JDK 폴더 추가 (아직 나열되지 않은 경우)
  3. 당신은 완료되었습니다!이제 코드를 실행하십시오.

다른 팁

나는 동일한 예외를 얻었습니다.이 예외는 앱에서 빌드 경로에 항아리를 추가했지만 안에 있지 않기 때문입니다. lib 폴더.

lib 폴더에 JAR을 추가하고 작동합니다. 희망이 도움이됩니다.

다음 자바 포럼에서 해결책을 찾았습니다. https://community.oracle.com/thread/ 2182800

신디사이저가 사용하는 SystemProperty를 설정하십시오.

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

이제는 멋지게 작동합니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top