RJ Auburn - One Step Beyond

6/26/2004

Java Speech

Filed under: — RJ Auburn @ 10:31 am

In case you have not seen these before I wanted to add some links to some cool Java Speech systems that are currently in development.

FreeTTS is an opensource JSAPI based TTS engine that is moving along well. Performance is not too bad and the audio quality should be ok if you develop a proper voice package.

Sphinx-4 is a Java port of the Sphinx ASR engine. Performance is inline with the C++ version and Sun has a few engineers working on the project full time.

If you are developing java based speech systems they are definitely worth a look.

6/22/2004

VoiceXML and CCXML at JavaOne

Filed under: — RJ Auburn @ 8:52 pm

I was reading the Duke Speaks! blog today and saw that there is going to be a session at JavaOne on VoiceXML and CCXML applications. I wont be attending but if you are be sure to check it out!

4/22/2004

Lesson of the day: Never close System.out in Java…

Filed under: — RJ Auburn @ 11:30 pm

Well today I learned a valuable lesson in Java. What ever you do, NEVER and I mean NEVER close the System.out OutputStream. Especially if you have a JNI program that prints to the console!

What seems to happen is that when you close the output stream it closes the stdout file descriptor. If you have JNI code that is writing to stdout it will start overwriting random bits of memory inside the JVM… As you might imagine this will cause problems ;-)

In my case it was inserting the output of my printf() messages into random tcp packets. After several hours of debugging why my network messages were invalid after running the system for a while I finally tracked down the problem by using ethereal and enabling all the JVM logging that I could. What I noticed was that about the time everything started failing the JVM loaded the OutputStream.close() method. With this clue I was able to track down the code that was causing the problems. As it turned out deep inside one of the logging modules it was calling close() on the debug streams inside the class finalizer. The only problem is that when running in test mode the default log destination was… System.out!

I hope this knowledge will save at least one other person from the hours of painful debugging that this beast caused me :-)

RJ Auburn   *   IVR   *   VoiceXML Hosting
Powered by WordPress