Ausnahme mit Freetts bei der Verwendung von kevin oder mbrola
Ich versuche, ein Programm auszuführen, mit freetts. Ich bin in der Lage, das Programm zu kompilieren aber ich bin nicht in der Lage zu verwenden kevin oder mbrola Stimmen, bekomme ich die folgenden Ausgabe-Nachricht am Ende
System-property "mbrola.base" ist nicht definiert. Nicht verwenden MBROLA-Stimmen.
LINE nicht VERFÜGBAR: Format pcm_signed 16000.0 Hz, 16 bit 1 Kanal big-endian -
import javax.speech.*;
import javax.speech.synthesis.*;
import java.util.*;
class freetts {
public static void main(String[] args) {
try{
Calendar calendar = new GregorianCalendar();
String sayTime = "It is " + calendar.get(Calendar.HOUR) + " " + calendar.get(Calendar.MINUTE) + " " + (calendar.get(Calendar.AM_PM)==0 ? "AM":"PM");
Synthesizer synth = Central.createSynthesizer(null);
synth.allocate();
synth.resume();
synth.speakPlainText(sayTime, null);
synth.waitEngineState(Synthesizer.QUEUE_EMPTY);
synth.deallocate();
}
catch(Exception e){
e.printStackTrace();
}
}
}
- Ich habe nicht in eine lange Zeit. Aber, haben Sie alles, was Sie brauchen in Ihrem classpath? Auch von dem, was ich erinnere mich, es war etwas, das Sie in Ihrem home-Verzeichnis (das war eine ältere version), das könnte ein weiterer Grund sein für ein problem (wenn Sie noch brauchen, um dies zu tun). Es kann auch andere Umgebungsvariablen, die Sie benötigen, um, wie haben Sie, um ein MBROLA_HOME variable. Haben auch Sie schon in einem der Beispiel-Programme, die mit ihm kamen? Im sorry zu halten, Fragen zu stellen, aber Sie helfen, das problem einzugrenzen.
- sorry, ein paar mehr, die line nicht verfügbar, Ausnahme kann geworfen werden, wenn Sie versuchen zu spielen, klingt in der gleichen Zeit, je nachdem, was Sie getan haben, um die Dateien wiedergeben. Sie können zeigen, einige der code, den Sie verwenden, um zu spielen Sie die Stimme.
- Wir kopieren die Rede.Eigenschaften, die ich schon gemacht. Jedoch bin ich nicht in der Lage, zu binden, das mbrola voice-Schnittstellen withmy Programm noch die Standard-kevin Lautsprecher aber ich habe das kevin Benutzer in meinem Programm 's classpath
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, dass "Zu aktivieren FreeTTS Unterstützung für MBROLA, lediglich kopieren mbrola/mbrola.jar zu lib/mbrola.jar. Immer, wenn Sie dann laufen alle FreeTTS-Anwendung, geben Sie die "mbrola.base" - Verzeichnis als ein-system-Eigenschaft:
Fand ich unter:
http://freetts.sourceforge.net/mbrola/README.html
http://workorhobby.blogspot.com/2011/02/java-audio-freetts-line-unavailable.html
Einen großen Dank an den Autor.
Programm basiert auf FreeTTS, die Kostenlose text-to-speech-engine für Java, wurde immer gelegentliche Fehler
Stellt sich heraus, es ist keine Java-Ausnahme oder einen anderen Mechanismus zur Erkennung dieser Fehler tritt innerhalb der FreeTTS-Bibliothek. Alles, was Sie bekommen, ist die Nachricht im System.aus, so gibt es keine gute Art zu reagieren programmatisch.
Problemumgehung: Konfigurieren Sie die FreeTTS-audio-player, um zu versuchen den Zugriff auf das audio-Gerät mehr als einmal, bis es gelingt. In diesem Beispiel wird eine kurze Verzögerung von 0,1 Sekunden wird verwendet, um nicht verpassen eine Gelegenheit, sich das audio-Gerät; wir versuchen für 30 Sekunden:
Wenn das audio-Gerät wird permanent von einem anderen Programm verwendet, gibt es natürlich keinen Weg, um Zugriff zu erhalten. Unter Linux ist dieser Befehl zeigt die ID des Prozesses, der gerade in der Hand hält Sie das audio-Gerät, so können Sie dann versuchen, um loszuwerden, das problematische Programm:
Den zweiten Satz hat nichts zu tun mit mbrola, aber mit einem horrenden java-linux-sound-bug ist noch nicht behoben.
Überprüfen Sie den Dritten post hier:
https://forums.oracle.com/forums/thread.jspa?threadID=2206163
Passiert ist, da freetts "trusts" die sourcedataline, zu tun, anstatt die Abhilfe auf diesem posten. Ist der bug in der jdk, kann aber umgangen werden, indem Sie herausfinden, wo in freetts, was geschieht, und setzen Sie die Problemumgehung & neu kompilieren.
Hier ist ein testcase
Ich weiß, ich bin Entsendung es wenig zu spät, aber dies kann jemand helfen. Ich habe versucht, mit sowohl kevin und mbrola, und es funktionierte für mich. Bitte finden Sie den code unten.
Und fügen Sie die unten Abhängigkeiten zu Ihrem pom.xml Datei.
Hoffe, dass dies hilfreich sein wird.