[Kde-accessibility] KDE Text-to-Speech (KTTSD) Updated
Gary Cramblitt
garycramblitt at comcast.net
Sun Aug 8 07:32:35 CEST 2004
KTTSD and most of the plugins have been refactored to achieve the following:
1. Plugins no longer run in a QThread, which was causing anomalies.
2. Plugins separately synthesize text to an audio file. KTTSD takes care
of sending the audio file to aRts player. This permits simultaneous synthing
of utterances while playing previous utterances. Also permits immediate stop
of playback in mid-sentence.
3. Plugins operate asynchronously. This permits simultaneous synthing of
utterances in multiple plugins.
The changes are available in the KDE CVS repository, module kdenonbeta,
directory kttsd. Since files have been added and deleted, you should do the
normal build dance, i.e.,
cd kdenonbeta/kttsd
cvs up
cd ..
echo kttsd>inst-apps
make -f Makefile.cvs
./configure
cd kttsd
make install
# If you have doxygen installed,
make apidox
If you have any trouble building or using KTTS, please contact me. I
frequently hang out in IRC at irc.kde.org channel #kde-accessibility.
Mention my nick (PhantomsDad) to get my attention.
Here are details from the ChangeLog:
* Existing release marked with tag ktts-0-1.
* New version of KTTS is 0.2.
* Many changes to KTTSD and the KTTSD plugins.
* QThreads have been mostly eliminated, which were causing anomalies.
* See libkttsd/pluginproc.h for the new plugin API. The new API is
backwards compatible to the old API.
* Plugins now perform synthesis separate from audibilizing, but they
may do both if needed. If a plugin supports separate synthesis, it returns
True in supportsSynth() method.
* If a plugin supports separate synthesis, KTTSD sends the synthesized
audio file to aRts for playback. The playback code has been designed with
future alternate playback plugins in mind, example gstreamer. (The code was
adapted from Juk with minor changes.)
* Plugins may work asynchronously, provide status via state() method
and emit signals when an operation has completed. If a plugin supports
asynchronous operation, it returns True in supportsAsync() method.
* If a plugin does not support asynchronous operation, it is wrapped
in a QThread, which is the same as before. See threadedplugin.h/cpp.
* Because playback is separate from synthesis and plugins work
asynchronously, pauseText or stopText _immediately_ pause or stop playback
in mid-sentence.
* New plugin, flite, added for direct support of Festival Lite.
* The festivalint, command, and hadifax plugins were rewritten to
support these new capabilities.
* Need someone to rework the freetts plugin. I don't have JVM.
* Each plugin (except festival and freetts) now has a "Test" button on
the configuration dialog.
* The option to play a sound on text interruption now works.
The Plugin API is viewable online at
http://accessibility.kde.org/developer/kttsd/apidocs/kttsd/html/classPlugInProc.html
The KDE Text-to-Speech API is viewable online at
http://accessibility.kde.org/developer/kttsd/apidocs/kttsd/html/classkspeech.html
Note that only minor changes have occurred to the latter.
The Plugin API is by no means final. Changes were made now in order to
support asynchronous processing and separate synthesis.
--
Gary Cramblitt (aka PhantomsDad)
KDE Text-to-Speech Maintainer
http://accessibility.kde.org/developer/kttsd/index.php
More information about the kde-accessibility
mailing list