[sword-devel] Greetings/ Text-to-speech
Glenn Reed
sword-devel@crosswire.org
Sun, 8 Sep 2002 09:54:24 +1200
Greetings,
Well, it seems like there may be some interest after all. :) Not that I was
trying to pull you away from your release schedule.
Having complete a release of the talking bible project I have learn't quite a
bit about what will work and what won't. I rather took the easy approach to
try and get something up and running quickly (rather than concentrate on
brilliant design which would have pushed my release schedule back even
further). In fact the Truth2000 project is several years of work and dates
back before its release on sourceforge when it was a personal Perl project
using TK and POE. Prior to uploading it to sourceforge I rewrote it in C\C++
using GTK. So I have learn't alot in that time.
Some things you should know.
1) Festival TTS is blocking and can cause a sluggish user interface. At the
moment I am thinking threads. Using sockets to a separate running server
process (not thread) eliminated much of this sluggishness but I could see
that it was still present in some cases. Linking directly into these
festival libraries (without using threads) would make this problem much worse.
2) Festival TTS uses letter-to-sound rules to pronounce words that it
doesn't recognize. Gets them right alot of the time but mispronunciation
shows up quite frequently with biblical words. eg. Elijah - pronounced as
e-lid-jar.
Integration : (To answer question below)
----------------------------------------------
I integrated festival into truth2000 very loosely. Festival runs as a
separate server process (unrelated to truth2000). Truth2000 talks to
festival through a TCP Socket. This is the easiest approach.
Festival could be linked to C\C++ programs directly as a library. I have
written a few very small programs as "proof of concept" to satisfy myself
that it would work for me. But going this way will definitely require
threads, in my opinion, as the calls are blocking. Threads was a layer of
complexity that I decided to avoid in the initial stages.
For the Future
----------------
I would like to see festival integrated as libraries rather than as socket
calls. However I am sure this would be a ***big*** project. If you want to
go this way I could take on the role of advisor.
I will probably try and concentrate my efforts on getting Festival to
pronounce biblical words correctly. This can be done relatively simply by
adding entries to Festival's lexicon using a well defined set of phonemes. I
will probably work on creating a tool in Perl or Python \ TK to aid in this
work to automatically create the Festival script for the lexicons. It can be
done on the festival command line but is very awkward. I believe this would
benefit both our projects irrespective of what directions we decide to go in
the future.
- Glenn.
On Sunday 08 September 2002 06:54 am, you wrote:
> On Sat, 7 Sep 2002 porton@narod.ru wrote:
> > > I believe your text-to-speech mechanism would be a very cool addition
> > > to Sword. How difficult would it be to integrate it?
> >
> > A false belief (if you are about Sword library, not BibleCS). Individual
> > Sword's front-ends can just call some speech engine (such as Festival)
> > themselves directly, not through Sword.
>
> Actually, we would tend to do just this (integrating with Sword, not
> frontends) whenever possible. If we wanted TTS, we should try to build it
> into Sword at the library level to provide the functionality to ALL
> frontends. This helps keep the frontends on an equal level as much as
> possible, which allows us to provide similar feature sets to users on
> different platforms. If all our TTS options were platform dependant, that
> would be about the only good reason to avoid integration with the library
> and go straight to the frontend.
>
> It's essentially the same as we have done with ICU.
>
> --Chris