Question

J'essaie d'utiliser des freets, voici le code:

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

}

Il compile bien, mais jette l'erreur d'exécution suivante:

    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)

J'utilise: Version Java "1.6.0_24"

environnement d'exécution OpenJDK (ICEDTEA6 1.11.3) (6B24-1.11.3-1Buntu0.12.04.1)

OpenJDK Server VM (version 20.0-B12, mode mixte)

Freets version 1.2.2

Pourquoi est-ce que cela donne cette erreur?S'il vous plaît aider

Était-ce utile?

La solution

Probablement certains pots n'étaient pas liés correctement .. Commencé à travailler dès que j'ai construit le projet à l'aide de Netbeans!

Merci gars (@netbeans) .. U a sauvé ma journée!:)

Pour ceux qui pourraient avoir le même problème, utilisez Netbeans pour éviter les tracas des bibliothèques.

  1. Ajouter lib / freets.jar de "lib" dossier dans "freets-1.2.2-src.zip" (téléchargeable de sf.net )
  2. Ajouter un dossier JDK (si ce n'est pas déjà répertorié) aux bibliothèques de projet
  3. vous avez terminé!maintenant exécutez le code.

Autres conseils

J'ai récemment la même exception, cette exception est parce que dans votre application, vous avez ajouté des pots dans la construction de la construction mais pas dans Dossier LIB.

Veuillez ajouter les pots dans le dossier LIB et cela fonctionnera. J'espère que ça vous aide.

J'ai trouvé une solution dans le forum Java suivant: https://community.oracle.com/thread/ 2182800

Essayez de régler SystemProperty Quel synthétiseur utilise ..

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

maintenant ça marche bien!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top