Domanda

Sto cercando di usare fretti, ecco il codice:

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();
}
.

}

Compila bene, ma getta il seguente errore di runtime:

    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)
.

Sto usando: Versione Java "1.6.0_24"

Ambiente runtime OpenJDK (ICEDTEA6 1.11.3) (6b24-1.11.3-1ubuntu0.12.04.1)

OpenJDK Server VM (Build 20.0-B12, modalità misto)

Freetts versione 1.2.2

Perché è dare quell'errore?Per favore aiuto

È stato utile?

Soluzione

Probabilmente alcuni vasetti non erano collegati correttamente .. Iniziato a lavorare non appena ho costruito il progetto usando NetBeans!

Grazie ragazzi (@netbeans) .. hai salvato la mia giornata!:)

Per coloro che potrebbero avere lo stesso problema, utilizzare NetBeans per evitare problemi di librerie.

    .
  1. Aggiungi lib / freetts.jar dalla cartella "lib" in "freetts-1.2.2-src.zip" (scaricabile da sf.net )
  2. Aggiungi cartella JDK (se non già elencata) per progettare librerie
  3. hai finito!Ora esegui il codice.

Altri suggerimenti

Ho ottenuto la stessa eccezione di recente, questa eccezione è perché nella tua app hai aggiunto vasetti nel percorso di costruzione ma non in cartella lib.

Si prega di aggiungere i vasetti nella cartella Lib e funzionerà. Spero che aiuti.

Ho trovato una soluzione nel seguente forum Java: https://community.oracle.com/thread/ 2182800

Prova SystemProperty Quale sintetizzatore uso ..

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

Ora funziona bene!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top