[Kde-accessibility] Proposol (with implementation) for synthesizer interface

Olaf Jan Schmidt ojschmidt at kde.org
Tue Mar 30 20:20:53 CEST 2004


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Roger!

Thanks for describing the interface.

> The low level interface for speech synthesizers including code to
> interface with hadifix/mbrola (for German speech) and freephone/mbrola
> (for English speech).

At FOSDEM, you said that your softspeech driver could be used for other 
software TTS system like Festival as well. Would this need changes in the 
code, or would it just be a matter of passing different parameters?

> synth: Send a string to the synthesizer. Speaking can start, but it can
> be delayed to flush.

I don't fully understand this desciption.
Do you have to call flush to get the text spoken?
Or does it depend on whether flush was called any time before?

Before we could actually start to write code that bridges to your API, we 
need to extend our own API in a way that makes bridging is as easily 
possible.

Our extended API could maybe look like this:

/**
 * This is the template class for all the (processing) plug ins
 * like Festival, FreeTTS or Command
 */
class PlugInProc : public QObject{
    Q_OBJECT

    public:
        /**
         * Constructor
         */
        PlugInProc( QObject *parent = 0, const char *name = 0);

        /**
         * Destructor
         */
        virtual ~PlugInProc();

        /**
         * Initializate the speech
         * @param lang   The standard language code (e.g. "de" or "en_US")
         * @param config   Theobject for storing configuration settings
         */
        virtual bool init(const QString &lang, KConfig *config);

        /** 
         * Add a text to the queue of texts that are to be spoken
         * @param text   The text to be spoken
         */
        virtual void sayText(const QString &text);

        /**
         * Start the actual talking
         */
        virtual void startTalking();

        /**
         * Stop synthesizing as fast as possible,
         * delete any buffered speech.
         */
        virtual void stopTalking();

        /** 
         * Set a speech synthesis parameter
         * @param name   The name of the parameter
         * @param value   The value of the parameter
         */
        virtual void sayText(const QString &name, const QString &value);

        /** 
         * Set a speech synthesis parameter
         * @param name   The name of the parameter
         * @return   The value of the parameter
         */
        virtual QString sayText(const QString &name);
};

Gary, what do you think about this API?

Roger, would this include everything that would be needed for using 
softspeech and the other speech drivers?

Bill, Peter, any comments?

> Indexing does not work with most of the synthesizers, currently it is
> not used in brass.

Good to know, that means we can ignore that for now and discuss that 
later.

Olaf
- -- 
Olaf Jan Schmidt, KDE Accessibility Project
KDEAP co-maintainer, maintainer of http://accessibility.kde.org

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iEYEARECAAYFAkBpuoUACgkQoLYC8AehV8eWegCfeTIX5vSFDx9CCbINwwl2sqoF
maoAoMTBY7p03nuqnhE3a194cLTVvU5r
=TXAY
-----END PGP SIGNATURE-----



More information about the kde-accessibility mailing list