2

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-1ubuntu0.12.04.1)

OpenJDK サーバー VM (ビルド 20.0-b12、混合モード)

FreeTTS バージョン 1.2.2

なぜそのエラーが発生するのですか?助けてください

4

3 に答える 3

2

おそらく、いくつかの jar が正しくリンクされていませんでした..netbeans を使用してプロジェクトをビルドするとすぐに作業を開始しました!

みんなありがとう(@netbeans)..あなたは私の一日を救った!:)

同じ問題を抱えている可能性がある人は、ライブラリの煩わしさを避けるために netbeans を使用してください。

  1. "freetts-1.2.2-src.zip" ( sf.netからダウンロード可能)の "lib" フォルダーから lib/freetts.jar を追加します。
  2. jdk フォルダー (まだリストされていない場合) をプロジェクト ライブラリに追加します。
  3. これで完了です。コードを実行します。
于 2012-10-02T07:18:15.920 に答える
1

最近同じ例外が発生しました。この例外は、アプリでビルド パスに JAR を追加したが、lib フォルダーには追加しなかったためです。

Jars を lib フォルダーに追加してください。動作します。それが役に立てば幸い。

于 2016-10-16T13:01:40.147 に答える