JSAPI - Java Speech

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Ich bin gerade dabei mich mit Java - Speech zubeschäftigen, stoße da aber auf ein echt merkwürdiges Problem.
Zudem brauch man ja die JSAPI.jar, die ich mit dem freetts und einmal von dem sphinx geholt habe. Die Api habe ich dann auch brav in die Biblothek mit eingebaut. Wunderbar dachte ich und wollte den ersten versuch starten ein Text to Speech Programm zu schreiben.

Hier jetzt das Problem:

- es gibt kein Syntaxfehler in Netbeans
- es entsteht aber eine Nullpointerexception bei synthesize.allocate();

Hier der Code
Code:
package javaapplication3;
import javax.speech.*;
import javax.speech.synthesis.*;
import java.util.Locale;
public class HelloWorld {

static Synthesizer synthesizer;
static AudioListener audioListener;
static EngineListener engineListener;

    public static void main(String[] args)  {
        SynthesizerModeDesc desc = new SynthesizerModeDesc();
        Voice voice = new Voice();
        voice.setGender(2);
        voice.setAge(69);
        desc.addVoice(voice);
        desc.setLocale(Locale.GERMAN);
        try{
        Synthesizer synthesize = Central.createSynthesizer(desc);
        synthesize.allocate();
        synthesize.speakPlainText("Hallo Welt\n", null);
        synthesize.waitEngineState(synthesize.QUEUE_EMPTY);
        synthesize.deallocate();
        }
        catch(Exception e){System.out.println(e);}

    }

}

Ich habe jetzt schon seit 18 Uhr gegooglet und ausprobiert vom feinsten und ich packs einfach nicht.

Bitte helft mir :cry:
 
Code:
Central.createSynthesizer(desc);

wird dir wohl "null" returnen. Schau mal in der API ob da geschrieben steht, wann diese
Methode null zurückgibt.
 
Hmm, der erste Google Treffer ergab, dass du da wirklich nicht der erste mit dem Problem zu sein scheinst:
http://forums.sun.com/thread.jspa?threadID=760229
Ich weiß jetzt nicht, ob man dir hier auf die schnelle mehr sagen wird, als es in dem gelinkten board schon steht :roll:
Jedenfalls hat's ja einer anscheinend irgendwie in den Griff bekommen:
DougD720 hat gesagt.:
I had this problem as well - Classpaths at Runtime are the solution. You need it to have the JSAPI.jar classpath set with the runtime. In NetBeans this is under the project's properties panel. Idk about Eclipse. I'm using FreeTTS and had the error and now it works just fine.

Good luck!
sagt dir das was? ???:L
 
ich habe das theam schon gelesen...

Leider weiss ich nicht was mit: You need it to have the JSAPI.jar classpath set with the runtime.
anzufangen...

Ich war sogar schon so verzweifelt und habe an die Systemvariablen gedacht...
wo ich allerdings keine ahnung habe...

Leider gibs da nur eine hand voll deutsche themen wo die leute aber auch nicht wissen was zu tun ist...

@ hdi würde da nicht schon längst bei desc.addVoice(voice); nen nullpointer kommen wenns daran läge?

Wer mir hier mich zum Sieg führt der ist mein Meister ^^
 
Übrigens bei dem beispiel bei sun.com gibs den selben fehler...
Es ist also kein Programmierfehler sondern eher irgendwas was mir ehlt und ich irgendwo hinzufügen müsste...
Ich habe auch alle anderen jar dateien von freetts und dem sphinx in die biblothek hinzugefügt, daran liegts nich

🙁

Danke für Mithilfe
 
@ hdi würde da nicht schon längst bei desc.addVoice(voice); nen nullpointer kommen wenns daran läge?

nein ich sage nicht dass du beim erzeugen von desc ein null-Objekt kriegst, sondern
bei der Methode createSynthesizer von der Klasse Central. Deswegen meinte ich: Kuck in der API
dieser Klasse nach, dort steht für die Methode sicherlich eine Beschreibung, und dort steht auch
wann die Methode null returned.
 
The mode descriptor is passed to the createRecognizer or createSynthesizer methods of Central to create a Recognizer or Synthesizer. The created engine matches all the engine properties in the mode descriptor passed to the create method. If no suitable speech engine is available, the create methods return null.
Du hast schlicht und einfach eine zu komplizierte Aufgabe gestellt. Dieses JSAPI kann halt nicht die Stimme einer 70 jährigen Oma mit bayerischen Akzent erstellen. Versuch's mal mit Englisch und 20 und schaue erstmal, ob's überhaupt klappt... :bahnhof:
 
Ja gut habe da was:
Create a Synthesizer with specified required properties. If there is no Synthesizer with the required properties the method returns null.

http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-doc/javax/speech/Central.html#createSynthesizer(javax.speech.EngineModeDesc)
 
ja, hast du das jetzt mit irgendeiner anderen Stimme zum laufen gebracht, geht's sonst? ist dein Problem jetzt gelöst oder was soll die Aussage bedeuten?
 
Also an der stimme liegts nicht...
Es kommt trotzdem ein Nullpointer

Hdi hat schon recht...

Allerdings komme ich immernoch nicht zur Lösung


🙁
 
Kann mir jemand sagen warum da kein Synthesizer mit den richtigen Eigenschaften entsteht?
bzw. mit welchen Eigenschaften es da funktionieren würde?

Ich habe jetzt mehrere Varianten durch und komm nicht drauf.

Ich hoffe ihr habt das Thema noch nicht abgeschrieben, ich brauche da wirklich Hilfe.

🙁
 
funktioniert denn irgendein 10-zeiler beispiel, der direkt von der offiziellen seite von JSAPI kommt? :roll:
 
man man man...
So Gut... endlich mal was was sich wirklich gelohnt hat...


FÜR ALLE DIE JEMALS DAS PROBLEM HATTEN ODER HABEN WERDEN:

Ganz wichtig das ihr nicht nur die libaries bearbeitet, sondern auch die speech.properties (eine Datei im freetts) ins homedirectory speichert... wer das nicht weiss, der kann ewig alles versuchen und es nicht schaffen ^^

Vielen Dank für Eure Bemühungen zu solch später Uhrzeit...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben