speech-dispatcher-cs: Základní design
1.2 Základní design
===================
V komunikaci mezi všemi různými aplikacemi a syntetizéry je obrovský
nepořádek. Proto jsme chtěli, aby byl Speech Dispatcher vrstva
oddělující aplikace a syntetizéry tak, aby se aplikace nemusely starat o
syntetizéry a syntetizéry se nemusely starat o interakci s aplikacemi.
Rozhodli jsme se implementovat Speech Dispatcher jako server, který
přijímá od aplikací příkazy přes protokol nazvaný 'SSIP', zpracovává je
a, pokud je to nutné, zavolá příslušnou funkci daného výstupního modulu,
který pak komunikuje s některým z různých syntetizátorů.
Každý klient (aplikace, která chce mluvit) otevře socketové spojení
na Speech Dispatcher a volá funkce jako say(), stop(), pause()
poskytované knihovnou implementující tento protokol. Tato sdílená
knihovna je stále na straně klienta a posílá Speech Dispatcheru SSIP
příkazy přes otevřený socket. Když příkazy dorazí do Dispatchera, ten
je zpracuje, přečte text, který by měl být přeříkán a vloží jej do
fronty podle jeho priority. Potom se rozhodne kdy, s jakými parametry
(nastavovanými klientským programem i uživatelem) a na jakém syntetizéru
zprávu nechá přemluvit. Tyto požadavky na mluvení jsou pak zpracovávány
výstupními moduly (pluginy) pro různé hardwarové a softwarové
syntetizéry a přeříkány nahlas.
[image src="figures/architecture.png" alt="Architektura Speech Dispatchera" text=" applications protocol output modules
interface Speech Dispatcher core synthesizers
.-----------------------.
|Emacspeak| :s l: < > | Speech Dispatcher | :m : |Apollo|
:h i: <S> | - configuration | :o : |Festival|
|Speakup| :a b: <S> | - synchronization | :d A: |Flite|
:r r: <I> | - sound icons | :u P: .
|User center| :e a: <P> | - history | :l I: .
. :d r: < > | - punctuation, ... | :e : .
. : y: < > | [||| priority queues] | : : .
. : : < > | | : : .
`-----------------------'" ]
Detailní popis programování klientů i serveru je k dispozici v
anglickém manuálu.