[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