Modul pro Speech Dispatcher - Dokumentace

Zadaní (jako semestrální práce z předmětu KKY/SVP)

Zadáním od pana Ing. Daniela Tihelky, Ph. D bylo vytvoření "pluginu" pro jednotné rozhraní k řečové syntéze Speech Dispatcher (Od softwarové laboratoře Free(b) Soft) tak, aby toto rozhraní pracující pod operačním systémem Linux mohlo využívat ke hlasové syntéze (v českém jazyce) syntetizér vyvinutý na Katedře kybernetiky Fakulty aplikovaných věd Západočeské univerzity v Plzni.

Postup řešení

Rozsah této práce byl předem těžko určitelný. K dispozici jsem měl zdrojové kódy (málo komentované) a dokumentaci ke Speech Dispatcheru (o které ještě bude řeč později), zdrojové kódy dummy knihovny katedrálního syntetizéru (dobře komentované) a zdrojové kódy rozdělaného "pluginu" od jiného studenta, který na úkolu v minulosti pracoval. Tyto zdrojové kódy na mém počítači nešly přeložit. Objevovalo se spoustu chybějících referencí v souborech od Free(b) softu, i když byly podle všeho všechny potřebné knihovny a soubory pro vývoj na mém počítači přítomny.

Po nastudování dokumentace a prozkoumání možností jsem pana Ing. Tihelku informoval o možnostech a požadavcích Speech Dispatcheru a výstupních modulů, které poskytují rozhraní pro komunikaci Dispatcheru s různými syntetizéry.

Standardním postupem při přidávání podpory nového syntetizéru Speech Dispatcherem (dále i jen jako spd) je vytvoření právě takového výstupního modulu podle specifikací daných dokumentací ke spd a syntetizérem, který se považuje za již hotovou samostatnou aplikaci. V našem případě je syntetizér přítomen jako knihovna a je tedy možné vytvořit exekutivu, která bude tuto knihovnu využívat a vzhledem ke Speech Dispatcheru chovat jako výstupní modul. Zvolili jsme tedy tuto cestu.

Při výše uvedeném řešení je třeba dát pozor na licencování, protože plná verze knihovny syntetizéru je distribuována jako uzavřený kód a Speech Dispatcher, včetně skeletů výstupních modulů s ním poskytovaných je open source pod licencí GPL verze 2. Není tedy možné volat GPL kód z ne-GPL kódu, pokud držitel dané GPL licence neučiní výjimku.

Ve finálním stavu by modul/syntetizér měl umožňovat běh syntetizéru a přehrávače v samostatných vláknech a umožnit přehrávání již vysyntetizovaných vzorků s případnou pokračující syntézou na pozadí (hlavně u delších textů).

Schéma znázorňující paralelní průběh syntézy a přehrávání

modře: probíhající syntéza, červeně: probíhající přehrávání



Přerušení přehrávání při příchodu zprávy s vyšší prioritou nebylo zatím řešeno. Mělo by být však v režii spd.

Popis mého modulu

Modul/syntetizér vyvíjím jako součást Spech Dispatcheru, tedy ve složce se zdrojovými kódy ostatních výstupních modulů za použití původních souborů pro řízení překladu upravených pro moji potřebu.

Cesty k souborům jsou relativní ke složce speech-dispatcher-0.6.7, kam se rozbalí zdrojové kódy dané verze Speech Dispatcheru.

Současný stav (ke 20. květnu 2009)

Podle všeho se modul s knihovnou Dummy Syntetizéru chová korektně a funguje správně

Faktory ztěžující práci

Rozpory s dokumentací Speech Dispatcheru

Soubory

Soubory poskytnuté Free(b) Softem pro vývoj výstupních modulů

Pracoval jsem se zdrojovými soubory Speech Dispatcheru verze 0.6.7.

Knihovna syntetizéru

(Cesty jsou relativní ke složce SpeechTech)

Poznámka:
Konfigurační soubor pro testovací běh s adresou /dummy/src/SpeechTechTTS_Dummy.config musí mít proměnnou SndFile nastavenou na absolutní cestu zvukového souboru /dummy/data/Sentence.wav

Speech Dispatcher po instalaci

Ce je třeba pro vývoj

Překládání Speech Dispatcheru ze zdrojových souborů

Pro překlad SpeechDispatcheru je třeba glib.h a dotconf.h
*buntu (8.04, 8.10)
Fedora 10

Poznámky

*buntu (8.04, 8.10)
Společný konfigurační soubor
Pokud je ke čtení konfiguračního souboru TTS použit iniparser, pak lze použít společný konfigurační soubor pro TTS i modul. V souboru ale nesmějí být shodně pojmenované parametry. V případě konfliktů se může modul přizpůsobit TTS.

Pod čarou

Obrázky z dokumentace ke Speech Dispatcheru

Vlákna

Odkazy