Node:Basic design, Next:, Previous:Current state, Up:Introduction



Design

The communication between all these applications and synthesizers is a great mess. For this purpose, we wanted Speech Deamon to be a layer separating applications and synthesizers so that apps wouldn't have to care about synthesizers and synthesizers wouldn't have to care about interaction with apps.

We decided we would implement Speech Deamon as a server receiving commands from applications over a protocol called SSIP, parsing them and if it's necessary and calling appropiate functions of output modules communicating with the different synthesizers. These output modules are implemented as plug-ins, so that the user can just load a new module if he wants to use new synthesizer.

Each client (application that wants to speaks) opens a socket connection to Speech Deamon and calls functions like spd_say(), spd_stop(), spd_pause() provided by the shared library. This shared library is still on the client side and sends Speech Deamon SSIP commands over the socket. When these arrive at Speech Deamon, it parses them, reads the text that should be said and put it in a queues according to the priority of this message and other criterions. It then decides when, with which parameters (set up by the client and the user) and on which synthesizer it will say the message. These requests are handled by the output plug-ins (output modules) for different hardware and software synthesizers and then said aloud.

<p> See this figure: </p> <img src="figures/architecture.png" alt="Speech Deamon architecture (you can see a text version of this figure in the .info file)">

See also the detailed description of SSIP, public API and module API.