Cepstral Swift working with GNOME-Speech on Solaris Express!
OK...so I've been a blogging fool in the past 18 hours. I can't help myself. There's so much that's been bubbling inside me, but there's also been so much work to lead and work on Orca that I haven't felt quite right taking the time to blog. Well...everyone tells me to blog more, so I'm trying.
In a past life, I created and led the FreeTTS project when I was the principal investigator for speech in Sun Labs. FreeTTS was a great project to work on, and it ships for free with Solaris as a means to support assistive technologies such as Orca. Its full potential has never been realized, however, and we never invested the time to make the voices as good as they could be.
The speech engine we based FreeTTS on, flite, eventually became the seed for a commercial engine: Cepstral's Swift. Given the high quality of their voices, Cepstral obviously put a lot of hard work and secret sauce into Swift, but it's neat to know that FreeTTS and Swift share a similar pedigree.
In any case, I wrote a gnome-speech driver for Swift around this time last year, and it worked great on Ubuntu. Much to my shame, however, I was never able to get it to work on Solaris. A week or so ago, I stopped by Joanie's place to see some of the outstanding work she and Rich were doing with magnification. At the same time, Joanie prodded me into looking at Swift on Solaris again. We tried for an hour or so, but still had issues getting it to work. I didn't make copies of the error logs we were getting, but something seemed strange with pthreads. I just chalked it up to mixing Sun Studio and gcc libraries across a bunch of different shared libraries.
I then upgraded my machine to Solaris Express Community Edition build 79 and tried again. After making one small change to a header file for the gnome-speech driver, Swift and gnome-speech were pals. Orca was now using Cepstral's "Diane" voice on Solaris. Neat - as of gnome-speech 0.4.17 and Solaris Express Community Edition build 79, users now have their choice of a number of different high quality voices for different locales. Just make sure to do a pfexec crle -l /lib:/usr/lib:/opt/swift/lib to set up the shared libraries.
Tried installing Cepstral Swift today on SXCE build 81. Worked like a charm. Woo hoo! :-)
Posted by joanie on January 30, 2008 at 11:55 PM EST #
Just a follow up to this. When running the swift-synthesis-driver on its own on b79, it seemed to work OK. When letting Bonobo activate it, I would see test-speech fail with this:
Enter desired locale, or 'all' to display all voices: all
1. David (language en-us)
2. Diane (language en-us)
Select voice: 1
** (process:1085): WARNING **: Failed to send buffer
Segmentation Fault (core dumped)
After some debugging, it turns out that the presence of GTK_MODULES in the runtime environment seemed to be causing this, and the activated swift-synthesis-driver was failing with:
*** libc thread failure: _thread_setschedparam_main() fails
I moved /usr/bin/swift-synthesis-driver to /usr/bin/swift-synthesis-driver.orig and created a new /usr/bin/swift-synthesis-driver that merely did this:
GTK_MODULES= swift-synthesis-driver.orig $*
Worked fine after that. Dunno what's causing the problems.
Posted by Willie Walker on February 21, 2008 at 09:11 AM EST #
Good to know. But I didn't have to do that. All I did have to do post-installation was use crle to add /opt/swift/lib. So maybe things are "even more fixed" in build 81?
Posted by Joanie on February 21, 2008 at 09:42 AM EST #
pfexec crle -l /lib:/usr/lib:/opt/swift/lib
Posted by Willie Walker on February 27, 2009 at 01:38 PM EST #