modelování suprasegmentálních rysů mluvené češtiny
Transkript
modelování suprasegmentálních rysů mluvené češtiny
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ FAKULTA ELEKTROTECHNICKÁ MODELOVÁNÍ SUPRASEGMENTÁLNÍCH RYSŮ MLUVENÉ ČEŠTINY POMOCÍ LINEÁRNÍ PREDIKCE Dizertační práce Vědní obor: Telekomunikační technika Školitel: Prof. Ing. Jan Uhlíř, CSc. Vypracoval: Ing. Petr Horák Praha, 2002 Rád bych na tomto místě poděkoval Ústavu radiotechniky a elektroniky AV ČR za to, že mi svým vstřícným přístupem umožnil vytvořit tuto dizertační práci, a dále kolektivu oddělení Číslicového zpracování signálů a kolektivu Fonetického ústavu FF UK, jmenovitě pak Ing. Robertu Víchovi, DrSc., Mgr. Betty SlavíkovéHesounové, Dr. Janě Mejvaldové, Dr. Tomáši Dubědovi a Mgr. Jiřímu Hanikovi za podporu při vzniku této práce. Děkuji také své ženě Jitce a synům Kryštofovi a Prokopovi za to, že se na mne nezlobí, že se občas také věnuji jiným koníčkům, než rodině. 2 Obsah Obsah ...................................................................................................................................................................... 3 Seznam obrázků ...................................................................................................................................................... 5 Seznam tabulek ....................................................................................................................................................... 7 1 Úvod................................................................................................................................................................ 9 2 Shrnutí současného stavu problematiky ........................................................................................................ 13 2.1 Co je to řeč? .......................................................................................................................................... 14 2.1.1 Akustická rovina řeči .................................................................................................................... 14 2.1.2 Fonetická rovina řeči..................................................................................................................... 15 2.2 Syntéza řeči z psaného textu ................................................................................................................. 16 2.2.1 Fonetická transkripce .................................................................................................................... 17 2.2.2 Prozodie řeči.................................................................................................................................. 18 2.2.3 Modelování řečového signálu ....................................................................................................... 18 2.3 Způsoby realizace fonetické transkripce ............................................................................................... 19 2.4 Vlastnosti prozodie řeči......................................................................................................................... 19 2.4.1 Suprasegmentální vrstvy ............................................................................................................... 20 2.4.2 Suprasegmentální charakteristiky v časové oblasti ....................................................................... 21 2.4.3 Suprasegmentální charakteristiky v melodické oblasti.................................................................. 22 2.4.4 Suprasegmentální charakteristiky v intenzitní oblasti ................................................................... 24 2.4.5 Superpozice vlivů jednotlivých vrstev tvoření řeči ....................................................................... 24 2.5 Metody popisu řečových jednotek ........................................................................................................ 24 2.5.1 Popis řečových jednotek v časové oblasti ..................................................................................... 25 2.5.2 Popis řečových jednotek ve kmitočtové oblasti ............................................................................ 25 2.6 Metody popisu suprasegmentálních rysů řeči ....................................................................................... 25 2.6.1 Úrovně reprezentace prozodických jevů ....................................................................................... 25 2.6.2 Intonační modely........................................................................................................................... 26 2.6.3 Pierrehumbertové intonační model ............................................................................................... 26 2.6.4 Systém pro notaci prozodie ToBI.................................................................................................. 26 2.6.5 Intonační model INTSINT ............................................................................................................ 26 2.6.6 Intonační model IPO ..................................................................................................................... 27 2.6.7 Fujisakiho intonační model ........................................................................................................... 27 2.7 Parametrická analýza signálů ................................................................................................................ 29 2.7.1 Parametrické modely signálů ........................................................................................................ 30 2.7.2 Lineární predikce .......................................................................................................................... 30 2.7.3 Metody řešení normálních rovnic predikce................................................................................... 31 2.7.4 Modelování řečového signálu pomocí lineární predikce............................................................... 32 3 Cíle práce ...................................................................................................................................................... 33 4 Lineární predikce průběhu základního tónu řeči ........................................................................................... 37 4.1 Návrh LPC analyzátoru základního tónu řeči ....................................................................................... 37 4.2 Použité metody detekce průběhu základního tónu řeči ......................................................................... 41 4.2.1 Detekce základního tónu řeči autokorelační metodou................................................................... 41 4.2.2 Detekce pitchpulsů v řečovém signálu s označením znělosti ........................................................ 41 4.3 Návrh LPC syntezátoru základního tónu řeči........................................................................................ 42 4.4 Ověření funkčnosti LPC kodéru/dekodéru průběhu základního tónu ................................................... 43 5 Vlastnosti zbytkového signálu lineární predikce........................................................................................... 45 5.1 Aproximace zbytkového signálu lineární predikce ............................................................................... 45 5.1.1 Aproximace zbytkového signálu obdélníkovým signálem............................................................ 47 5.1.2 Aproximace zbytkového signálu impulsovým signálem............................................................... 53 5.1.3 Možnosti aproximace zbytkového signálu .................................................................................... 55 5.2 Závislost zbytkového signálu lineárního prediktoru na stavbě věty...................................................... 55 5.3 Využití zbytkového signálu lineární predikce pro tvorbu prozodických pravidel................................. 55 6 Experimentální část....................................................................................................................................... 59 6.1 Databáze řečového materiálu pro modelování prozodie ....................................................................... 59 6.2 Automatická segmentace řeči................................................................................................................ 59 6.2.1 Použitý syntezátor řeči .................................................................................................................. 59 6.2.2 Vlastní segmentace........................................................................................................................ 59 6.2.3 Testování automatické segmentace ............................................................................................... 63 6.3 Porovnání vlastností LPC intonačního modelu s Fujisakiho modelem ................................................. 67 3 Implementace LPC a Fujisakiho intonačního modelu do systému SpeechStudio................................. 68 6.4 6.5 Implementace rozšířeného klienta pro systém Epos.............................................................................. 70 6.6 Implementace ladícího modulu pro systém Epos.................................................................................. 71 6.7 Syntéza řeči s použitím generování základního tónu pomocí lineární predikce.................................... 73 6.7.1 Návrh pravidel pro buzení lineárně predikčního intonačního modelu........................................... 73 6.7.2 Realizace lineárně predikčního intonačního modelu v syntezátoru............................................... 74 7 Celkový přínos práce..................................................................................................................................... 77 8 Přílohy........................................................................................................................................................... 79 8.1 Seznam příloh ....................................................................................................................................... 79 8.2 Příloha A – Seznam namluvených vět .................................................................................................. 80 8.3 Příloha B – Tabulka fonetického přepisu češtiny.................................................................................. 83 8.4 Příloha C – Přehled transkripčních a prozodických pravidel systému Epos ......................................... 85 8.4.1 Pravidla využívající slovníky ........................................................................................................ 85 8.4.2 Obsahem řízená pravidla ............................................................................................................... 85 8.4.3 Strukturovaná pravidla .................................................................................................................. 86 8.4.4 Pravidla modelující prozodii ......................................................................................................... 86 8.4.5 Skládání pravidel........................................................................................................................... 86 8.4.6 Podmíněná pravidla....................................................................................................................... 87 8.4.7 Speciální pravidla.......................................................................................................................... 87 Příloha D – Přehled vytvořených programů, procedur a funkcí........................................................................ 88 8.5 Příloha E – Výpisy některých podprogramů a funkcí ........................................................................... 89 8.6 Příloha F – Výpis kódu TD-PSOLA syntezátoru s modelováním prozodie pomocí lineární predikce . 94 8.7 Příloha G – Fonetická transkripce češtiny pro systém Epos ................................................................. 97 8.8 Příloha H – Modelování prozodie češtiny pro systém Epos podle pravidel Prof. Palkové ................. 100 8.9 Příloha I – Modelování prozodie češtiny pro systém Epos pomocí lineárně predikčního modelu...... 105 8.10 Příloha J – Popis přiloženého disku CD-ROM.................................................................................... 110 9 Přehled literatury......................................................................................................................................... 111 10 Rejstřík.................................................................................................................................................... 115 4 Seznam obrázků Kapitola 2. Shrnutí současného stavu problematiky Obr. 2.1 Obr. 2.2 Obr. 2.3 Obr. 2.4 Obr. 2.5 Obr. 2.6 Obr. 2.7 Obr. 2.8 Obr. 2.9 Obr. 2.10 Obr. 2.11 Obr. 2.12 Obr. 2.13 Obr. 2.14 Schéma hlasového ústrojí. Časový průběh a spektrogram řečového signálu (věta „Vědci pracují s virgulí“). Blokové schéma TTS systému. Lingvistická část syntezátoru řeči. Lineární model produkce řeči. Modelování prozodie podle pravidel. Modelování základního tónu řeči neuronovou sítí. Ukázka mikrointonace – spojení hlásek „éza“ ze slova „syntéza“. Fujisakiho model produkce základního tónu řeči. Impulsní odezva úsekového systému Fujisakiho prozodického modelu pro vstupní pulsy -1 o velikosti Ap = 0.1, 0.25, 0.4, 0.6, 0.8 a 1.0 při α = 2 s . Odezva přízvukového systému Fujisakiho prozodického modelu na vstupní jednotkové pulsy -1 trvání T = 50, 100, 150, 200 a 250 ms při β = 20 s . Odezva přízvukového systému Fujisakiho prozodického modelu na vstupní pulsy o délce 250 -1 ms a amplitudě Aa = 0.2, 0.4, 0.6, 0.8 a 1.0 při β = 20 s . Inverzní (chybový) lineárně predikční filtr. Filtr pro syntézu pomocí lineární predikce. 14 15 16 16 17 17 18 20 26 27 28 29 31 31 Kapitola 4. Lineární predikce průběhu základního tónu řeči Obr. 4.1 Obr. 4.2 Obr. 4.3 Obr. 4.4 Obr. 4.5 Obr. 4.6 Obr. 4.7 Obr. 4.8 Obr. 4.9 Obr. 4.10 Obr. 4.11 Charakteristiky filtru pro decimaci průběhu základního tónu řeči. Ukázka interpolace průběhu základního tónu řeči. Ukázka filtrace interpolovaného průběhu základního tónu řeči. a) Ukázka decimace průběhu základního tónu řeči, b) Vypočtený zbytkový signál včetně vypočtených koeficientů filtru. a) Blokové schéma LPC analyzátoru. b) Blokové schéma vlastního bloku LPC analýzy z obr. 4.5a. Blokové schéma inverzního filtru. Struktura rekonstrukčního filtru syntezátoru základního tónu řeči. Blokové schéma LPC syntezátoru základního tónu řeči. a) Signál průběhu základního tónu řeči po LPC resyntéze a interpolaci, b) Budící signál rekonstrukčního filtru včetně 4 LPC koeficientů. Ukázka průběhu základního tónu řeči po resyntéze metodou lineární predikce. Blokové schéma řečového LPC vokodéru s LPC analýzou / syntézou průběhu základního tónu. 38 39 39 40 40 41 42 42 43 43 44 Kapitola 5. Vlastnosti zbytkového signálu lineární predikce Obr. 5.1 Obr. 5.2 Obr. 5.3 Obr. 5.4 Obr. 5.5 Obr. 5.6 Obr. 5.7 Obr. 5.8 Obr. 5.9 Obr. 5.10 Obr. 5.11 Statistické vyhodnocení LP koeficientů 144 vět ze souboru „machač1“ a „machač2“. Odezva rekonstrukčního filtru na jednotkový skok a jednotkový impuls (LP koeficienty ze souboru vět „machač1“ a „machač2“). Statistická analýza lineárně predikčních koeficientů pro jednotlivé mluvčí. Aproximace zbytkového signálu lineárního prediktoru pro větu o1d3a, w = 1, 2, 3; ε = 4. Aproximace zbytkového signálu lineárního prediktoru pro větu o1d3a, w = 4, 5, 6; ε = 4. Aproximace zbytkového signálu lineárního prediktoru pro větu d3k3a, w = 1, 2, 3; ε = 4. Aproximace zbytkového signálu lineárního prediktoru pro větu d3k3a, w = 4, 5, 6; ε = 4. Aproximace zbytkového signálu lineárního prediktoru pro větu d3k3a, w = 2; ε = 1, 3, 5. Aproximace zbytkového signálu lineárního prediktoru pro větu d3k3a, w = 2; ε = 2, 4, 8. Histogramy středních kvadratických chyb pro jednotlivé soubory vět (w = 2; ε = 4). Aproximace zbytkového signálu lineárního prediktoru pro větu o1d3a, ε = 2. 5 45 46 46 49 49 50 50 51 51 53 54 Kapitola 6. Experimentální část Obr. 6.1 Obr. 6.2 Obr. 6.3 Obr. 6.4 Obr. 6.5 Obr. 6.6 Obr. 6.7 Obr. 6.8 Obr. 6.9 Obr. 6.10 Obr. 6.11 Obr. 6.12 Obr. 6.13 TTS systém upravený pro účely automatické segmentace. Blokové schéma automatického segmentátoru řeči. Váhovací koeficienty w pro symetrickou formu bortící funkce. Ukázka DTW algoritmu na matici akumulovaných vzdáleností. Průměrné délky hlásek v jednotlivých kategoriích pro mužský a ženský hlas při automatické a manuální segmentaci (viz tab. 6.6). Ukázka automatické segmentace. Nahoře je syntetická řeč s vyznačenými hranicemi hlásek, dole pak přirozená promluva s automaticky vyznačenými hranicemi hlásek. Blokové schéma nástroje na transplantaci průběhu základního tónu z jedné promluvy na druhou. Grafické uživatelské rozhraní systému SpeechStudio. Implementace Fujisakiho intonačního modelu v systému SpeechStudio. Implementace lineárně predikčního intonačního modelu v systému SpeechStudio. Grafický klient TTS systému Epos. Nástroj pro výpis a modifikaci vnitřní datové struktury systému Epos. TTS systém s použitím generování základního tónu pomocí lineární predikce. 6 60 61 62 63 66 66 67 68 69 70 71 72 73 Seznam tabulek Kapitola 2. Shrnutí současného stavu problematiky Tab. 2.1 Závislost trvání pauz za větami na interpunkčních znacích dle [PTÁ93] Kapitola 4. Lineární predikce průběhu základního tónu řeči Tab 4.1 Výpočet decimačního filtru v prostředí Matlab Kapitola 5. Vlastnosti zbytkového signálu lineární predikce Tab. 5.1 Statistické vyhodnocení LP koeficientů 144 vět ze souboru „Machač1“ a „Machač2“ Tab. 5.2 Analýza střední kvadratické chyby pro věty o1d3a (a) a d3k3a (b) od mluvčího Machač Tab. 5.3 Statistika středních kvadratických chyb pro 72 vět souboru Machač1 Tab. 5.4 Statistika středních kvadratických chyb pro 72 vět souboru Machač2 Tab. 5.5 Statistika středních kvadratických chyb pro 72 vět souboru Záruba Tab. 5.6 Statistika středních kvadratických chyb pro 72 vět souboru Jana Tab. 5.7 Statistika středních kvadratických chyb pro různé prahové úrovně aproximace Tab. 5.8 Statistika středních kvadratických chyb pro slabiky a přízvukové takty Kapitola 6. Experimentální část Tab. 6.1 Rozdělení českých hlásek pro účely testování automatické segmentace Tab. 6.2 Procentuální výskyt chyb segmentace začátků hlásek pro mužský hlas Tab. 6.3 Procentuální výskyt chyb segmentace trvání hlásek pro mužský hlas Tab. 6.4 Počet výskytů hlásek v jednotlivých kategoriích Tab. 6.5 Procentuální výskyt chyb segmentace začátků hlásek pro ženský hlas Tab. 6.6 Procentuální výskyt chyb segmentace trvání hlásek pro ženský hlas Tab. 6.7 Průměrné délky hlásek v jednotlivých kategoriích pro mužský a ženský hlas při automatické a manuální segmentaci Tab. 6.8 Přednastavené druhy značek v systému SpeechStudio Tab. 6.9 Uspořádání úrovní TSR pro češtinu Tab. 6.10 Deklarace proměnných pro lineárně predikční intonačnmí model v souboru tdpsyn.cc Kapitola 8. Přílohy Tab. A.1 Kategorie vět prozodického korpusu Tab. A.2 Věty prozodického korpusu Tab. B.1 Fonetický přepis českých hlásek 7 Přehled použitých symbolů Kapitola 2. Shrnutí současného stavu problematiky B T t F0(t) Fb Api Aaj Gp Ga T0i T1j T2j α β γ n x(n) x̃(n) e(n) am M N . . . prodloužení hlásky [dC] . . . doba trvání hlásky [ms] . . . čas . . . průběh základního tónu v závislosti na čase . . . základní kmitočet Fujisakiho modelu . . . amplituda i-tého úsekového impulsu Fujisakiho modelu . . . amplituda j-tého přízvukového pulsu Fujisakiho modelu . . . úseková složka Fujisakiho modelu . . . přízvuková složka Fujisakiho modelu . . . čas i-tého úsekového impulsu Fujisakiho modelu . . . čas počátku j-tého přízvukového pulsu Fujisakiho modelu . . . čas konce j-tého přízvukového pulsu Fujisakiho modelu . . . koeficient časové konstanty úsekového systému Fujisakiho modelu . . . koeficient časové konstanty přízvukového systému Fujisakiho modelu . . . mezní hodnota přízvukového systému Fujisakiho modelu . . . pořadové číslo vzorku signálu . . . n-tý vzorek signálu . . . predikce signálu x(n) . . . zbytkový signál lineární predikce . . . m-tý koeficient predikčního filtru . . . řád parametrického modelu (řád lineární predikce) . . . počet vzorků signálu Kapitola 4. Lineární predikce průběhu základního tónu řeči Wp Ws Rp Rs Fs ri rci ai . . . hraniční kmitočet propustného pásma filtru . . . hraniční kmitočet nepropustného pásma filtru . . . útlum filtru v propustném pásmu . . . útlum filtru v nepropustném pásmu . . . vzorkovací kmitočet . . . i-tý autokorelační koeficient . . . i-tý reflexní koeficient . . . i-tý koeficient filtru Kapitola 5. Vlastnosti zbytkového signálu lineární predikce ej yi w k ε F0i F̃0i n V MSE . . . j-tá hodnota zbytkového signálu lineárního prediktoru . . . i-tá hodnota aproximovaného zbytkového signálu lineárního prediktoru . . . šířka aproximačního okna . . . počáteční index aproximačního okna pro i-tou hodnotu zbytkového signálu . . . prahová úroveň aproximace . . . hodnota základního tónu i-tého rámce analyzované promluvy na výstupu pitchdetektoru . . . hodnota základního tónu i-tého rámce po resyntéze pomocí lineární predikce . . . počet hodnot průběhu základního tónu řeči (počet rámců promluvy) . . . počet nenulových hodnot základního tónu řeči v promluvě (počet znělých rámců) . . . střední kvadratická chyba průběhu základního tónu po resyntéze pomocí lineární predikce Kapitola 6. Experimentální část c0 cn α cj(i) μ w f D . . . nultý kepstrální koeficient . . . n-tý kepstrální koeficient . . . koeficient zisku lineárního prediktoru . . . j-tý kepstrální koeficient i-tého rámce . . . koeficient překrytí rámců . . . váhovací funkce . . . obecná funkce . . . distanční matice 8 1 Úvod Lidská řeč je základním komunikačním prostředkem mezi lidmi a v dnešní době, kdy se mnoho věcí nedávno ještě neskutečných stává realitou díky stále většímu výpočetnímu výkonu současných počítačů, se syntetická řeč stává běžnou součástí každodenního života. Pokusy o umělou řeč jsou zaznamenány již ve druhé polovině 18. století, kdy Kratzenstein reprodukoval zvuk samohlásek spojením jazýčkové píšťaly s trubicemi rozmanitých tvarů a velikostí (1780) a von Kempelen sestavil mechanický syntezátor řeči (1791). První elektronické syntezátory, které generují rovněž pouze samohlásky, se objevují až v první polovině dvacátého století. Výraznější výsledky v této oblasti jsou datovány až v období po II. světové válce a zejména po r. 1960, kdy byla uveřejněna Fantova práce o modelování hlasového traktu [FAN60]. Bouřlivý rozvoj v oblasti syntézy řeči nastal však až s rozvojem osobních počítačů v 80. a zejména pak v 90. letech. V současné době, kdy syntetickou řeč můžeme slyšet každý den v nejrůznějších telekomunikačních či informačních systémech, se kladou stále větší požadavky na její kvalitu a přirozenost. Přestože se syntetická řeč již prakticky používá, její kvalita stále není dokonalá. Jsme schopni produkovat syntetickou řeč s velmi dobrou srozumitelností, ale s malou přirozeností. Rozdíl mezi syntetickou a přirozenou řečí je stále propastný, a to jak z hlediska modelování vlastního řečového signálu, tak z hlediska modelování prozodie řeči. Na mém pracovišti v Ústavu radiotechniky a elektroniky AV ČR se syntetickou řečí zabýváme od počátku devadesátých let. První v praxi používaný řečový syntezátor, založený na principu lineárně prediktivního kódování, pochází z roku 1992 [VÍC94a,b][VÍC95a,b][VÍC96a,b]. Syntezátory vyvinuté na našem pracovišti používají modelování prozodických rysů podle pravidel definovaných ve Fonetickém ústavu Filozofické fakulty Karlovy univerzity. V letech 1996 až 1998 probíhala spolupráce mezi naším pracovištěm a TU Drážďany na společné česko-německé syntéze řeči [HEL96]. Hledáním lepšího způsobu modelování řečového signálu se na našem pracovišti zabývá Dr. Přibil ve svých pracích o kepstrálním modelování řeči [PŘI95][PŘI97]. Od roku 1996 se provádí výzkum v oblasti modelování prozodie syntetické řeči pomocí umělých neuronových sítí (UNS), který však zatím nepřinesl praktické výsledky [VÍC96c][TUČ96][TUČ97a,b,c,d,e][TUČ98][KRK98]. Prozodii řeči jsem se začal věnovat v r. 1995, kdy jsem vytvořil nástroj pro modelování prozodie ModProz, který se používá převážně ve Fonetickém ústavu Filozofické fakulty pro tvorbu nových prozodických pravidel. Tento nástroj byl založen na syntéze řeči z psaného textu s možností měnit prozodické parametry pro jednotlivé hlásky nebo řečové jednotky (difony) [HOR96a,b,c,d]. Z hlediska přirozenosti řeči, zejména při poslechovém testování nových prozodických pravidel, vyvstala potřeba modelování prozodie na přirozeném řečovém signálu. Z tohoto důvodu jsem v r. 1996 začal pracovat na programovém systému SpeechStudio umožňujícím manuální segmentaci a popisování úseků signálu a resyntézu řečového signálu s pozměněnými prozodickými hodnotami [HOR97a,b,d]. Systém SpeechStudio byl využíván při experimentech popisovaných v této práci a byl pro její potřeby průběžně zdokonalován a rozšiřován [HOR98b,c,e,f][HOR99a,b,c,f][HOR00c][HOR01c]. Při definování nových prozodických pravidel vznikla také potřeba jejich pružného testování. V dosavadních syntezátorech bylo nutno prozodická pravidla psát přímo do zdrojového kódu syntezátoru, což byl v našem případě assembler 8086. Z toho vyplývá, že prozodická pravidla mohl modifikovat v podstatě pouze autor zdrojového kódu syntezátoru (doc. Ptáček). Na základě této situace byl v r. 1996 prof. Dohalskou motivován vývoj otevřeného systému pro převod psaného textu na řeč, jehož jsem se ujal společně s mgr. Hanikou z Karlovy univerzity. Ve spolupráci s mgr. Hanikou jsme vytvořili systém, ve kterém se jak transkripční, tak prozodická pravidla mohou zapisovat pomocí speciálního makrojazyka do konfiguračních souborů bez nutnosti znalosti zdrojového kódu a kompilace. Tento systém později dostal jméno Epos a byl rovněž rozšiřován pro potřeby této práce, zejména pak o možnost automatické segmentace řečového signálu [HOR98d][HAN98a,b]. V této práci se zabývám vedle stručného úvodu do problematiky prozodie češtiny především možnostmi parametrického popisu prozodie řeči, zejména pak průběhu základního tónu řeči, a jeho využitím pro automatickou syntézu řeči z psaného textu. Cílem práce nebyla tvorba celého nového systému pro modelování prozodie pomocí prozodických modelů, neboť tak rozsáhlý cíl je možné splnit pouze v rámci širšího kolektivu spolupracovníků v časovém horizontu několika let. Tato práce by měla ukázat výhody prozodických modelů pro modelování prozodie a možné směry dalšího výzkumu. 9 10 Část I Teoretická část 11 12 2 Shrnutí současného stavu problematiky První prakticky použitelný systém pro převod psaného textu na mluvenou řeč (Text-to-Speech – TTS System), pocházející z našeho ústavu, byl vyvinut ve spolupráci s Fonetickým ústavem Filozofické fakulty Karlovy univerzity (FF UK) v letech 1990 až 1993. Tento TTS systém byl založen na časovém spojování modelů jednotek řeči popsaných pomocí lineárně prediktivního kódování (LPC – Linear Predictive Coding) [ITA69][VÍC95a]. Inventář řečových jednotek se skládal celkem ze 441 difonu a těl samohlásek vyskytujících se v češtině a ve slovenštině. Syntéza řeči pracovala se vzorkovacím kmitočtem 8 kHz při použitém osmém řádu lineární predikce. Prozodie byla v tomto syntezátoru generována pomocí pravidel sestavených fonetiky z FF UK. Tato pravidla byla zapsána přímo ve zdrojovém kódu TTS systému, a nebylo je tedy možné během používání měnit. Tento původní TTS systém vycházel z předchozí dlouholeté práce doc. Ptáčka z FF UK v oboru syntézy řeči a zkušeností kolektivu Dr. Vícha z ÚRE AV ČR s lineárně prediktivním kódováním řeči. Popisovaný TTS systém se dodnes prakticky používá především jako pomůcka pro nevidomé a slabozraké, dále pak v telekomunikačních a informačních systémech. Vývoj našeho TTS systému probíhal od r. 1990 v několika směrech současně na pracovištích ÚRE AV ČR a Fonetického ústavu FF UK. Ve Fonetickém ústavu se pracovalo především na návrhu nového inventáře řečových prvků foneticky lépe popisujícího mluvenou češtinu a na návrhu lepších pravidel pro modelování prozodie [HOR97c]. Odchodem doc. Ptáčka z Fonetického ústavu práce na nových inventářích ve Fonetickém ústavu ustaly, přičemž žádný z do této doby vytvořených inventářů nebyl lepší, než původní, dosud používaný, inventář, jehož autorkou je E. Víchová z ÚRE a jehož poslední verze je z r. 1993. Díky příchodu nové pracovnice do ÚRE v r. 1999 pracujeme nyní na novém inventáři přímo v ÚRE. Tento nový inventář, založený na použití trifonů, obsahuje 1856 řečových jednotek [HOR01b]. V současné době jsou před dokončením trifonové inventáře pro mužský i ženský hlas. Od března 1999 je v činnosti plně automatizovaný informační systém INFOCITY vyvinutý na TU v Liberci Prof. Nouzou, ve kterém je použita syntéza řeči vyvinutá v ÚRE (možno vyzkoušet na telefonním čísle 048/5353100). Vývoj v oblasti generování prozodie probíhal v letech 1993 až 1998 ve Fonetickém ústavu pod vedením doc. Ptáčka. Prozodická pravidla, vycházející z předchozích výzkumů, definovaná v r. 1998 prof. Palkovou z FÚ, byla zapracována také do systému Epos. Od r. 1996 do r. 2000 jsme se ve spolupráci s doc. Tučkovou z ČVUT FEL snažili najít lepší způsob generování prozodie syntetické řeči s využitím umělých neuronových sítí (UNS) [TUČ97a,b,c,d,e][TUČ98]. Tato spolupráce bohužel nepřinesla žádné prakticky použitelné výsledky. To však neznamená, že by modelování prozodie pomocí UNS nebylo perspektivní, je však potřeba hledat nové přístupy k řešené problematice. V současné době pracuje na syntéze češtiny z psaného textu několik na sobě nezávislých pracovišť. V akademické sféře je to především kolektiv z Fakulty informatiky z Masarykovy univerzity v Brně pod vedením doc. Kopečka vyvíjející syntezátor Demosthenes založený na použití poloslabik a syntézy v časové oblasti. Na Katedře kybernetiky Západočeské univerzity v Plzni pracuje kolektiv pod vedením prof. Psutky na syntéze řeči založené na automatické segmentaci jednotek pomocí skrytých Markovových modelů (Hidden Markov Models – HMM). Jako jednotka je použit foném závislý na svém pravém i levém okolí; složitostí se tedy jedná v podstatě o trifonovou syntézu, kde počet řečových jednotek je cca 5000. Na Drážďanské univerzitě je vyvíjena syntéza češtiny ve spolupráci s FÚ Filozofické fakulty. Z komerční sféry lze zmínit např. firmu FROG Systems a její TTS systém CSVoice. Jak již bylo v úvodu řečeno, byla v prvních TTS systémech pravidla pro fonetickou transkripci a pro modelování prozodie zapsána přímo v programovém kódu TTS systému, a proto bylo obtížné tato pravidla vyvíjet a měnit. Z tohoto důvodu se v roce 1996 započalo ve spolupráci s FÚ FF UK s vývojem nové koncepce TTS systému, ve kterém by byla všechna transkripční i prozodická pravidla konfigurovatelná bez nutnosti rekompilace kódu. Tento systém byl posléze nazván Epos a dnes je i prakticky používán a je možné jej bezplatně získat na internetu na adrese http://epos.ure.cas.cz/ včetně zdrojových kódů [HOR98a,d][HAN01][EPOS]. Na této internetové stránce je možné tímto systémem ozvučit libovolný text. Výhodou systému Epos je plná kontrola uživatele nad procesem fonetické transkripce a modelování prozodie. Z tohoto důvodu se na Epos budu odvolávat při popisu problematiky fonetické transkripce a modelování prozodie a také při vlastních experimentech využívajících TTS systém Epos. Systém Epos používá architekturu klient/server s komunikací prostřednictvím speciálního autory navrženého protokolu pracujícího na TCP vrstvě [HAN99]. Díky tomu je Epos nezávislý na hardwarové platformě i na použitém operačním systému. Tím, že byly ze zdrojových kódů všechny jazykové závislosti přesunuty do konfiguračních souborů, stal se systém Epos nezávislý na jazyku. Přidání dalšího jazyka je pak v podstatě otázkou vytvoření konfiguračních souborů a hlasových inventářů pro daný jazyk [HAN00]. 13 2.1 Co je to řeč? Jazyk nám umožňuje předávat myšlenky prostřednictvím souboru znaků ať už grafických (latinka, řecká abeceda, azbuka, čínské ideogramy apod.), akustických (např. pomocí řeči), anebo jiných. Řeč je jedním z nejstarších a nejpřirozenějších prostředků komunikace mezi lidmi a je také jako prostředek komunikace nejčastěji užívána. Není divu, že se lidé snaží vytvářet zařízení umožňující automatické vytváření, příp. i rozpoznávání řeči. Informaci, kterou lidská řeč přenáší, můžeme analyzovat mnoha způsoby. Vědci zabývající se řečí obvykle rozlišují několik vzájemně překrývajících se úrovní popisu řeči, a to: akustická, fonetická, morfologická, syntaktická, sémantická a pragmatická. Pro vlastní syntézu řeči jsou nejdůležitější úrovně akustická a fonetická. 2.1.1 Akustická rovina řeči Řečový akustický signál je speciálním případem akustického signálu nesoucím řečovou informaci. Podstatou akustického signálu je vlnění elastického prostředí v oboru slyšitelných frekvencí vznikající kontrolovanými pohyby struktur hlasového ústrojí patrných na obr. 2.1. Hlasové ústrojí lze z akustického hlediska považovat za soustavu zvukových zdrojů a rozvětveného zvukovodu. Jedna z větví tohoto zvukovodu (větev nazální) má prakticky stálý tvar (průřezovou funkci) a mění se pouze v oblasti svého vstupu (lze ji otevřít nebo uzavřít, eventuálně nastavit mezi těmito dvěma stavy). Druhá větev (orální) může svůj tvar v určitých mezích měnit (má časově proměnnou průřezovou funkci). Obě větve vyúsťují do vnějšího prostoru v těsné blízkosti a jejich výstupní signály se skládají do signálu jediného. Původní spektra zvukových zdrojů se modifikují filtračními účinky zvukovodů (vokálního traktu). Obr. 2.1 Schéma hlasového ústrojí. Akustická soustava vokálního traktu je buzena dvěma druhy akustického signálu. Jednak je to kvaziperiodický signál, vznikající přerušováním výdechového proudu vzduchu kmitajícími hlasivkami, jednak signál šumový, vznikající turbulentním prouděním výdechového proudu vzduchu úžinami. Hlasivkový tón má bohaté kmitočtové spektrum, které lze s určitou nepřesností považovat za čárové (ve skutečnosti je hlasivkový tón nutno považovat za zvuk kvaziperiodický). Filtračním účinkem jedné nebo obou větví zvukovodu se určitá spektrální pásma (formanty) zesilují, případně se mohou i zeslabovat (antiformanty při nazalizaci). Dalším zvukovým zdrojem, budícím orální větev mluvidel, je zdroj šumový. Šum vzniká turbulentním prouděním vzduchu úžinami, které mění svou polohu podle druhu artikulované hlásky. Nejblíže vstupu do orální větve (přímo v hlasivkách) vzniká šum při artikulaci souhlásky „h“, nejdále od vstupu šum souhlásky „f“. Pokud je šumový zdroj umístěn mimo začátek orální větve, je pro něj filtrační účinek zvukovodu (vlastně již jen jeho části směrem 14 k výstupu z úst) jiný, než pro hlasivkový tón, který prochází celým zvukovodem. Spektrum šumu je však ovlivněno i prostorem, který šumovému zdroji předchází, a to obvykle tak, že jsou určitá kmitočtová pásma šumu potlačena. Spojitý artikulační pohyb mluvidel (koartikulace) při tvorbě souvislé řeči se projevuje modifikací charakteristických zvuků jednotlivých hlásek zvuky hlásek sousedících. Tuto modifikaci pozorujeme nejen v oblasti spektrálních tranzientů (přechodových oblastí mezi stacionárními úseky hlásek), ale někdy i ve středních hláskových oblastech – záleží na typu hlásek, na tempu řeči a na artikulačních schopnostech mluvčího. Obr. 2.2 2.1 Časový průběh a spektrogram řečového signálu (věta „Vědci pracují s virgulí“). Akustická skladba jednotlivých hlásek souvislé řeči je dále modifikována v rámci delších časových úseků (slova, taktu, větného úseku, věty) tzv. modulačními faktory, jimiž se vytvářejí prozodické rysy promluvy. Jde o modifikace časové, intenzitní a melodické. Změny v těchto parametrech se přičítají ke změnám daným vlastnostmi jednotlivých hlásek a koartikulací. Ukázku řečového signálu vidíme na obr. 2.2. V horní části je časový průběh řečového signálu a pod ním spektrogram tohoto průběhu. Spektrogram je zobrazení časových změn intenzit jednotlivých spektrálních složek řečového signálu. V tomto zobrazení čas odpovídá vodorovné ose, kmitočet spektrálních složek svislé ose a hladina zvuku (tj. logaritmická míra intenzity) stupni zčernání příslušné plochy. 2.1.2 Fonetická rovina řeči Na spektrogramu na obr. 2.2 dole lze rozlišit spektrum periodického signálu od spektra signálu šumového. U periodického signálu je většina energie rozložena v nižší části spektra a je zde patrné zřetelné vertikální šrafování způsobené periodicitou hlasivkových pulsů. Spektrum šumového signálu toto šrafování nemá a většina energie je u šumového signálu rozložena ve vyšší části spektra. Dobře odlišitelné jsou i oblasti bez signálu (např. okluzní pauzy). Ve vodorovném směru se táhnou výrazné pruhy s vertikálně kolísajícími polohami. Jsou to oblasti spektrálních maxim – formanty. Časové změny formantových poloh se nazývají formantovými tranzienty. 15 Počet samohláskových formantů je závislý na tvaru vlny hlasivkového buzení (na způsobu kmitání hlasivek). Hlasy, které mají velký počet formantů, znějí většinou plně a jasně, na rozdíl od hlasů s menším počtem formantů, které znějí zastřeně a chudě. Kmitočty formantů se u jednotlivých samohlásek odlišují a jsou pro ně charakteristické. Kromě formantů lze na spektrogramech ještě nalézt (obvykle slaběji vyjádřená) spektrální maxima, která přispívají k individuální charakteristice mluvčího (k barvě hlasu). V souvislé řeči se vlivem koartikulace polohy samohláskových formantů mohou odlišovat od poloh, odpovídajících samostatně vyslovované samohlásce (od tzv. cílových hodnot). Při rychlé mluvě formanty v samohláskových polohách ani nemusejí dosáhnout svých cílových hodnot, a přesto posluchač samohlásky (v daném kontextu) považuje za správně vyslovené. Pokud se však pomocí počítače ozvučí odpovídající samohláskové úseky bez kontextu, jsou vnímány jako chybně vyslovené. 2.2 Syntéza řeči z psaného textu Pro syntézu řeči z psaného textu je třeba zvládnout fonetickou transkripci, tj. přepis psaného textu na posloupnost hlásek (zvuků), a následné přiřazení zvolených jednotek řeči (difony, trifony apod.) transkribovanému textu. První syntezátory z psaného textu nepracovaly s prozodií a produkovaly tedy monotónní, poslechově nepříjemnou řeč. Pro přijatelnější kvalitu syntetické řeči bylo nezbytné přidat modelování prozodie. Zpočátku se používalo pouze modelování průběhu základního tónu, které je z prozodického hlediska nejdůležitější. Pro dosažení lepší přirozenosti řeči je však nezbytné pracovat také s modelováním rychlosti (časového členění) a intenzity řeči. Řada dnešních syntezátorů však vůbec neprovádí modelování intenzity řeči, nebo intenzitu modeluje značně zjednodušeně. I když výzkumy prokázaly význam modelování intenzity pro přirozenost syntetické řeči, je tento význam menší v porovnání s modelováním průběhu základního tónu a časového členění [WIT82][KEL94]. Obr. 2.3 Blokové schéma TTS systému. Každý systém pro syntézu řeči z psaného textu se skládá z několika vzájemně více či méně provázaných částí, které můžeme rozdělit do dvou skupin. První skupina, zabývající se zpracováním textu, provádí převod psaného textu na vnitřní fonetickou reprezentaci syntezátoru spolu s generováním prozodických informací. Tato část TTS systému sestává z analýzy textu, fonetické transkripce, modelování prozodie a příp. generování posloupnosti řečových jednotek. Druhá část TTS systému pak převádí vnitřní fonetickou reprezentaci spolu s prozodií na posloupnost řečových jednotek z řečové databáze, ze které se pak tvoří řečový signál modelováním řeči v časové nebo kmitočtové oblasti, popř. modelováním hlasového traktu. Základní blokové schéma TTS systému můžeme nalézt na obr. 2.3. Lingvistická část syntézy řeči z psaného textu je znázorněna na obr. 2.4, Obr. 2.4 Lingvistická část syntezátoru řeči. 16 vlastní produkce řeči založená na principu modelování hlasového traktu v kmitočtové oblasti je znázorněna na obr. 2.5. Obr. 2.5 Lineární model produkce řeči. 2.2.1 Fonetická transkripce Fonetická transkripce je určena ke schematickému zápisu hlásek mluvené řeči odpovídající dané konvenci. K zápisu fonetické transkripce se užívá mezinárodní fonetická abeceda IPA [IPA96]. Pro počítačové zpracování se používá SAMPA (Speech Assessment Methods Phonetic Alphabet) [WEL92][WEL00]. Pro počítačové zpracování fonetického přepisu češtiny byl definován zápis Doc. Ptáčkem (viz Příloha B), později byl definován zápis ve společné práci Prof. Nouzy, Prof. Uhlíře a Prof. Psutky [NOU97]. Pro fonetický přepis češtiny vznikly v minulosti dva různé návrhy SAMPA notace pro češtinu. Jeden pochází z ČVUT a slouží pro potřeby rozpoznávání, druhý pochází z Fakulty informatiky v Brně a slouží především pro potřeby syntézy řeči. Z těchto návrhů vznikl později návrh kompromisní, který se zřejmě stane standardem SAMPA notace pro češtinu [HNŽ01]. Je známo, že výslovnost slov se často liší od jejich pravopisu, i když v češtině není tento rozdíl tak velký jako např. ve francouzštině nebo v angličtině. Fonetická transkripce češtiny se dá až na malé výjimky popsat pomocí pravidel bez nutnosti použití rozsáhlých slovníků. Z tohoto důvodu používají všechny české TTS systémy pouze pravidla, která mohou být doplněna slovníky výjimek. Složitějším problémem pro fonetickou transkripci jsou číslovky, především pak řadové. V systému Epos je čtení číslovek realizováno pomocí regulárních výrazů, které představují velmi výkonný nástroj pro práci s textem. Obr. 2.6 Modelování prozodie podle pravidel. 17 2.2.2 Prozodie řeči Prozodie řeči nese informaci o melodii (průběhu základního tónu F0), intenzitě a časovém členění jednotlivých řečových jednotek na suprasegmentální úrovni. Původní české řečové syntezátory nepracovaly s prozodií, a proto byla jejich řeč nepříjemně monotónní. Současné řečové syntezátory pracují většinou pouze s modelováním průběhu základního tónu, jenž je z prozodického hlediska nejdůležitější. Řečové syntezátory vyvíjené v ÚRE pracují se všemi třemi základními prozodickými parametry. V teoretické oblasti je stav prozodie češtiny poměrně neuspokojivý. Existují zde sice práce Romportla a Daneše, ty se však zabývají popisem pravidel, které byly dále propracovány Palkovou. V současné době neexistuje žádný moderní pohled na teorii prozodie češtiny. V praktických aplikacích prozodie češtiny, tj. u syntézy české řeči, je stav obdobný jako u teorie – existuje několik syntezátorů používajících modelování prozodie pomocí pravidel, která je pro běžného posluchače většinou nepřijatelná. Bohužel lepší prozodické vlastnosti mají dnes spíše syntezátory pocházející z komerční sféry. Při modelování prozodie řeči pomocí pravidel se na základě analýzy textu přiřazuje jednotlivým řečovým jednotkám pomocí pevně stanovených pravidel jejich základní tón, intenzita a trvání. Prozodická pravidla doposud používaná ve Fonetickém ústavu a v ÚRE jsou výsledkem dlouholetého výzkumu ve Fonetickém ústavu Univerzity Karlovy pod vedením doc. Ptáčka. Blokové schéma syntézy řeči s modelováním prozodie pomocí pravidel je na obr. 2.6. Při použití neuronových sítí pro modelování prozodie je hodnota základního tónu (popř. i intenzity a trvání) jednotlivých řečových jednotek získána pomocí umělé neuronové sítě, na jejíž vstupy jsou přivedeny výsledky analýzy textu. Modifikace TTS systému pro modelování průběhu základního tónu řeči pomocí neuronové sítě, vyvíjeného ve spolupráci ÚRE a ČVUT FEL, je zobrazena na obr. 2.7. Obr. 2.7 Modelování základního tónu řeči neuronovou sítí. V tomto TTS systému je vstupní text analyzován a relevantní informace jsou předávány do umělé neuronové sítě (UNS), která potom na jejich základě generuje prozodické hodnoty pro jednotlivé hlásky. Výsledky této metody zatím nejsou uspokojivé nejspíše proto, že UNS je nucena generovat přímo absolutní hodnoty základního tónu řeči, čímž je v podstatě zahlcena. Lepších výsledků by se jistě dosáhlo použitím nějakého intonačního modelu či použitím více jednodušších neuronových sítí kombinovaných s prozodickými pravidly. Zajímavou aplikací by také bylo použití neuronové sítě pro modelování prozodie pomocí lineární predikce, kdy by UNS generovala průběh buzení syntetizujícího filtru namísto přímého generování průběhu základního tónu. Průchodem generovaného budícího signálu syntetizujícím filtrem by se odstranila hlavní nevýhoda UNS – nepřirozené chvění výstupního průběhu základního tónu. 2.2.3 Modelování řečového signálu Z hlediska objemu inventáře řečových jednotek je čeština také poměrně jednoduchý jazyk, neboť obsahuje jen 5 základních samohlásek. Poměrně dobrých výsledků lze pro češtinu dosáhnout s použitím inventáře o rozsahu cca 300 řečových jednotek obsahujícího těla samohlásek, iniciální a finální části hlásek, difony samohláska–souhláska (VC) a difony souhláska samohláska (CV). Ve Fonetickém ústavu FF UK byl T. Dubědou definován difonový inventář o rozsahu cca 1300 jednotek obsahující navíc difony souhláskových skupin. Na Fakultě informatiky Masarykovy univerzity v Brně používají inventář obsahující cca 3000 18 poloslabik. Na Katedře kybernetiky ZČÚ v Plzni vytvořili trifonový inventář (spíše než o trifonech by bylo vhodnější mluvit o monofonech závislých na svém pravém a levém okolí) s využitím automatického definování trifonové databáze a automatické segmentace na bázi skrytých Markovských řetězců (HMM – Hidden Markov Models). Takto automaticky definovaný inventář obsahuje cca 5000 jednotek. Nejnovější inventář definovaný v ÚRE je založen rovněž na použití trifonů a obsahuje cca 1850 řečových jednotek. Ve světě jsou stále více populární TTS systémy pracující s rozsáhlými databázemi, kde mohou řečové jednotky tvořit celé slabiky i slova, popř. slovní spojení. Pro syntézu tónových jazyků (např. japonština) se začínají používat inventáře obsahující každou řečovou jednotku v několika intonačních variantách. Nejstarší české TTS systémy používaly pro modelování řečového signálu formantovou syntézu (známý je např. Ptáčkův dvouformantový syntezátor používající Baumwollspinerovu metodu). TTS systémy vyvinuté v ÚRE používají modelování řečového signálu v kmitočtové oblasti buď pomocí lineární predikce, nebo pomocí kepstrální syntézy. Největší předností modelování řečového signálu v kmitočtové oblasti je plynulá změna prozodických parametrů ve velkém rozsahu. Většina konkurenčních produktů je dnes založena na modelování řečového signálu v časové oblasti metodou PSOLA, popř. jejími modifikacemi, které mají oproti modelování řeči v kmitočtové oblasti nevýhody v oblasti modelování prozodie a spektrální nevyváženosti na přechodech jednotek, poskytují však řeč s vyšší přirozeností. Jako spojení výhod obou přístupů se dnes začíná prosazovat syntéza řeči využívající harmonické modelování. Pro možnost porovnání kvality nových inventářů používajících vzorkovací kmitočet 16 a 32 kHz byla v ÚRE rovněž implemetována metoda PSOLA v časové oblasti. 2.3 Způsoby realizace fonetické transkripce Pro automatický převod psaného textu na posloupnost hlásek se používají buď metody založené na použití slovníků, nebo metody založené na použití transkripčních pravidel. Zvláštní kapitolu pak tvoří fonetická transkripce pomocí umělých neuronových sítí. Transkripční systémy používající pravidla se pak dělí na expertní na pravidlech založené systémy a na učící se na pravidlech založené systémy. V prvním případě jsou fonetická pravidla definovaná skupinou expertů z oblasti fonetiky nebo lingvistiky, v druhém případě bývají systémy, založené většinou na použití skrytých Markovských řetězců, trénovány na příkladech. Není tudíž nutné spolupracovat s vyškolenými fonetickými experty, kterých může být pro konkrétní jazyk nedostatek, což je zvlášť důležité při vývoji multilingválních TTS systémů. Čeština je z hlediska fonetické transkripce ve srovnání např. s angličtinou nebo francouzštinou výrazně jednodušší jazyk. Zde by nasazení neuronových sítí nemělo takový smysl jako při fonetické transkripci již zmiňované francouzštiny či angličtiny. Fonetická transkripce češtiny se dá uspokojivě vyřešit pomocí pravidel doplněných o slovník výjimek. Jak již bylo řečeno, používají řečové syntezátory vyvíjené v ÚRE pro přepis psaného textu na posloupnost hlásek transkripční pravidla doplněná o slovníky výjimek. 2.4 Vlastnosti prozodie řeči Termín prozodie postihuje jisté vlastnosti řečového signálu jako jsou slyšitelné změny základního tónu, hlasitosti a časového členění. Jelikož se prozodické změny aplikují na jednotky vyšší, než jednotlivé segmenty řeči (krátkodobé úseky řeči o délce řádově desítek ms), mluvíme o prozodii jako o suprasegmentálním jevu. Prozodie tedy postihuje větší jednotky, jako jsou slabiky, přízvukové takty, a také celé věty nebo souvětí. Změny v časové, intenzitní a melodické oblasti, ke kterým dochází na segmentální úrovni (např. ve spojení souhláska – samohláska), nazýváme mikrointonací, změny ve stejných dimenzích, které jsou výsledkem suprasegmentálních vlivů (např. přízvukového taktu, větného úseku, věty) nazýváme intonací [PTÁ93]. Ukázku mikrointonace můžeme vidět na obr. 2.8. Jedná se o spojení hlásek „éza“ ze slova „syntéza“. Z obrázku je zřejmé, že u hlásky „z“ dochází k lokálnímu poklesu základního tónu o cca 10 Hz. Termín intonace používají někteří autoři jako synonymum pro prozodii, jiní jím označují pouze melodickou stránku prozodie. V této práci budu intonací označovat melodický průběh řeči. Rozdělení suprasegmentálních účinků do tří nezávislých popisů v časové, kmitočtové a intenzitní oblasti je prakticky nemožné. Suprasegmentální rysy souvislé řeči se realizují ve všech třech oblastech současně, na sobě závisle a s možností vzájemné zastupitelnosti jednotlivých složek. Např. časové členění řeči je výrazně ovlivňováno melodií. 19 Obr. 2.8 Ukázka mikrointonace – spojení hlásek „éza“ ze slova „syntéza“. 2.4.1 Suprasegmentální vrstvy Přízvukový takt je lineární jednotka, která váže jednu slabiku nesoucí slovní přízvuk a jistý počet slabik nepřízvučných. V krajním případě tvoří přízvukový takt přízvučná slabika sama. Zvukovou charakteristiku taktu určují především dvě složky: přízvukový vrchol a umístění mezitaktové hranice. V rámci hiearchické jazykové stavby je přízvukový takt jednotkou na úrovni slova a je realizován buď jen jedním slovem, nebo primární předložkou a slovem, nebo slovem a jemu následujícím jedním monosylabem či několika monosylaby, nebo samostatnou skupinou monosylab, apod. Zde je třeba podotknout, že zacházení s monosylaby je většinou záležitostí sémantickou nebo fakultativní. V systému Epos je pro přízvukový takt použito označení „word“ a pro slabiku označení „syll“. Slovní přízvuk je v češtině pevný a váže se na první slabiku slova. Z toho plyne, že není fonologicky účinný, není možno ho využít pro rozlišení slovních významů. Je však považován za signál mezislovní hranice. Výjímečně však může před slovem s přízvukem v rámci téhož přízvukového taktu předcházet jednoslabičné slovo bez přízvuku nebo s přízvukem slabším. Pak mluvíme o předrážce (předtaktí) - např. „pan Novák“, „A nestůjte“. Akustickým základem slovního přízvuku je kontrast dané slabiky vzhledem k slabikám sousedním, ne však nějaká absolutní hodnota zvukových kvalit. Množství variant, jimiž může být přízvuk realizován, se zatím nepodařilo uspokojivě zobecnit. V češtině se při realizaci slovního přízvuku může uplatnit melodický průběh, intenzitní proporce a trvání. V kmitočtové oblasti vyvolává dojem přízvučnosti slabiky jak zvýšení, tak snížení tónu. Přijatelná či optimální velikost výškových změn je závislá na kontextu a pohybuje se kolem 1 – 2 čtvrttónu [PTÁ93]. Větší melodické změny jsou vnímány na úrovni větné melodie V intenzitní oblasti odpovídá přízvučné slabice, dle [PTÁ93], zvýšení intenzity cca o 3 dB, což je na hranici subjektivního vnímání. V přirozeném signálu však často nacházíme i přízvučné slabiky, intenzitně nevyjádřené, nebo dokonce slabší, než jejich okolí. V komplexu zvukových kvalit zřejmě není intenzita přízvučné slabiky kvalitou určující. V časové oblasti není zřetelné prodloužení samohlásky jako signál přízvuku přijatelné, protože rozdíl trvání dlouhých a krátkých samohlásek je fonologicky funkční. V malých mezích, cca 1 dC - decichron, pro který platí definiční vztah: B = 10 log T1/T2 = 1 dC, (2.1) kde T1 a T2 jsou srovnávané doby trvání [BOR67], se však může i prodloužení nebo zkrácení samohlásky stát faktorem, podporujícím hodnocení přízvučnosti. Pro názornost lze uvést, že změna trvání o velikosti 1 dC je právě percepčně postřehnutelná. 20 Promluvový (intonační) úsek je podle Palkové [PAL94] lineární jednotka souvislé řeči nadřazená taktu. Je to jednotka v první řadě zvuková. O její existenci rozhoduje především intonační průběh řeči. Z hlediska jazykové stavby je intonační úsek jednotkou fakultativní. Prosazuje se jak při produkci, tak i při percepci řeči. Z hlediska posluchače si lze intonační úsek představit jako skupinu taktů, které jsou svým intonačním průběhem vázány do určitého celku. Posluchač má dojem, že mluvčí vytvořil tento úsek řeči jakoby "jedním tahem". Předěl mezi sousedními intonačními úseky může být tvořen pauzou, nebo jen intonační linií, nebo oběma těmito způsoby najednou. Nadále budu o promluvovém úseku hovořit jako o úseku intonačním (v systému Epos „colon“). Pauza je důležitým faktorem pro členění souvislé řeči na menší jednotky (frázování). Správné umístění pauzy je mnohdy zásadně důležité pro správné pochopení promluvy. Předěl, který je vyznačován pauzou, však obvykle nevyznačuje pauza sama, nýbrž společně s melodickým tvarem podle druhu úseku. Důležité je rovněž správné rozložení přízvuků a důrazů. Velmi často vnímáme pauzu i tam, kde není řeč ve skutečnosti vůbec přerušena, ale kde je zachován melodém, vyznačující předěl. K vytvoření předělu (u nedbalé mluvy) přispívá i protažení koncové slabiky před pauzou (cca o 50 až 100%). Trvání pauzy je velmi proměnlivé a záleží na mnoha faktorech (především na umístění pauzy v promluvě a na tempu). Tempo mluvené řeči obvykle vyjadřujeme počtem slabik za vteřinu. Kromě počtu a délky slabik jsou však pro celkové tempo projevu důležité pauzy, jejich distribuce a délka. Při větších změnách tempa (zvl. při jeho zrychlování), se nemění délky všech hlásek stejně. Ke kvantitativnímu popisu tohoto jevu však doposud chybí potřebné údaje. Větný přízvuk je prozodický prostředek, jímž se zvýrazňuje určitá informace, obsažená v posledním přízvukovém taktu. Větný přízvuk může nebo nemusí tvořit součást meziúsekové hranice. Pro počet větných přízvuků v intonačním úseku neexistuje žádný apriorní předpoklad. V akustické oblasti se větný přízvuk realizuje stejnými prostředky jako přízvuk slovní, ale většinou ve zvýšené míře (výjimku tvoří např. větný přízvuk v posledním přízvukovém taktu posledního intonačního úseku před interpunkčním znakem, kde může být realizován jako přízvuk slovní). Věta v češtině představuje stabilní zvukovou jednotku. Rozhodujícím z tónového průběhu v české větě je obvykle melodie závěrečné části většinou počínající přízvučnou slabikou jádra výpovědi, tedy nejčastěji posledního slova (přízvukového taktu), popř., je-li tzv. větný přízvuk (resp. důraz) přenesen na jiné než poslední slovo, celé části od přízvučné (důrazné) slabiky tohoto slova. Pro označení této části melodického průběhu, která se pokládá za melodický jazykový prostředek, se užívá často označení kadence [DAN57]. Romportl zavedl ve svých novějších pracích [ROM85] pro funkční melodické schéma termín melodém, aby se vyhnul víceznačnosti termínu kadence [PAL94]. Namísto termínu kadence Romportl používá termín intoném. Palková užívá termínu melodém pro základní typ melodického průběhu, určený na základě jeho gramatické funkce, tedy pro soubor melodických schémat, která se v jazyce uplatňují ve stejném typu vět, a termín kadence ponechává pro tato melodická schémata sama. V této práci budu rovněž používat pro vlastní melodická schémata termín kadence. Pro větu je v systému Epos použito označení „sent“. 2.4.2 Suprasegmentální charakteristiky v časové oblasti Popis vychází z předpokladu, že na realizaci promluvy se podílí několik hierarchicky rozlišitelných úrovní. Oddělení vlivů těchto úrovní na výsledný signál je největším problémem popisu. Vliv přízvukového taktu: V rámci přízvukového taktu má počet hlásek v přízvukovém taktu vliv na průměrné trvání hlásky, a to zvlášť pro izolovaná slova, pro finální přízvukové takty a pro přízvukové takty v ostatních pozicích věty (nebo intonačního úseku). Pro izolovaná slova a finální (předpauzové) přízvukové takty věty (větného úseku) bylo zjištěno, že hledanou závislost lze přibližně popsat vztahem: T(m)/T(n) = (n/m)0,405 (2.2) kde m, n znamenají počty hlásek ve dvou srovnávaných přízvukových taktech a T(m) a T(n) průměrná trvání hlásek v odpovídajících přízvukových taktech [PTÁ95]. Pro ostatní (tj. nefinální) přízvukové takty nebyla nalezena žádná výrazná změna v průměrném trvání hlásek v závislosti na počtu hlásek, což je v souladu se všeobecně uváděným izosylabickým mluvním rytmem češtiny [PAL94]. Úroveň přízvukového taktu se v časovém členění řeči dále uplatňuje změnou délky hlásek přízvučné slabiky. V přirozené řeči se hlásky prodlužují o 1 až 2 dC. Poslechové testy se syntetickým signálem však ukázaly, že prodloužení samohlásky o více než 1 dC se již může vnímat jako dlouhá samohláska. Vjem přízvuku u tohoto signálu lze však vyvolat i zmenšením trvání hlásek přízvučné slabiky asi o 1 dC. 21 Vliv intonačního úseku: Úsek promluvy, zakončený pauzou, se může při nedbalé výslovnosti uplatit prodloužením finální hlásky o cca 1,7 dC (50%) a předcházející hlásky finální slabiky o 0,4 až 1,1 dC (10 až 30%). Po meziúsekové pauze obvykle dochází ke zkrácení některých iniciálních hlásek následujícího větného úseku. Kvantitativní údaje k tomuto jevu lze nalézt v již zmíněné publikaci Borovičkové a Maláče [BOR67]. Trvání pauzy mezi intonačními úseky je v přirozené řeči velmi proměnné. U syntetického signálu neutrálních výpovědí je percepčně tolerovatelná pauza o trvání asi 100 ms. Střídání různých délek pauz ve větě může neutralitu výpovědi narušit. Vliv úrovně věty: Úroveň věty se projevuje prodloužením trvání hlásek slabiky s větným přízvukem na začátku tzv. jádra výpovědi o cca 1,5 dC. V přirozené řeči toto jádro většinou leží v posledním taktu věty a větný přízvuk se pak v časové oblasti nerealizuje. Trvání pauzy mezi větami je v přirozené řeči značně proměnné. Podle poslechových testů se u syntetického signálu osvědčilo trvání pauz za větami v závislosti na interpunkčních znacích podle tab. 2.1 [PTÁ95]. Tab. 2.1 Závislost trvání pauz za větami na interpunkčních znacích dle [PTÁ93] 2.4.3 Interpunkční znak za větou (intonačním úsekem) Percepčně přijatelné trvání pauzy u syntetického signálu .!? 420 ms ;:- 280 ms ,() 140 ms Suprasegmentální charakteristiky v melodické oblasti Hledání zákonitostí, jimiž se suprasegmentální rysy uplatňují v melodii řeči, je vzhledem ke vzájemným souvislostem a komplexnosti problému velmi obtížné. Zvláště těžké je tyto zákonitosti popsat kvantitativně v rovině akustické, neboť akustické realizace suprasegmentálních rysů mohou být velmi variabilní. Vliv přízvukového taktu: Slovní přízvuk v češtině je v melodické oblasti realizován zvýšením nebo snížením základního tónu přízvučné slabiky (podle kadence, ve které je umístěna) asi o 1/4 tónu. Překročením hodnoty 1/2 tónu ztrácí příslušná akustická realizace charakter přízvuku. Vliv intonačního úseku: Intonační úsek se skládá buď ze skupiny přízvukových taktů, nebo může být tvořen i taktem jediným. Členění věty na úseky je v hlavní míře ovlivňováno délkou promluvy, syntaktickou stavbou promluvy, sémantikou a kontextem. Předěl mezi jednotlivými úseky je (může být) tvořen pauzou, před níž předchází kadence zvukově realizovaná tzv. větným přízvukem (obvykle na přízvučné slabice závěrečného taktu úseku, jinak na tzv. jádru výpovědi) a příslušnou melodickou formou. Melodií intonačního úseku ve funkci sdělovací se zabýval Daneš [DAN57]. Podle Daneše je pro tuto funkci relevantní směr pohybu melodie, rozložený po slabikách (nebo v rámci slabiky); vytvářejí se tak jistá melodická schémata s vlastní fonologickou strukturou. Daneš jimi nechce popsat melodii celé věty, ale snaží se postihnout průběh melodie posledního taktu věty, jehož funkční důležitost zdůrazňuje. Z hlediska významové výstavby výpovědi Daneš rozlišuje východisko a jádro výpovědi. Rozeznává ukončené a neukončené oddíly promluvy. Ukončené dělí na ukončené uspokojivě a neuspokojivě. Intonační schémata oddílů uspokojivě ukončených nazývá kadencemi konkluzívními, schémata oddílů neuspokojivě ukončených jako antikadence. Pro oddíly neukončené má termín polokadence. Kadence konkluzívní je charakterizována klesavým pohybem melodie po přízvuku. Vyskytuje se ve dvou variantách: příznakové a nepříznakové. Tyto varianty se liší polohou přízvučné slabiky, na níž je umístěno intonační centrum. Antikadence (tj. kadence v oddílech promluv ukončených neuspokojivě) má ve spisovné češtině dvě podoby, tvarově samostatné: Antikadence stoupavá - lze ji najít v taktech jednoslabičných i víceslabičných. Charakteristické pro ni je to, že začíná na slabice přízvučné nízkým tónem a končí tónem vysokým. V podobě jednoslabičné se objevuje setrvávání v nízké poloze, po něm následuje výrazné stoupnutí. 22 Antikadence stoupavě klesavá - s antikadencí stoupavou má společnou nízkou polohu přízvučné slabiky, následující slabika prudce stoupne a poslední slabika mírně klesne. Slabika nebo slabiky uvnitř zůstávají na stejné výši. Daneš se domnívá, že tato kadence se objevuje jen na taktech nejméně tříslabičných. Polokadence (tj. oddíl promluvy neukončené) má také dvě základní podoby. První z nich, stoupavá, je bezpříznaková, druhá, klesavá, je příznaková: Bezpříznaková stoupavá polokadence má dvě varianty, jímž je společný vzestup tónu z nízké hlasové oblasti do konce taktu (vrcholu je dosaženo v koncové slabice). Rozdíl mezi nimi je v tom, že v prvé variantě je slabika přízvučná níže než slabika před přízvukem, u druhé varianty je přízvučná slabika výše (v linii stoupavé) a slabika před přízvukem je nižší než přízvučná. Pro obě varianty však platí, že slabika před přízvukem poklesne. Příznaková stoupavá polokadence má také dvě varianty, charakterizované poklesem slabiky před přízvukem: první varianta má přízvučnou slabiku nejníže z celého taktu, následující prudce stoupne (dosáhne melodického vrcholu), slabiky do konce taktu stoupají nevýrazně, nebo zůstávají na stejné výši; druhá varianta má melodický vrchol už ve slabice přízvučné. V jednoslabičném taktu se při této variantě neobjeví zřetelné stoupání v průběhu slabiky. Příznaková polokadence klesavá má s předchozími společné klesnutí slabiky před přízvukem. Přízvučná slabika prudce stoupá, slabika následující je v nejvyšší poloze, slabika poslední klesá. V taktu dvojslabičném dosahuje melodického vrcholu už slabika přízvučná, v taktu jednoslabičném se projevuje klesání z vysoké do nízké polohy. Větná melodie podle Romportla [ROM85] je z hlediska funkčního systémem kadencí, který spolu se složkou dynamickou slouží a) k odlišení věty ukončené od věty (úseku), která bude (po pauze, za předělem) dále pokračovat; b) k odlišení různých druhů vět, především k odlišení otázky zjišťovací od ostatních druhů vět; c) k odlišení vět neutrálních (bez citového zabarvení) od vět, které jsou citově zabarveny, a k odlišení druhu takového zabarvení. Pro syntézu řeči je nezbytně nutné zvládnout první dvě funkce a z třetí je třeba alespoň umět zbavit simulovanou řeč všech nechtěných citových prvků, které by mohly posunovat nebo měnit smysl věty. Aby věta zůstala neutrální oznamovací větou, je podle Romportla rozhodující, aby byl zachován pozvolna klesavý průběh melodie posledního taktu počínaje přízvučnou slabikou; platí to i o větě rozkazovací a doplňovací tázací (začínající tázacím zájmenem). Melodie předcházející části věty je velmi variabilní a není příznaková. Pokud je třeba jádro výpovědi zdůraznit, zvýší se obvykle výška tónu přízvučné slabiky a pokles melodie je pak strmější. Jestliže je důraz na přízvučné slabice jiného než posledního taktu, rozprostře se klesavá kadence od této důrazné slabiky až do konce věty. Neutrální otázkové kadence vyjadřující otázku zjišťovací nebo otázku doplňovací se vyskytují ve dvou podobách: stoupavé (otázka zjišťovací) a stoupavě-klesavé (otázka doplňovací). Obě se vyznačují hlubokým tónem na přízvučné slabice a poslední slabika taktu se pohybuje zhruba ve střední poloze hlasu. V první podobě je druhá slabika zhruba ve výši přízvučné slabiky (nebo jen mírně vyšší); v druhé podobě se slabika po přízvuku výrazně zvýší (asi o sextu) a v následující slabice hlas opět mírně poklesne. Při důrazu se výrazně zvětší intervaly (např. vzestup v druhé podobě kadence se může zvětšit o oktávu i více), zejména se však prohloubí přízvučná slabika kadence. V případě, že jádrem výpovědi se stane jiný než poslední takt, se pak přesouvá počátek kadence na přízvučnou slabiku jádra výpovědi a celá kadence se rozprostírá do konce věty. Základním typem předpauzové kadence (věta neukončená) je tzv. typ stoupající. Přízvučná slabika kadence je hluboká a následující slabiky stoupají. Obvykle bývá i slabika předcházející před přízvučnou hlubší než slabika přízvučná a můžeme ji považovat za součást kadence. Z dalších možných kadencí je častá kadence rovná, jíž obvykle předchází slabika s poněkud nižším tónem. Někdy se objeví i kadence klesavá, která má však mírnější pokles než kadence věty oznamovací. Melodie citově zabarvené řeči bývají většinou odvozovány od forem, užívaných ve větách citově neutrálních tak, že jsou buď intervaly zvětšovány, někdy naopak zmenšovány (např. při lítosti, smutku, kdy navíc ještě poklesá celková výška hlasu), jindy se kadence kromě zvětšení intervalů opakují i v předcházejících částech věty (např. ve větách zvolacích, silně citově zabarvených otázkách, ve větách přacích nebo rozkazovacích). Ustálenou formu mívá melodie varovací a tzv. melodické vytýkání [ROM85]. Oba systémy prozodických prostředků řeči, jak Danešův, tak i Romportlův, postrádají přesný popis intervalů mezi jednotlivými tóny melodického průběhu, v některých příkladech ho však alespoň naznačují. Při simulačních pokusech Borovičkové a Maláče [BOR67], které vycházely z naznačených hodnot, měly téměř všechny syntetické věty větší nebo menší emociální zabarvení (interval v otázkové kadenci byl sexta). Při simulaci kadencí s minimálními kroky (jeden až dva půltóny) bylo sice emociální zabarvení odstraněno, ale posluchač neměl vždy jistotu, o kterou kadenci jde. 23 Základní tónový průběh v neutrální oznamovací větě lze charakterizovat jako mírně obloukovitě klesavý. Tvar průběhu F0 v logaritmické stupnici připomíná značně plochou vzhůru vydutou parabolu s vrcholem na druhé nebo třetí slabice od počátku věty (popř. i na další při výrazně delší větě). Tento průběh Romportl matematicky aproximoval rovnicí paraboly. Na základě vlastních pokusů Romportl sestavil matematickou aproximaci melodického průběhu I. (stoupavé) otázkové formy. Dílčí analýzy a pokusy přitom ukázaly, že kmitočtové rozpětí v neutrálních větách je obecně menší než ve větách s expresí. Individuálně i toto rozpětí kolísá u jednotlivých mluvčích. Pokud se např. u jednoho mluvčího rozpětí v neutrální oznamovací větě s čtyřslabičným jádrem výpovědi realizovalo v rozmezí zhruba 1 oktávy (cca 160 - 75 Hz), pak se u něho v základním melodému klesavém v jednoslabičném taktu realizuje pokles asi mezi 120 až 75 Hz, v čtyřslabičném 140 - 75 Hz, v I. tázacím jednoslabičném vzestup mezi 110 - 150 Hz (někdy až 110 - 180 Hz), nikoli však více. Přesáhne-li vzestup asi sextu, přestává být např. tázací věta neutrální a nabývá jistého emocionálního zabarvení, jehož druh je závislý na kontextu a situaci. 2.4.4 Suprasegmentální charakteristiky v intenzitní oblasti Přízvuk se v intenzitní oblasti projevuje zvýšením intenzity přízvučné slabiky o 1 až 3 dB. U synteticky vytvářeného signálu řeči umělého charakteru (např. LPC syntetizérem) se k zachování neutrálního charakteru výpovědi osvědčují spíše menší hodnoty z výše uvedeného rozsahu. Je zajímavé, že při poslechových testech syntetického signálu souvisle mluvené české řeči posluchači slovní přízvuk většinou registrovali i tam, kde nebyl realizován ani intenzitně, ani jinými prostředky (melodicky, časově). Přitom nebyl nijak narušen ani vjem slovní segmentace, který se o realizaci přízvuku zřejmě příliš neopírá [PTÁ93]. Větný přízvuk (logický přízvuk, důraz), jímž se obvykle označuje jádro výpovědi vně posledního taktu věty, je realizován zvýšením intenzity přízvučné slabiky o cca 2 - 3 dB oproti ostatním přízvučným slabikám. Větší úlohu v percepci jádra výpovědi hrají melodické změny. Vedlejší přízvuk, vyskytující se někdy v delším taktu promluvy, je intenzitně prakticky neregistrovatelný. O variabilitě umístění přízvuku ve spontánní promluvě podle extralingvistických faktorů verbální komunikace, o zachovávání hiearchizace přízvuku ve vztahu k hiearchii sémantické, o neutralizaci přízvuku v místech, kde by přízvuk být mohl a o neočekávaných prominencích přízvuku různé kvality a funkce mj. pojednává monografie Dohalské [DOH91]. Kvantitativní údaje o intenzitní modulaci souvisle mluvené češtiny vlivem hiearchicky vyšších suprasegmentálních složek však doposud chybí. 2.4.5 Superpozice vlivů jednotlivých vrstev tvoření řeči V souvislé mluvené řeči je koartikulace hlásek ve slabikách první (nejnižší) vrstvou výsledného akustického popisu. Další nejbližší vrstva je na úrovni slova (taktu), v němž se uplatňuje např. přízvuk. Následuje vrstva intonačního úseku, kde se může uplatnit kontrast mezi různými slovy (takty), např. slovní důraz. Na úrovni věty se pak uplatňují melodémy, rozlišující např. větu oznamovací od zjišťovací věty tázací. Vrstva na úrovni promluvy obsahuje kontrasty různých stylů a emocionálních postojů [HÁL75]. To, co bylo řečeno o průběhu melodie, platí samozřejmě o celém frekvenčním spektru a o jeho intenzitní a časové dimenzi. Mimořádně důležitou veličinou je trvání jednotlivých segmentů; je to veličina, která podléhá mnoha změnám. Pokud jde o první vrstvu, o hlásky a jejich spojení, je jejich trvání závislé na typu hlásky a na jejím kontextu. U spojení typu CV se ukazuje tendence k zachování konstantní délky spojení, tzn. že za kratší souhláskou následuje delší samohláska a naopak. Výrazné změny trvání (až 1:4) nastávají v souhláskových skupinách. Přízvukový takt (druhá vrstva) ovlivňuje trvání hlásek podle počtu hlásek v taktu a podle přízvuku. Ve třetí vrstvě (větný úsek) se ovlivňuje např. trvání slabiky se slovním důrazem nebo trvání koncové slabiky před pauzou, ve čtvrté vrstvě (věta) se prodlužuje trvání slabiky s větným přízvukem apod. 2.5 Metody popisu řečových jednotek Syntetickou řeč můžeme získat dvěmi základními způsoby: ● explicitně, formou souboru pravidel popisujících chování hlásek a jejich přechodů (např. formantová syntéza nebo modelování mechanických parametrů hlasového ústrojí); ● implicitně, uschováním vzorků fonetických přechodů a koartikulací v databázi řečových jednotek a jejich použitím jako základních akustických jednotek (místo hlásek). Tomuto způsobu syntézy se také říká konkatenativní syntéza, neboť výsledný řečový signál vzniká zřetězením základních řečových jednotek. Konkatenativní syntéza se dále dělí dle způsobu modelování řečového signálu na: ● modelování řečových jednotek v časové oblasti (TD-PSOLA); 24 ● modelování řečových jednotek ve kmitočtové oblasti (LPC syntéza, formantová syntéza, kepstrální syntéza, harmonické modelování) ● hybridní systémy (LP-PSOLA, MBROLA) V následujících odstavcích se zmíním o dvou hlavních způsobech konkatenativní syntézy řeči, a to o modelování řečových jednotek v časové a ve kmitočtové oblasti. 2.5.1 Popis řečových jednotek v časové oblasti Syntéza řeči v časové oblasti je založena na skládání navzorkovaných úseků řeči, přičemž jednotlivé navzorkované úseky mohou mít proměnlivou délku. Dnes se pro syntézu řeči z psaného textu používá zejména metoda TD-PSOLA1 (Time Domain Pitch Synchronous Overlap Add) vyvinutá v 80. letech ve Francii [CHA86] pro svou jednoduchost, vysokou segmentální kvalitu a přirozenost syntetické řeči [MOU90]. Nevýhodou metody TD-PSOLA je poněkud omezená možnost modelování prozodie z důvodu provádění prozodických změn přímo na řečovém signálu (bez použití jakéhokoli parametrického modelu). Další nevýhodou této metody jsou nespojitosti ve fázi, v hodnotě základního tónu a ve spektrální obálce vznikající při syntéze. Ve snaze eliminovat tyto nevýhody vzniklo mnoho modifikovaných, popř. hybridních systémů (např. MBROLA) [DUT97]. 2.5.2 Popis řečových jednotek ve kmitočtové oblasti Nejdůležitější skupinou řečových syntezátorů pracujících ve kmitočtové oblasti jsou syntezátory založené na principu lineární predikce, tzv. LPC syntezátory. Jejich teoretickým ekvivalentem jsou pak syntezátory založené na modelování mechanických parametrů hlasového traktu, které je však numericky poměrně náročné a výsledkem je nepříliš srozumitelná řeč s malou přirozeností. Modelování mechanických parametrů hlasového ústrojí má význam především teoretický. Další významnou skupinou řečových syntezátorů pracujících ve kmitočtové oblasti jsou kepstrální syntezátory. Kepstrální model hlasového traktu na rozdíl od AR modelu zahrnuje jak nulové body, tak póly přenosové funkce, a je tudíž obecnější. Výhodou této metody oproti LPC modelování je lepší segmentální kvalita, nevýhodou je složitější realizace rekonstrukčního filtru. Formantová syntéza (může být ve formě explicitní i implicitní) je založena na modelování charakteristických (rezonančních) kmitočtů hlasového traktu pomocí banky filtrů. Formantová syntéza nevede k příliš přirozené řeči a má spíše historický význam, na mnoha pracovištích se však dodnes používá, především však k pedagogickým účelům. Posledním významným zástupcem řečových syntezátorů pracujících ve kmitočtové oblasti jsou syntezátory založené na harmonickém modelování řeči, které jsou hlavně v poslední době velmi populární. Harmonické syntezátory pracují na podobném principu jako kepstrální, používají podobný postup analýzy, ale zcela odlišný postup syntézy. U syntezátorů řeči používajících harmonického modelování se na základě kepstrálních koeficienů vytváří syntetická řeč skládáním sinusovek, kdežto u kepstrální syntézy se syntetická řeč vytváří přímo pomocí složité struktury filtrů. 2.6 Metody popisu suprasegmentálních rysů řeči Absolutní vyjádření prozodických jevů nebývá, vzhledem k jejich povaze, vždy nejvýhodnější, a proto se obvykle snažíme tyto jevy popsat pomocí nejrůznějších modelů. Nejlépe jsou tyto modely rozpracovány pro účely modelování průběhu základního tónu řeči. Stejně jako ostatní vlastnosti řečového signálu mohou být prozodické jevy studovány na různých úrovních. 2.6.1 Úrovně reprezentace prozodických jevů Prozodické jevy můžeme zkoumat na třech základních úrovních: ● první, akustická úroveň: akustické projevy prozodických jevů (základní tón řeči, intenzita a trvání) mohou být přímo měřeny za pomoci speciálního vybavení či algoritmů (jako je např. algoritmus detekce základního tónu řeči); ● druhá, percepční úroveň reprezentuje prozodické jevy, jak by je slyšel (průměrný) posluchač. Percepční reprezentace prozodie je přístupná jednotlivým posluchačům, může však jen těžko být měřena. Zjišťuje se, s nevelkou přesností, na základě poslechových testů; 1 PSOLA/TD® je registrovaná ochranná známka společnosti France Telecom 25 ● třetí, lingvistická úroveň reprezentuje prozodii promluvy jako sekvenci abstraktních jednotek (znamének, symbolů), z nichž některé plní sdělovací funkci, zatímco jiné naplňují syntaktické požadavky. 2.6.2 Intonační modely Jak vyplývá z předchozí podkapitoly, je popis prozodických průběhů poměrně složitá úloha, jejíž zjednodušení nám umožňují prozodické, především pak intonační, modely. Za poslední léta bylo ve světě vyvinuto mnoho intonačních transkripčních formalismů a metod. Pro češtinu však nikdo žádný intonační model ani nevyvinul, ani nepřevzal model cizí. Z nejznámějších cizojazyčných intonačních modelů, které se všeobecně rozšířily i na jiné jazyky, než pro které byly původně vytvořeny, bych zmínil zejména: ● Pierrehumbertová (1983) ● ToBI (1992) ● IPO (1990) ● INTSINT (1991) ● Fujisaki (1984) Z hlediska úrovní popisu, uvedených v předchozím odstavci, můžeme intonační modely rozdělit na modely akustické, percepční a lingvistické. Nejznámějším intonačním modelem, patřícím do první skupiny, je Fujisakiho intonační model [FUJ92]. Do třetí skupiny pak patří model Pierrehumbertové a modely IPO a INTSINT a notace ToBI [MATE], [MEN00]. 2.6.3 Pierrehumbertové intonační model Pierrehumbertová popisuje průběh základního tónu řeči jako sekvenci vysokých (H) a nízkých (L) tónů. Ty jsou asociovány s přízvučnými slabikami a prozodickými hranicemi. Na základě prací Pierrehumbertové a ostatních autorů vznikl v roce 1992 systém pro zápis intonačních průběhů ToBI [SIL92]. 2.6.4 Systém pro notaci prozodie ToBI ToBI je systém určený pro zápis intonace a prozodických struktur mluvených promluv. Systém ToBI byl původně určený pouze pro angličtinu, dnes však existuje více variant notace ToBI pro různé jazyky (s výjimkou češtiny) [TOBI]. ToBI systém používá tzv. intonační vrstvu (Tone Tier) pro zápis intonačních jevů jako jsou tóny (tones) pokrývající okrajové hodnoty intonace a intonaci slovního a úsekového přízvuku podle definice Pierrehumbertové (1980), dále cílové body (targets) a maximální hodnoty intonace (F0 range). 2.6.5 Intonační model INTSINT INTSINT (INTernational Transcription System for INTonation) je systém pro kódování intonačních vzorů mluvené řeči, který navrhl Daniel Hirst na Univerzitě v Aix-en-Provence [HIR00]. Systém je založen na předpokladu, že intonační vzory promluvy na fonologické úrovni mohou být reprezentovány zřetězením tzv. tónových úseků (tonal segments) dvou typů, a to globálních (absolutních) a lokálních (relativních). Globální tónové úseky se dále dělí na vysoké (Top – T), střední (Mid – M) a nízké (Bottom – B). Lokální tónové úseky se pak dělí na vyšší (Higher – H), nižší (Lower – L), shodné (Same – S), zvyšující se (Upstep – U) a snižující se (Downstep – D). Obr. 2.9 Fujisakiho model produkce základního tónu řeči. 26 2.6.6 Intonační model IPO Metodika analýzy intonace IPO je založena na dvou hlavních předpokladech: a) co není posluchčem vnímano je pro lingvistický popis intonace nedůležité, b) člověk více vnímá tónové změny (klesání, stoupání) než tónové úrovně (nízká, vysoká). Z tohoto důvodu systém IPO používá ke kódování intonace inflexní body a přechody z jednoho inflexního bodu do druhého. Obr. 2.10 Impulsní odezva úsekového systému Fujisakiho prozodického modelu pro vstupní pulsy o velikosti Ap = 0.1, 0.25, 0.4, 0.6, 0.8 a 1.0 při α = 2 s-1. 2.6.7 Fujisakiho intonační model Blokové schéma Fujisakiho modelu je na obr 2.9. V tomto obrázku uvádím anglické termíny zavedené Fujisakim. V textu budu používat jejich české ekvivalenty. Jelikož nikdo zatím tyto ekvivalenty nedefinoval, budu používat následující termíny: phrase command accent command phrase control mechanism accent control mechanism phrase component accent component - úsekový impuls - přízvukový puls - úsekový systém - přízvukový systém - úseková složka - přízvuková složka Fujisakiho kvantitativní intonační model vychází z dřívějších prací Öhmana [ÖHM67], ale byl Fujisakim a jeho spolupracovníky podstatně rozšířen a propracován. Fujisaki sám se matematickým intonačním modelem zabývá od šedesátých let. Fujisakiho model, který je definován vztahem I J ( ) ( ) ln F0 ( t ) = ln Fb + ∑ Api G p ( t − T0i ) + ∑ Aa j ⎡Ga t − T1 j − Ga t − T2 j ⎤ , ⎣ ⎦ i =1 j =1 (2.3) kde 2 ⎪⎧α t exp ( −α t ) Gp ( t ) = ⎨ ⎪⎩0 K pro t ≥ 0, K pro t < 0, (2.4) 27 ⎧⎪min ⎡1 − (1 + β t ) exp ( − β t ) , γ ⎤ ⎣ ⎦ Ga ( t ) = ⎨ ⎪⎩0 K pro t ≥ 0, K pro t < 0. (2.5) modeluje průběh základního tónu v oblasti přirozeného logaritmu kmitočtu. Tento model byl původně navržen pro japonštinu, ale v principu je použitelný i pro jiné jazyky. Fujisaki ověřil jeho funkčnost pro mnoho tónových i netónových jazyků. Fujisakiho model generuje průběh základního tónu řeči v oblasti logaritmu kmitočtu (log F). Průběh základního tónu řeči je zde získán jako lineární superpozice globální (úsekové) a lokální (přízvukové) složky. Tyto složky tvoří výstupní signály dvou lineárních systémů druhého řádu, jejichž vstupy tvoří dvě různé funkce: úsekové impulsy (phrase commands) a přízvukové pulsy (accent commands). Matematicky je vztah těchto funkcí popsán rovnicí 2.3. O proměnných Ap, T0, α, Aa, T1, T2, β a Fb budu nadále hovořit jako o Fujisakiho parametrech. Základní kmitočet Fb zde označuje asymptotickou, na mluvčím závislou, hodnotu základního tónu F0, při absenci přízvukových pulsů. Úseková složka (phrase component) Gp(t) (viz rovnice 2.4) označuje impulsní odezvu úsekového systému (phrase control mechanism). Vstupní signál tohoto systému tvoří impulsy, které jsou definovány amplitudou Ap a časem T0 . Symbol α označuje koeficient časové konstanty úsekového systému a během promluvy je konstantní. Charakteristika této složky je znázorněna na obr 2.10 pro hodnoty Ap rovnající se 0.1, 0.2, 0.3, 0.45 a 0.6 při konstantě α = 2.0 s-1. Z obrázku je patrné, že strmost sestupné hrany úsekové složky, vytvářející úsekovou deklinaci základního tónu, se zvyšuje se zvyšující se amplitudou úsekového impulsu Ap . Amplituda úsekového impulsu Ap také určuje počáteční hodnotu průběhu F0 , pokud není přítomen přízvukový puls. Přízvuková složka (accent component) Ga(t) (viz rovnice 2.5) označuje odezvu přízvukového systému na skok. Vstupním signálem tohoto systému jsou přízvukové pulsy definované jejich amplitudou Aa , počátkem T1 a koncem T2 . Koeficient β označuje časovou konstantu přízvukového systému a během promluvy se nemění (podobně jako koeficient α). Na obrázku 2.11 můžeme pozorovat odezvu přízvukového systému na jednotkové pulsy trvání T = 50, 100, 150, 200 a 250 ms při konstantě β = 20.0 s-1 . Můžeme vidět, že pro přízvukové pulsy kratší než 150 ms nedosahuje přízvuková složka Fujisakiho prozodického modelu své plné velikosti (vzhledem ke konečné velikosti konstanty β ). Z tohoto důvodu není v těchto případech ovlivnění základního tónu amplitudou přízvukových pulsů Aa proporcionální. Obr. 2.11 Odezva přízvukového systému Fujisakiho prozodického modelu na vstupní jednotkové pulsy trvání -1 T = 50, 100, 150, 200 a 250 ms při β = 20 s . 28 Další obrázek (2.12) nám ukazuje odezvu přízvukového systému na přízvukové pulsy trvající 250 ms při amplitudě Aa rovnající se 0.2, 0.4, 0.6, 0.8 a 1 ( β = 20.0 s-1 ). Mezní hodnota přízvukového systému γ (obvykle nastavená na 0.9) zajišťuje, aby přízvuková složka dosáhla svého maxima v konečném čase. Protože sestupná hrana přízvukové složky je modelována pomocí funkce inverzní k funkci modelující vzestupnou hranu, klesá tato sestupná hrana strměji. To odpovídá pozorování, že klesající změny průběhu základního tónu jsou obvykle rychlejší než stoupající (bez nutnosti měnit časovou konstantu systému). Fujisaki popsal stanovení parametrů svého modelu metodou analýzy pomocí syntézy (v originále Analysis- Obr. 2.12 Odezva přízvukového systému Fujisakiho prozodického modelu na vstupní pulsy o délce 250 ms -1 a amplitudě Aa = 0.2, 0.4, 0.6, 0.8 a 1.0 při β = 20 s . by-Synthesis). Základem této metody je měnit počet a parametry vstupních pulsů tak dlouho, až získáme co možná nejpřesnější aproximaci průběhu základního tónu. Pro Fujisakiho prozodický model platí, že libovolným počtem přízvukových pulsů a úsekových impulsů můžeme aproximovat jakýkoli průběh základního tónu s libovolnou přesností. Z tohoto důvodu je nutné při této metodě zavést taková omezení, aby vypočtený model byl z lingvistického hlediska co nejsmysluplnější. V novějších pracích (např. [MIX98][MIX00]) se objevují nové přístupy umožňující automatické získávání parametrů Fujisakiho modelu z řečového signálu. Použití intonačních modelů nám může zároveň podstatně zjednodušit proces generování průběhu základního tónu syntetické řeči v řečovém syntezátoru, což je také jedním z cílů této práce. Např. při použití prozodických pravidel není nutno generovat těmito pravidly přímo složitou konturu základního tónu řeči, ale postačí generování výrazně jednoduššího buzení intonačního modelu pomocí jednoduššího systému pravidel. 2.7 Parametrická analýza signálů Pro popis různých faktorů vyskytujících se v procesu tvorby či percepce řeči již bylo navrženo mnoho různých modelů. S jistotou můžeme říci, že žádný navržený model není schopen popsat beze zbytku všechny známé vlastnosti lidské řeči. Základní vlastností modelu je najít matematické vztahy použitelné pro popis určitého fyzikálního stavu s maximální jednoduchostí a přesností. Mnoho základních modelů produkce řeči je nepochybně založeno na principu zdroj signálu – filtr. Zdrojem signálu jsou zde buď hlasivky rozkmitané proudem vzduchu (znělé buzení), nebo šum vznikající turbulencemi (neznělé buzení). Jeden z nejúspěšnějších modelů v oblasti zpracování řeči je bezesporu Fantův model lineární produkce řeči publikovaný G. Fantem 29 v r. 1960 [FAN60], kde byla poprvé publikována parametrická metoda produkce řeči. Klíčovou publikací shrnující dosavadní poznatky v oblasti lineární predikce signálů je [MAR76]. 2.7.1 Parametrické modely signálů Parametrické modely jsou založeny na myšlence nalezení vhodného modelu, který v určitém smyslu co nejlépe aproximuje zvolenou charakteristiku signálu (např. spektrální hustotu). Pokud zúžíme problém parametrických modelů tak, že hledání parametrického popisu signálu budeme považovat za úlohu nalezení racionální lomené přenosové funkce číslicového filtru, pak úloha nalezení vhodného parametrického modelu k signálu je ekvivalentní úloze aproximace naměřených dat racionální lomenou funkcí stupně M metodou nejmenších čtverců. Ačkoli aproximaci metodou nejmenších čtverců použil Gauss již před více než dvěma sty lety, zdá se, že první praktické použití této metody pro predikci signálů pochází od Wienera. První vědci, kteří přímo aplikovali metodu lineární predikce pro analýzu a syntézu řeči, byli Saito a Itakura v r. 1966 [ITA69]. Předpokládejme, že signál vznikl průchodem budícího signálu, jehož spektrální hustota je konstantní (tj. bílý šum nebo jednotkový impuls), přes lineární časově invariantní (LTI) filtr. Tento proces vzniku signálu budeme označovat jako syntézu a příslušný filtr jako syntetizující filtr. Úkolem je určení koeficientů tohoto filtru ze vzorků signálu. Koeficienty filtru parametrizují signál v tom smyslu, že kvadrát amplitudové frekvenční charakteristiky filtru aproximuje skutečnou spektrální hustotu signálu. Parametrizací signálu dochází k redukci počtu dat, neboť jednu konečnou realizaci signálu o N vzorcích nahradíme M parametry, přičemž musí být splněna nerovnost 1 ≤ M ≤ N/2. Kritériem pro určení modelu je nejčastěji kvadratické kritérium [UHL95]. Chceme-li určit kmitočtovou charakteristiku syntetizujícího filtru, je nutné provést analýzu signálu. Smyslem analýzy je provedení dekorelace signálu x(n) tak, aby informace o jeho korelační (spektrální) struktuře zůstala uchycena v analyzujícím filtru. Kmitočtová charakteristika analyzujícího filtru je tedy inverzní ke kmitočtové charakteristice syntetizujícího filtru, proto se analyzující filtr rovněž označuje jako inverzní filtr. Jelikož provádí dekorelaci signálu (bělí jeho spektrální hustotu), nazývá se rovněž dekorelační (bělící) filtr [UHL95]. Syntetizující filtr může mít tři typy přenosových funkcí H(z) (typy modelů). Jsou to ARMA model (polezero model), používající IIR filtr s póly i nulovými body, MA model (all-zero model), používající FIR filtr obsahující nulové body a autoregresní (AR) model (all-pole model), používající IIR filtr s póly. Jedině u autoregresního modelu je určení jeho parametrů lineární úloha, a proto je nejčastěji používaný, především v analýze řeči i spektrální analýze. Všechny tři modely aproximují skutečné spektrum signálu pomocí kvadrátu modulu frekvenční charakteristiky LTI filtru. Volbou řádu filtru (řádu modelu) volíme stupeň aproximace. Čím nižší řád modelu, tím je kmitočtová charakteristika hladší a hůře modeluje skutečnou spektrální hustotu signálu. Řád modelu souvisí i s počtem spektrálních špiček a údolí, které lze modelovat. Syntetizující filtr si lze představit jako kaskádu rezonátorů, z nichž každý může modelovat jednu špičku. Proto modelem řádu M lze modelovat nejvýše M/2 špiček (M/2 údolí). Důsledkem tohoto tvrzení je skutečnost, že AR model nemůže ve spektrální hustotě zachytit periodicitu signálu. 2.7.2 Lineární predikce Pro autoregresní modely lze úlohu identifikace parametrického modelu interpretovat jako úlohu aproximace spektrální hustoty signálu metodou nejmenších čtverců polynomem stupně M. Tímto polynomem je určena kmitočtová charakteristika inverzního filtru. Pomocí této interpretace lze rovněž vysvětlit, jak dochází k redukci dat. Použijeme-li k výpočtu spektrální hustoty signálu DFT, získáme tolik čar, kolik je vzorků signálu (např. N) [ČÍŽ81]. Po aproximaci snížíme počet parametrů na M < N. Např. pro analýzu řeči při vzorkování 8 kHz volíme typicky N = 128 až 256 a M = 8 až 12. M-tý řád lineární predikce vzorku x(n) vyžaduje lineární kombinaci M předchozích vzorků. Definujeme-li x̃ jako predikovaný (předpovídaný) vzorek, potom chyba predikce e(n) je určena rovnicí [MAR76] e ( n ) = x ( n ) − x% ( n ) M M m =1 m=0 e(n) = x(n) + ∑ am x ( n − m ) = ∑ am x ( n − m ), a0 = 1, n = 0, 1, K , N + M − 1 , (3.1) kde M (3.2) x% ( n ) = −∑ am x ( n − m ) . m =1 30 Výstupem inverzního filtru je chyba predikce e(n) určená rozdílem aktuální hodnoty vzorku x(n) a jeho předpovědi x̃(n). Předpověď x̃(n) je dána lineární kombinací M minulých hodnot signálu x(n–m), m = 1, 2, …, M (viz vztah 3.2). Inverzní (chybový) lineárně predikční filtr je znázorněn na obr. 2.13. Obr. 2.13 Inverzní (chybový) lineárně predikční filtr. Poznámka: Volba znaménka v rovnicích 3.1 a 3.2 ovlivňuje znaménka ve všech souvisejících vztazích, a proto je nutné dávat pozor na formulaci rovnice, která definuje chybu predikce, a nelze mechanicky přebírat algoritmy uváděné v literatuře. Chyba predikce bývá rovněž definována vztahem M e(n) = x (n) − x% ( n ) = x ( n ) − ∑ am x ( n − m ), n = 0, 1, K , N + M − 1. (3.3) m =1 Lineárně predikční filtr pro syntézu signálu pomocí AR modelu je zobrazen na obr. 2.14. Obr. 2.14 Filtr pro syntézu pomocí lineární predikce. 2.7.3 Metody řešení normálních rovnic predikce Autokorelační metoda se používá téměř výhradně při analýze řeči především díky přijatelné výpočetní náročnosti a stabilitě. Tato metoda při výpočtu korelace používá všechna dostupná data. Proto jsou autokorelační koeficienty pro větší zpoždění určovány z méně součinů. To způsobuje růst chyby odhadu a má závažné důsledky pro spektrální vlastnosti autokorelační metody, které lze vysvětlit následujícím způsobem. Tvrzení, že s rostoucím zpožděním klesá počet sčítaných součinů, je ekvivalentní tvrzení, že autokorelační metoda při výpočtu korelačních koeficientů „naráží“ na okraje dostupných dat a nemůže sahat „vně“. To znamená, že autokorelační metoda používá časové okno, kterým váhuje data. Tím je zároveň řečeno, že data vně intervalu (x(0), …, x(N–1)) jsou nulová. Proto při aplikaci této metody pro spektrální analýzu musíme počítat s tím, že výsledný odhad spektrální hustoty je dán konvolucí skutečné spektrální hustoty a kvadrátu modulu kmitočtového okna. To má za následek ztrátu detailů (rozlišení) a vznik systematické chyby – „rozmazávání spektra“. Typickým představitelem této metody je Lewinson-Durbinův algoritmus založený na Lewinsonově rekursi, která váže koeficienty filtrů různých řádů. Kovarianční metoda se používá pro spektrální analýzu, protože poskytuje větší frekvenční rozlišení. Pro analýzu řeči se téměř nepoužívá, neboť pro větší počet vzorků signálu (N ≈ 100) poskytuje výsledky shodné s autokorelační metodou, vyžaduje více výpočetních operací a pro řečové signály není tak stabilní jako autokorelační metoda. 31 2.7.4 Modelování řečového signálu pomocí lineární predikce Lineární model řeči se poprvé objevil ve Fantově práci [FAN60]. Z fonologického hlediska se řeč zkládá z hlásek, které jsou obecně dvojího typu – znělé a neznělé. Znělé hlásky vznikají buzením lidského vokálního traktu tlakovými impulsy vzduchu proudícího hlasivkami, zatímco neznělé hlásky jsou vytvářeny vzduchovými turbulencemi uvnitř vokálního traktu, viz obr. 2.1. Lineární model řeči nahrazuje hlasivky zdrojem periodického signálu pro znělé hlásky a zdrojem bílého šumu pro neznělé hlásky. Hlasový trakt je pak nahrazen časově proměnným číslicovým filtrem. Lineární model tvorby řeči můžeme vidět na obr. 2.5. 32 3 Cíle práce Vzhledem k výsledkům provedeného zhodnocení současného stavu problematiky v oblasti modelování prozodie řečového signálu jsem si stanovil následující cíle práce: ● realizovat LPC kodér a dekodér průběhu základního tónu řeči a ověřit jeho funkčnost, ● zkoumat vliv aproximace zbytkového signálu lineární predikce na výslednou kvalitu řeči, optimalizovat parametry LPC kodéru a dekodéru průběhu základního tónu řeči s ohledem na minimální složitost a maximální kvalitu řeči, ● zkoumat prozodicky relevantní závislosti zbytkového signálu lineární predikce průběhu základního tónu řeči, ● ověřit možnost využití LPC analýzy průběhu základního tónu řeči pro tvorbu nových prozodických pravidel, ● ověřit možnost automatické generace zbytkového signálu lineární predikce z psaného textu za účelem použití LPC modelování při automatické syntéze z psaného textu. 33 34 Část II Praktická část 35 36 4 Lineární predikce průběhu základního tónu řeči Pro analýzu prozodických průběhů pomocí lineární predikce je nutné, aby tyto průběhy byly spojité nebo aby se s nimi jako se spojitými mohlo pracovat. Jak již bylo řečeno, skládá se prozodie řeči z melodie (průběhu základního tónu), průběhu intenzity a časového členění. Z percepčního hlediska je nejdůležitějším prozodickým parametrem melodie, která se rovněž nejsnáze modeluje. Absolutní hodnota základního tónu se dá přesně odečíst z řečového signálu, a naopak při syntéze je řečový signál generován s patřičnou absolutní okamžitou hodnotou základního tónu. Okamžitá hodnota energie řeči (intenzity) je závislá na právě vyslovované hlásce a na pozici v rámci této hlásky (např. exploze u eploziv se vyznačuje značným nárůstem energie). Prozodicky zajímavá je jen hodnota intenzity řeči relativně vztažená k nějaké standardní hodnotě intenzity, udávající, o kolik procent či decibelů se v daném úseku intenzita řeči liší od standardní hodnoty intenzity. Tyto relativní hodnoty intenzity řečového signálu však nelze získat přímo z přirozeného signálu, je nutné je získat porovnáváním intenzity přirozeného signálu s intenzitou jakéhosi standardního signálu nebo pomocí syntezátoru řeči, u kterého měníme prozodické parametry tak dlouho, až je výsledný průběh syntetické řeči totožný s porovnávaným vzorkem (tzv. metoda analýzy pomocí syntézy) Stejný problém jako u intenzity se objevuje i časového členění s tím rozdílem, že informace o absolutní délce jednotlivých suprasegmentálních úseků určená z přirozeného řečového signálu a vyjádřená v časových jednotkách (obvykle v milisekundách) je prozodicky zajímavá, ale pro další zpracování nevhodná. Posloupnost hodnot absolutního trvání řečových jednotek je jednak nespojitá a jednak neekvidistantní. K získání spojitého průběhu nesoucího informaci o časovém členění je nutné ekvidistantně porovnávat přirozený signál s jakýmsi řečovým signálem se standardním časovým členěním, anebo použít výše zmiňovanou metodu analýzy pomocí syntézy. Jelikož má význam určovat hodnotu základního tónu pouze u znělých úseků řeči, je průběh základního tónu nespojitá veličina. Pro LPC analýzu tohoto průběhu je nutné stanovit hodnoty tohoto průběhu i v neznělých částech signálu tak, aby průběh základního tónu řeči byl spojitý. Na základě získaných poznatků o lineárně prediktivním kódování a o modelování prozodie řečového signálu byl realizován LPC analyzátor průběhu základního tónu řečového signálu, jehož struktura a činnost bude popsána v této kapitole. 4.1 Návrh LPC analyzátoru základního tónu řeči Průběh základního tónu řeči získáme pomocí detektoru základního tónu (pitchdetektoru), na jehož vstup přivedeme řečový signál. Pokud bude krok pitchdetekce 8 ms, vzorkovací kmitočet detektoru základního tónu bude 125 Hz, a tudíž budou v tomto průběhu obsaženy změny základního tónu do kmitočtu cca 60 Hz. Z percepčního hlediska je tato informace značně redundantní, neboť melodie, jako suprasegmentální jev, se projevuje od úrovně slabik výše. Z toho vyplývá, že dostatečná šířka pásma pro průběh základního tónu je cca 5 Hz, což je přibližně jedna desetina oproti signálu na výstupu pitchdetektoru. Jak již bylo řečeno, je průběh základního tónu řeči nespojitý signál. Pro získání spojitého průběhu základního tónu se šířkou pásma cca 5 Hz je třeba nejprve aproximovat neznělé úseky signálu, poté omezit dolní propustí jeho spektrální složení potlačením všech složek nad 5 Hz a nakonec provést decimaci signálu v poměru 1:10. Pro filtraci aproximovaného průběhu základního tónu byl navržen pomocí nástroje „sptool“ v prostředí MATLAB Čebyševův filtr 2. typu s propustným pásmem do 5 Hz, ve kterém je útlum maximálně 3 dB, a s potlačeným pásmem nad 6 Hz s útlumem minimálně 35 dB. Kmitočtová charakteristika je na obr. 4.1a, její detail je pak na obr. 4.1b. Impulsní charakteristiky jsou pak znázorněny na obr. 4.1c a 4.1d. Zpoždění filtru činí 13 vzorků. Filtr byl realizován nejprve v jazyce Matlab a následně implementován v jazyce C (viz program filtc). Výpočet filtru v prostředí Matlab je uveden v tabulce 4.1. Tab 4.1 Výpočet decimačního filtru v prostředí Matlab Fs=125; Wp=5; Ws=6; Rp=3; Rs=35; [n,wn]=cheb2ord(Wp*2/Fs,Ws*2/Fs,Rp,Rs) [b,a]=cheby2(n,35,wn); 37 Obr. 4.1 Charakteristiky filtru pro decimaci průběhu základního tónu řeči. 38 Obr. 4.2 Ukázka interpolace průběhu základního tónu řeči. Pro definování průběhu základního tónu v neznělých oblastech (tj. tam, kde je výstup z detektoru základního tónu nulový) se používá lineární interpolace, což je vyhovující vzhledem k následné filtraci a decimaci. V neznělé části na začátku signálu je jako F0 dosazena konstantně první nenulová hodnota z výstupu pitchdetektoru a obdobně v neznělé části na konci signálu je dosazována konstantně poslední nenulová hodnota z výstupu pitchdetektoru. V neznělých částech uprostřed signálu je hodnota F0 lineárně interpolována mezi poslední nenulovou hodnotou z výstupu pitchdetektoru před začátkem neznělého úseku a první nenulovou hodnotou po skončení neznělého úseku. Po interpolaci neznělých úseků jsou ještě odstraněny chyby pitchdetektoru a signál je vyhlazen průměrujícím FIR filtrem o délce 5. Výpisy funkcí f0interp, f0remerr a f0smooth provádějící lineární interpolaci, odstraňování chyb a vyhlazování průběhu základního tónu řeči jsou uvedeny v příloze. Ukázka interpolace průběhu základního tónu včetně aplikace odstraňování chyb a vyhlazování je uvedena na obr. 4.2. Obr. 4.3 Ukázka filtrace interpolovaného průběhu základního tónu řeči. 39 Obr. 4.4 a) Ukázka decimace průběhu základního tónu řeči, b) Vypočtený zbytkový signál včetně vypočtených koeficientů filtru. Před decimací signálu a vlastní lineárně predikční analýzou decimovaného signálu je nutné ještě ze signálu odstranit nebo podstatně omezit stejnosměrnou složku. Z výpočetního hlediska je výhodné, odečteme-li od průběhu základního tónu namísto stejnosměrné složky první nenulovou hodnotu z výstupu pitchdetektoru. Ukázky filtrace interpolovaného průběhu základního tónu řeči a minimalizace stejnosměrné složky tohoto průběhu jsou znázorněny na obr. 4.3. Pro následný výpočet LPC koeficientů je použita autokorelační metoda. Vypočtené LPC koeficienty jsou pak s pomocí inverzního filtru použity pro výpočet zbytkového signálu lineární predikce. Ukázku decimace filtrovaného signálu bez stejnosměrné složky můžeme vidět na obr. 4.4a. zbytkový signál lineárního prediktoru získaný analýzou průběhu z obr. 4.4a můžeme vidět na obr. 4.4b. Obr. 4.5 a) Blokové schéma LPC analyzátoru. b) Blokové schéma vlastního bloku LPC analýzy z obr. 4.5a. 40 Na obr. 4.5a vidíme celé funkční blokové schéma LPC analyzátoru řeči obsahující detektor základního tónu, blok interpolace a odečtení stejnosměrné složky, decimační filtr, decimátor a nakonec vlastní blok LPC analýzy. Vstupem popisovaného analyzátoru je řečový signál, výstupem pak zbytkový signál lineární predikce, lineárně predikční koeficienty a stejnosměrná složka průběhu základního tónu. Podrobnou strukturu bloku LPC analýzy vidíme na obr. 4.5b. Vstupem tohoto bloku je decimovaný spojitý průběh základního tónu, ze kterého jsou pomocí autokorelace vypočteny autokorelační koeficienty r (program aukor je uveden v příloze). Z těchto koeficientů jsou pomocí Leroux-Guegenova algoritmu, uvedeném v [LER77], vypočteny koeficienty odrazu rc , které jsou pomocí transformační funkce lpt42 (popsané v [MAR76] str. 229–233) převedeny na koeficienty filtru a, tvořící zároveň výstup bloku LPC analýzy. Z těchto koeficientů a ze vstupního decimovaného průběhu základního tónu je pomocí inverzní filtrace vypočten zbytkový signál lineární predikce tvořící druhý výstupní signál bloku LPC analýzy. Schéma inverzního filtru pro výpočet zbytkového signálu lineární predikce je uvedeno na obr. 4.6. Obr. 4.6 Blokové schéma inverzního filtru. Celý analyzátor byl pro účely ověření popisované metody naprogramován v jazyce Matlab a následně byl realizován v jazyce C v prostředí Matlab i v systému SpeechStudio. Výpis kódu LPC analyzátoru zapsaný pro prostředí Matlab jako funkce lpan1 je uveden v příloze. Jednou z nejdůležitějších součastí popisovaného LP analyzátoru je detektor základního tónu řeči. Všechny chyby na jeho výstupu se významnou měrou podílejí na zkreslení získaných výsledků. Popisem použité metody detekce základního tónu se podrobně zabývá následující podkapitola. 4.2 Použité metody detekce průběhu základního tónu řeči Jak již bylo řečeno, hraje detektor základního tónu klíčovou roli při LPC analýze průběhu základního tónu. V literatuře bývají zmiňovány detektory základního tónu pracující přímo s řečovým signálem nebo používající jeho spektrální obraz. Nejdůležitějším zástupcem první skupiny je autokorelační metoda, do druhé skupiny pak patří detekce základního tónu využívající periodicitu zbytkového (chybového) signálu lineární predikce [MAR76], využívající periodicitu kepstra [PRI97] nebo detekující harmonické kmitočty základního tónu korelací spektra [SCH95]. Po dlouhodobých experimentech s různými detektory základního tónu jsem se rozhodl pro potřeby analýzy, která neprobíhá v reálném čase, používat automatické označování pitchpulsů v řečovém signálu s možností manuální korekce. Výsledný průběh základního tónu je pak přepočítán přímo z poloh jednotlivých pitchpulsů a může být případně konfrontován s výstupem autokorelačního pitchdetektoru. 4.2.1 Detekce základního tónu řeči autokorelační metodou Bezesporu nejčastěji užívanou metodou k detekování základního tónu je metoda autokorelace řečového signálu, která existuje v nejrůznějších variantách, a to i jako součást hybridních systémů. Tato metoda je založena na hledání korelačních maxim, z nichž jsou vybráni „kandidáti“ na možnou hodnotu základního tónu. Z těchto kandidátů je následně za pomoci určitých podmínek vybrán „vítěz“, případně je daný úsek signálu prohlášen za neznělý. Tato metoda je podrobně popsána v [RAB78] str. 141 až 158. Pro účely detekce základního tónu byla tato metoda implementována v prostředí Matlab i v jazyce C v programu pitchn, jenž je uveden v příloze. 4.2.2 Detekce pitchpulsů v řečovém signálu s označením znělosti Máme-li namluvenou řečovou databázi, u které opakovaně vyvstává potřeba určení průběhu základního tónu, je výhodné určovat základní tón řeči pomocí označených pitchpulsů a znělých úseků v této databázi. 41 K tomuto účelu je vhodný algoritmus automatického označování pitchpulsů a znělých úseků s možností ruční korekce. Robustní algoritmus pro označování pitchpulsů je uveden např. v [GON98]. Pro účely této práce byl navržen algoritmus automatického určování pitchpulsů využívající analýzu průběhů krátkodobé energie signálu a počtu průchodů nulou. Této informace se využívá také k určení znělosti signálu. Algoritmus automatického označování pitchpulsů byl následně doplněn o algoritmus umožňující lineárně interpolovat pitchpulsy v neznělých oblastech signálu, což je důležité pro získání spojitého průběhu základního tónu (i když z fonetického hlediska jsou pitchpulsy v neznělých oblastech nesmyslné). Popisovaný algoritmus automatického označování pitchpulsů umožňuje zvolit zda chceme vkládat kladné či záporné pitchpulsy, neboť (v závislosti na mluvčím a použité nahrávací aparatuře) mohou být v nahrávce pitchpulsy orientovány kladně i záporně. Tento problém jde samozřejmě řešit i změnou polarity řečového signálu. Algoritmus pro označování pitchpulsů a znělých úseků byl odladěn v prostředí Matlab (bez možnosti korekce určených pitchpulsů) a poté byl přenesen do systému SpeechStudio umožňující manuální korekci pitchpulsů i znělých úseků včetně jejich exportu do prostředí Matlab. 4.3 Návrh LPC syntezátoru základního tónu řeči V podkapitole 4.1 byl popsán návrh lineárně prediktivního analyzátoru průběhu základního tónu řeči, jehož výstupem byl parametrický popis tohoto signálu. Tento analyzátor tvoří první část komplexního systému a má svůj logický protějšek v lineárně prediktivním syntezátoru průběhu základního tónu řeči. Vzájemným propojením obou funkčních celků vznikne tzv. kodér/dekodér základního tónu řeči založený na metodě lineární predikce, který umožňuje provést posouzení vhodnosti použití lineární predikce pro modelování základního tónu řeči. Průběh základního tónu řeči získáme použitím rekonstrukčního LPC filtru, který budíme zbytkovým signálem lineární predikce získaným pomocí analýzy popsané v článku 4.1. Parametry filtru tvoří 4 LPC koeficienty získané rovněž pomocí analýzy popsané v článku 4.1. Struktura rekonstrukčního filtru je znázorněna na obr. 4.7. Obr. 4.7 Struktura rekonstrukčního filtru syntezátoru základního tónu řeči. Na výstupu rekonstrukčního filtru získáme spojitý signál základního tónu řeči o vzorkovacím kmitočtu 12,5 Hz. Pro resyntézu řeči potřebujeme mít opět průběh základního tónu řeči s původními parametry, tj. se vzorkovacím kmitočtem 125 Hz včetně informace o znělosti (nulová hodnota základního tónu v neznělých úsecích). Toho dosáhneme desetinásobným převzorkováním a následnou filtrací. Pro filtraci je použit stejný filtr jako při analýze (viz článek 4.1). Následně je přičtena hodnota minimalizující stejnosměrnou složku (viz článek 4.1) a přidána informace o znělosti. Nulové hodnoty jsou vloženy tam, kde se nacházejí v původním signálu na výstupu pitchdetektoru (tj. v neznělých oblastech signálu). Blokové schéma LPC syntezátoru základního tónu řeči je uvedeno na následujícím obrázku. Signál základního tónu řeči po resyntéze a převzorkování a po následné filtraci je vyobrazen na obr. 4.9. Ukázka průběhu základního tónu řeči na výstupu z LPC syntezátoru v porovnání s původním průběhem je na obr. 4.10. Obr. 4.8 Blokové schéma LPC syntezátoru základního tónu řeči. Syntezátor byl rovněž pro účely ověření metody nejprve realizován v jazyce Matlab a následně implementován v jazyce C. Výpis kódu LPC syntezátoru zapsaný pro prostředí Matlab jako funkce lpsyn1 je uveden v příloze. Ve spojení s analyzátorem popsaným v předchozí kapitole tvoří kodér/dekodér průběhu 42 Obr. 4.9 a) Signál průběhu základního tónu řeči po LPC resyntéze a interpolaci, b) Budící signál rekonstrukčního filtru včetně 4 LPC koeficientů. základního tónu řeči. Tento kodér/dekodér byl začleněn do LPC vokodéru pro ověření funkčnosti kódování průběhu základního tónu. Vypočtené výsledky i poslechové testy ukazují, že šířka kanálu pro přenos základního tónu (4 LPC koeficienty a zbytkový signál lineární predikce) je dostatečná pro věrnou reprodukci prozodie. V dalších podkapitolách se budu zabývat informačním obsahem zbytkového signálu lineární predikce a možnostmi jeho aproximace. 4.4 Ověření funkčnosti LPC kodéru/dekodéru průběhu základního tónu Pro praktické ověření je nutné propojit analyzátor a syntezátor průběhu základního tónu z předchozích podkapitol a včlenit je do řečového vokodéru. Blokové schéma vzniklého systému pro LPC vokodér pracující se vzorkovacím kmitočtem 8 kHz je uvedeno na obr. 4.11. Tento LPC vokodér s LPC kodérem-dekodérem základního tónu byl realizován v prostředí Matlab jako program f0lpkodek a byl otestován na větách z prozodického korpusu vytvořeného pro účely této práce (viz článek 6.1 a příloha A). Poslechově byla prozodie Obr. 4.10 Ukázka průběhu základního tónu řeči po resyntéze metodou lineární predikce. 43 Obr. 4.11 Blokové schéma řečového LPC vokodéru s LPC analýzou / syntézou průběhu základního tónu. u všech 288 vět z korpusu téměř nerozeznatelná od originální prozodie, což ukázalo, že použitá metoda je k modelování prozodie vhodná. Další výzkum byl zaměřen na možnosti co největšího zjednodušení zbytkového signálu lineární predikce při poslechově přijatelné prozodii na výstupu vokodéru. 44 5 Vlastnosti zbytkového signálu lineární predikce 5.1 Aproximace zbytkového signálu lineární predikce Z prozodického hlediska je informační obsah zbytkového signálu lineární predikce stále značně redundantní, a proto je vhodné jej dále co nejvíce zjednodušit při zachování prozodicky důležité informace. Jako nejjednodušší se jeví možnost aproximace zbytkového signálu lineární predikce obdélníkovým signálem. Zvláštním případem aproximace obdélníkovým signálem je pak aproximace jednotlivými impulsy. Pro posouzení možnosti buzení rekonstrukčního filtru obdélníkovým či impulsovým signálem je dobré znát odezvu rekonstrukčního filtru na jednotkový skok a na jednotkový impuls. Pro tyto účely byly ze souborů vět od mluvčího „Machač“ (2x 72 vět – Machač1 a Machač2) vypočteny průměrné hodnoty lineárně predikčních koeficientů. Statistické vyhodnocení vypočtených hodnot je uvedeno v tabulce 5.1 (řád lineární predikce je 4, vzorkovací kmitočet průběhu základního tónu je 125 Hz a decimační poměr je 1:10). Na obrázku 5.1 je pak statistické vyhodnocení vypočtených koeficientů znázorněno graficky. Tab. 5.1 Statistické vyhodnocení LP koeficientů 144 vět ze souboru „Machač1“ a „Machač2“ koeficient průměr a1 a2 a3 a4 -1,23761 0,60009 -0,32046 0,10699 směrodatná odchylka 0,15542 0,24162 0,18243 0,10326 střední chyba 0,01295 0,02014 0,01520 0,00860 minimum maximum rozsah -1,65578 0,20307 -0,78066 -0,11667 -0,86500 1,21729 0,19665 0,42493 0,79078 1,01422 0,97731 0,54160 Hodnoty vypočtených koeficientů byly následně použity jako parametry rekonstrukčního filtru z obr. 4.8, který byl nejprve buzen jednotkovým skokem a následně jednotkovým impulsem. Výsledné průběhy vypočtené v prostředí Matlab programem lpsyn1 můžeme vidět na obrázku 5.2. Z průběhů na obrázku 5.2 je patrné, že vhodným obdélníkovým či impulsním buzením je teoreticky možné modelovat poměrně přesně průběh základního tónu. Jako vhodná informace pro generování budících pulsů z hlediska syntézy řeči se zdá být informace o hranicích suprasegmentálních celků (slabik, přízvukových taktů či LP coefficients statistic - speaker Machac - 144 sentences 2 Coeff. value 1 0 -1 -2 a1 a2 a3 a4 LP coefficients Obr. 5.1 Statistické vyhodnocení LP koeficientů 144 vět ze souboru „Machač1“ a „Machač2“. intonačních úseků) spolu s informací o jejich délce a postavení ve větě. Z odezvy na jednotkový skok vyplývá, že časová konstanta rekonstrukčního filtru se pohybuje v oblasti řádově stovek milisekund. Popisovaným způsobem tedy můžeme velice dobře modelovat intonační konturu na úrovni slabik a přízvukových taktů, úsekovou složku je pak nutno modelovat jiným způsobem. Jelikož úseková složka má většinou především deklinační funkci, je možné řešit úsekovou složku samostatnými pravidly udávajícími sklon deklinační křivky. 45 LP Coefficient a1 0,4 0,2 0,0 -0,2 -0,4 -0,6 -0,8 -1,0 -1,2 -1,4 -1,6 -1,8 -2,0 Coefficient a2 Coefficient a1 Obr. 5.2 Odezva rekonstrukčního filtru na jednotkový skok a jednotkový impuls (LP koeficienty ze souboru vět „machač1“ a „machač2“). jana machac1 machac2 2,0 1,8 1,6 1,4 1,2 1,0 0,8 0,6 0,4 0,2 0,0 -0,2 -0,4 zaruba LP Coefficient a2 jana LP Coefficient a3 1,4 1,2 1,0 0,8 0,6 0,4 0,2 0,0 -0,2 -0,4 -0,6 -0,8 -1,0 jana machac1 machac2 machac1 machac2 zaruba Speaker Coefficient a4 Coefficient a3 Speaker LP Coefficient a4 1,4 1,2 1,0 0,8 0,6 0,4 0,2 0,0 -0,2 -0,4 -0,6 -0,8 -1,0 zaruba jana Speaker machac1 machac2 zaruba Speaker Obr. 5.3 Statistická analýza lineárně predikčních koeficientů pro jednotlivé mluvčí. V první fázi zatím nebudu s hranicemi suprasegmentálií pracovat a omezím se na generování budících pulsů přímo z průběhu zbytkového signálu. 46 5.1.1 Aproximace zbytkového signálu obdélníkovým signálem Pro snížení informační redundance zbytkového kanálu lineárního prediktoru budeme zbytkový signál aproximovat obdélníkovými pulsy o délce w se zvolenou prahovou hodnotou ε. Pro jednoduchost rozdělíme zbytkový signál na úseky o délce w , ve kterých bude hodnota nastavena na průměrnou hodnotu zbytkového signálu v daném úseku tehdy, bude-li tato průměrná hodnota větší než zvolená prahová úroveň ε. V opačném případě bude hodnota nastavena na nulu. Potom tedy i-tou aproximovanou hodnotu yi j-tého vzorku zbytkového signálu ej určíme pomocí následujícího vztahu: k + w −1 ⎧ k + w−1 ej ∑ ⎪ ∑ ej j =k j =k ⎪ >ε ; pro ⎪ w ⎛i ⎞ w yi = ⎨ k = w ⋅ floor ⎜ ⎟ , k + w −1 ⎝ w⎠ ⎪ ej ∑ ⎪ j =k ≤ε pro ⎪0; w ⎩ kde ej . . . j-tá hodnota zbytkového signálu lineárního prediktoru, yi . . . i-tá hodnota aproximovaného zbytkového signálu lineárního prediktoru, w . . . šířka aproximačního okna ve vzorcích, k . . . počáteční index aproximačního okna pro i-tou hodnotu zbytkového signálu, ε . . . prahová úroveň aproximace, a funkce y = floor(x) do proměnné y dosadí oříznutou celočíselnou část proměnné x. (5.1) Z hlediska hodnocení výsledného průběhu základního tónu je vhodné definovat chybu popisující rozdíl mezi původním průběhem základního tónu analyzované promluvy a průběhem základního tónu získaného pomocí lineárně predikční analýzy a syntézy. Tuto chybu má smysl počítat pouze ve znělých oblastech řečového signálu, neboť v neznělých úsecích je hodnota základního tónu řeči rovna nule. Jako vhodná chybová veličina se pro tento účel jeví střední kvadratická chyba, která je dána vztahem: MSE = 1 V n −1 ∑ ( F% i =0 0i − F0i ) 2 , (5.2) kde F0i . . . hodnota základního tónu i-tého rámce analyzované promluvy na výstupu pitchdetektoru, F̃0i . . . hodnota základního tónu i-tého rámce po resyntéze pomocí lineární predikce, n . . . počet hodnot průběhu základního tónu řeči (počet rámců promluvy), V . . . počet nenulových hodnot základního tónu řeči v promluvě (počet znělých rámců), MSE . . . střední kvadratická chyba průběhu základního tónu po resyntéze pomocí lineární predikce. Aproximaci zbytkového signálu lineárního prediktoru společně s odpovídajícím průběhem základního tónu pro větu „o1d3a“ od mluvčího „Machač“ můžeme vidět na obr. 5.4 a 5.5. Na obr. 5.4 jsou zobrazeny aproximované průběhy zbytkového signálu pro šířky aproximačního okna w = 1, 2, 3 při prahové úrovni aproximace ε = 4 a na obr. 5.5 jsou pak zobrazeny aproximované průběhy zbytkového signálu pro šířky aproximačního okna w = 4, 5, 6 rovněž při prahové úrovni aproximace ε = 4. Ekvivalent obrázků 5.4 a 5.5, ale pro větu „d3k3a“ od mluvčího „Machač“, představují obrázky 5.6 a 5.7. Na obr. 5.8 jsou zobrazeny aproximované průběhy zbytkového signálu věty „d3k3a“ od mluvčího „Machač“ pro prahové úrovně aproximace ε = 1, 2, 3 při šířce aproximačního okna w = 2 a na obr. 5.9 jsou zobrazeny aproximované průběhy zbytkového signálu pro prahové úrovně aproximace ε = 2, 4, 8 rovněž při šířce aproximačního okna w = 2. V pravém horním rohu každého obrázku jsou uvedeny příslušné hodnoty střední kvadratické chyby pro jednotlivé intonační průběhy. Z obrázků 5.4 až 5.7 vyplývá, že při šířce aproximačního okna větší než 3 vzorky nastává již velké zkreslení výstupního průběhu základního tónu, což je dobře patrné rovněž na velikosti střední kvadratické chyby průběhu základního tónu po resyntéze pomocí lineární predikce. Z obrázků 5.8 a 5.9 je zřejmé, že do hodnoty prahové úrovně aproximace ε = 5 je střední kvadratická chyba v přijatelných mezích (menší než 150) a rovněž zkreslení výstupního průběhu základního tónu je subjektivně přijatelné. Poslechovými experimenty, které se poměrně dobře shodují s velikostí střední kvadratické chyby definované vztahem 5.2, byly pro popisovanou metodu aproximace zbytkového signálu lineárního prediktoru stanoveny jako optimální hodnoty aproximačních parametrů w = 2 a ε = 4. Pro hodnotu šířky aproximačního okna w = 1 jsou sice průměrné hodnoty střední kvadratické chyby ještě lepší, ale úroveň snížení redundance zbytkového signálu je zde nízká, neboť aproximovaný zbytkový signál v podstatě kopíruje původní zbytkový signál (viz obr. 5.4 a 5.6). Při šířce aproximačního okna w = 1 se jedná o aproximaci zbytkového signálu impulsy a budu se jí zabývat v následujícím odstavci. Analýza střední kvadratické pro dvě věty ze souboru „Machač1“ je uvedena ve dvou následujících 47 tabulkách (tabulka 5.2a pro větu „o1d3a“ a tabulka 5.2b pro větu „d3k3a“). Pro každou větu zde byla určena střední kvadratická chyba průběhu základního tónu po resyntéze pomocí lineární predikce pro čtyři různé šířky aproximačního okna w = 1, 2, 3, 4 při čtyřech různých hodnotách prahové úrovně aproximace ε = 2, 4, 6 a 8 (čili pro každou větu šestnáct různých hodnot střední kvadratické chyby). Tab. 5.2 Analýza střední kvadratické chyby pro věty o1d3a (a) a d3k3a (b) od mluvčího Machač MSE Machač o1d3a b) šířka aproximačního okna w 1 2 3 4 2 84,9 112,6 178,5 155,5 4 84,8 122,2 165,9 173,8 6 92,5 146,5 216,5 154,7 8 103,6 165,3 263,6 207,1 MSE Machač d3k3a prahová úroveň aproximace ε prahová úroveň aproximace ε a) šířka aproximačního okna w 1 2 3 4 2 69,0 60,1 106,4 226 4 66,3 62,7 102,6 288 6 82,5 100,5 283,5 328,2 8 81,9 106,1 283,5 527,9 Aproximace zbytkového signálu obdélníkovým signálem byla otestována také statistickým vyhodnocením hodnot střední kvadratické chyby pro všech 288 vět z prozodické databáze (viz příloha A). Výsledky této statistické analýzy jsou uvedeny ve čtyřech tabulkách pro jednotlivé soubory 72 vět. Statistika střední kvadratické chyby průběhu základního tónu po resyntéze pomocí lineární predikce pro soubor vět „Machač1“ je uvedena v tabulce 5.3, pro soubor vět „Machač2“ v tabulce 5.4, pro soubor vět „Záruba“ v tabulce 5.5 a pro soubor vět „Jana“ v tabulce 5.6. Pro každý soubor vět zde byl určen aritmetický průměr středních kvadratických chyb průběhů základního tónu po resyntéze pomocí lineární predikce všech 72 vět pro čtyři různé šířky aproximačního okna w = 1, 2, 3, 4 při čtyřech různých hodnotách prahové úrovně aproximace ε = 2, 4, 6 a 8. Dále jsou zde uvedeny pro každý aritmetický průměr středních kvadratických chyb směrodatná odchylka, střední chyba a minimální a maximální hodnota střední kvadratické chyby pro daný soubor vět a příslušné hodnoty aproximačních parametrů. Tab. 5.3 Statistika středních kvadratických chyb pro 72 vět souboru Machač1 šířka aproximačního okna w 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 prahová úroveň aproximace ε 2 2 2 2 4 4 4 4 6 6 6 6 8 8 8 8 aritmetický průměr směrodatná odchylka střední chyba minimum maximum 93,2 105,6 147,1 196,9 98,4 128,8 182,0 259,4 107,6 176,4 248,7 331,1 124,2 209,6 312,8 453,6 29,0 29,1 45,3 89,2 30,3 35,6 61,4 122,4 29,4 64,6 91,4 189,2 31,1 66,5 145,7 288,7 3,4 3,4 5,3 10,5 3,6 4,2 7,2 14,4 3,5 7,6 10,8 22,3 3,7 7,8 17,2 34,0 40,3 51,3 73,5 87,3 45,3 58,0 88,1 99,0 61,0 77,6 111,9 142,8 61,6 97,2 111,9 163,6 183,5 182,6 253,4 623,5 177,4 234,2 373,7 749,5 219,0 452,3 637,7 1249,3 197,9 382,7 982,2 2209,9 48 Obr. 5.4 Aproximace zbytkového signálu lineárního prediktoru pro větu o1d3a, w = 1, 2, 3; ε = 4. Obr. 5.5 Aproximace zbytkového signálu lineárního prediktoru pro větu o1d3a, w = 4, 5, 6; ε = 4. 49 Obr. 5.6 Aproximace zbytkového signálu lineárního prediktoru pro větu d3k3a, w = 1, 2, 3; ε = 4. Obr. 5.7 Aproximace zbytkového signálu lineárního prediktoru pro větu d3k3a, w = 4, 5, 6; ε = 4. 50 Obr. 5.8 Aproximace zbytkového signálu lineárního prediktoru pro větu d3k3a, w = 2; ε = 1, 3, 5. Obr. 5.9 Aproximace zbytkového signálu lineárního prediktoru pro větu d3k3a, w = 2; ε = 2, 4, 8. 51 Tab. 5.4 Statistika středních kvadratických chyb pro 72 vět souboru Machač2 šířka aproximačního okna w 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 prahová úroveň aproximace ε 2 2 2 2 4 4 4 4 6 6 6 6 8 8 8 8 aritmetický průměr směrodatná odchylka střední chyba minimum maximum 103,5 124,7 180,0 217,7 107,1 143,5 229,9 265,8 118,8 184,4 293,7 396,5 135,8 246,6 384,0 526,7 33,2 40,1 73,7 68,9 32,6 39,7 91,3 92,3 33,1 60,8 119,0 274,1 35,6 74,3 173,8 348,3 3,9 4,7 8,7 8,1 3,8 4,7 10,8 10,9 3,9 7,2 14,0 32,3 4,2 8,8 20,5 41,0 49,2 55,1 59,7 81,9 53,6 74,0 85,4 111,0 62,1 80,1 91,5 150,3 76,1 93,3 106,8 150,3 216,1 246,3 475,9 392,9 216,1 265,1 506,5 500,7 216,1 371,6 830,5 2043,3 239,4 426,5 1173,0 2744,6 Tab. 5.5 Statistika středních kvadratických chyb pro 72 vět souboru Záruba šířka aproximačního okna w 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 prahová úroveň aproximace ε 2 2 2 2 4 4 4 4 6 6 6 6 8 8 8 8 aritmetický průměr směrodatná odchylka střední chyba minimum maximum 77,8 96,5 144,4 176,2 83,9 119,1 195,5 239,9 95,5 151,9 282,8 337,1 113,6 208,5 351,6 463,1 43,8 52,5 114,7 117,0 42,0 54,8 122,8 126,3 42,3 58,7 182,1 158,0 46,8 86,0 177,4 233,4 5,2 6,2 13,5 13,8 4,9 6,5 14,5 14,9 5,0 6,9 21,5 18,6 5,5 10,1 20,9 27,5 29,2 28,2 46,0 37,0 32,0 54,1 69,1 61,2 48,8 66,5 98,1 61,2 51,3 90,8 130,3 154,8 300,1 291,1 750,2 869,7 262,2 345,7 750,2 869,7 266,4 345,7 1137,5 905,7 292,9 563,3 995,6 1140,2 Tab. 5.6 Statistika středních kvadratických chyb pro 72 vět souboru Jana šířka aproximačního okna w 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 prahová úroveň aproximace ε 2 2 2 2 4 4 4 4 6 6 6 6 8 8 8 8 aritmetický průměr směrodatná odchylka střední chyba minimum maximum 258,3 299,7 435,5 599,4 263,2 317,6 467,1 660,1 268,5 357,6 524,7 734,8 280,9 405,9 639,8 822,3 115,4 131,7 201,4 349,3 117,3 136,7 210,9 380,6 121,1 166,2 231,8 489,2 114,4 187,1 270,9 517,4 13,6 15,5 23,7 41,2 13,8 16,1 24,9 44,9 14,3 19,6 27,3 57,6 13,5 22,0 31,9 61,0 101,6 74,2 120,9 181,7 101,6 95,1 120,9 174,1 113,3 120,5 120,9 281,4 123,4 141,7 120,9 281,4 684,4 829,3 1111,1 1972,7 700,8 819,7 1111,1 2369,3 774,4 1065,4 1656,2 3594,9 718,9 1327,8 1651,3 3594,9 52 16 Soubor vět Machač1 16 14 12 12 10 10 Četnost Četnost Soubor vět Machač2 14 8 6 8 6 4 4 2 2 0 50 100 150 200 0 250 50 100 Střední kvadratická chyba 16 150 200 250 Střední kvadratická chyba 9 Soubor vět Záruba Soubor vět Jana 8 14 7 12 6 Četnost Četnost 10 8 6 5 4 3 4 2 2 1 0 0 50 100 150 200 250 300 200 350 400 600 800 Střední kvadratická chyba Střední kvadratická chyba Obr. 5.10 Histogramy středních kvadratických chyb pro jednotlivé soubory vět (w = 2; ε = 4). Z tabulek 5.3 až 5.6 je patrné, že pro tři soubory vět od mužských mluvčí se výsledky poměrně dobře shodují na rozdíl od souboru vět „Jana“, u kterého jsou hodnoty střední kvadratické chyby podstatně větší. To může být dáno vyšíí hodnotou základního tónu u mluvčí „Jana“ (250–450 Hz) a tím pádem nižší rozlišovací schopností signálu přenášet základní periodu. Při použitém vzorkovacím kmitočtu 8 kHz a základní periodě hlasivek T = 19,5 bude detekovaná hodnota základního tónu řeči buď F0 = 8000/19 421 Hz nebo F0 = 8000/20 = 400 Hz. Z toho vyplývá, že rozdíl jednoho vzorku v délce periody nám zde způsobí skokovou změnu detekovaného základního tónu o více jak 5%. Pro přesnější analýzu ženských hlasů je nutné použít vyšší vzorkovací kmitočty – alespoň 16 kHz, lépe však 32 kHz. Statistické vyhodnocení středních kvadratických chyb pro jednotlivé soubory vět při hodnotách aproximačních parametrů w = 2 a ε = 4 můžeme vidět na obr. 5.10. Nejrovnoměrnější rozdělení chyb mají oba soubory „Machač“, soubor vět „Záruba“ má však maximum níže, než oba soubory Machač, ale dvě věty zde spadají do oblasti do 300 Hz a jedna věta dokonce do oblasti do 350 Hz. Z obrázku 5.10 je zřejmé, že hodnoty středních kvadratických chyb u souboru vět „Jana“ jsou podstatně vyšší než u ostatních souborů vět. Z výsledků experimentů s aproximací průběhu zbytkového signálu pulsním signálem vyplývá, že dobrých výsledků by mohlo být dosaženo pouhým impulsním buzením při nalezení vhodnějšího aproximačního algoritmu, než představuje vztah 5.1. Aproximaci průběhu zbytkového signálu lineárního prediktoru základního tónu řeči jednotlivými impulsy se budu zabývat v následujícím odstavci. 5.1.2 Aproximace zbytkového signálu impulsovým signálem Při aproximaci zbytkového signálu lineárního prediktoru jednotlivými impulsy musíme řešit problém umístění a velikosti těchto impulsů. Pro tyto účely byl vytvořen program errimp provádějící aproximaci zbytkového signálu impulsovým signálem. Aproximaci zbytkového signálu lineárního prediktoru pro větu „o1d3a“ ze souboru „Machač1“ pro prahovou hodnotu aproximace ε = 2 můžeme vidět na obr. 5.11. 53 Obr. 5.11 Aproximace zbytkového signálu lineárního prediktoru pro větu o1d3a, ε = 2. Pro všechny čtyři soubory vět byla následně provedena statistická analýza středních kvadratických chyb srúznými prahovými hodnotu aproximace ε = 0, 2, 4, 6 a 8. Hodnota ε = 0 slouží především pro porovnání, neboť se při této hodnotě aproximovaný zbytkový signál lineárního prediktoru shoduje s původním zbytkovým signálem. Tab. 5.7 Statistika středních kvadratických chyb pro různé prahové úrovně aproximace soubor vět Machač1 Machač2 Záruba Jana Machač1 Machač2 Záruba Jana Machač1 Machač2 Záruba Jana Machač1 Machač2 Záruba Jana Machač1 Machač2 Záruba Jana prahová úroveň aproximace ε 0 0 0 0 2 2 2 2 4 4 4 4 6 6 6 6 8 8 8 8 aritmetický průměr směrodatná odchylka střední chyba minimum maximum 91,9 102,8 76,7 257,4 270,0 355,8 227,4 947,8 235,3 316,0 221,7 861,9 242,6 263,1 262,4 732,2 282,9 300,7 358,9 690,5 28,8 33,2 43,0 115,2 323,6 356,0 183,7 995,0 225,9 351,1 201,5 899,5 205,9 153,5 185,4 688,9 198,3 158,1 315,3 556,8 3,4 3,9 5,1 13,6 38,1 42,0 21,7 117,3 26,6 41,4 23,7 106,0 24,3 18,1 21,8 81,2 23,4 18,6 37,2 65,6 41,6 47,7 26,1 100,5 53,6 82,5 47,8 135,9 61,2 72,4 38,4 131,3 75,6 72,7 68,7 78,9 85,4 105,1 62,4 78,9 177,5 221,4 290,3 684,4 1971,6 1946,5 1339,5 6084,3 1691,6 2356,3 1202,9 5304,2 1376,6 843,9 1161,9 4492,2 1166,3 774,0 2003,3 3182,5 54 Z tabulky 5.7 je zřejmé, že použitý aproximační algoritmus pro aproximaci zbytkového signálu lineárního prediktoru jednotlivými impulsy nepracuje tak dobře jako algoritmus aproximace zbytkového signálu obdélníkovým signálem popsaný v odstavci 5.1.1. 5.1.3 Možnosti aproximace zbytkového signálu V předchozích dvou odstavcích byly popsány jednoprůchodové algoritmy pro aproximaci zbytkového signálu lineárního prediktoru. Z uvedených výsledků vyplývá, že menších hodnot střední kvadratické chyby bylo dosaženo aproximací podle algoritmu popsaného v odstavci 5.1.1 vzorcem 5.1. Lepších výsledků by bylo zřejmě dosaženo použitím víceprůchodových algoritmů založených na postupné minimalizaci hodnot střední kvadratické chyby a to především u algoritmu popsaném v odstavci 5.1.2. 5.2 Závislost zbytkového signálu lineárního prediktoru na stavbě věty Míra závislosti zbytkového signálu lineární predikce na stavbě věty byla určována pomocí aproximace zbytkového signálu lineární predikce s využitím informace o hranicích suprasegmentálních celků. Polohy hranic těchto celků byly do přirozeného signálu doplněny pomocí systému automatické segmentace řeči, popsané ve článku 6.2, ve spojení se systémem Epos. Pro účely vlastní aproximace zbytkového signálu lineárního prediktoru byl upraven algoritmus popsaný v odstavci 5.1.1. Jelikož funkce intonačních úseků je především deklinační, a je nutno ji řešit doplněním lineárně predikčního intonačního modelu o funkci deklinace, zajímají nás ze suprasegmentálií především slabiky a přízvukové takty. Analýzu středních kvadratických chyb pro všechny soubory vět s použitím aproximace zbytkového signálu lineární predikce po slabikách i přízvukových taktech vidíme v tabulce 5.8. Výpis použitého aproximačního algoritmu errinterp3 je uveden v příloze. Je zřejmé, že jednoprůchodový aproximační algoritmus provádějící aproximaci zbytkového signálu lineární predikce na úrovni suprasegmentálních celků není nejvodnější, jelikož výsledné hodnoty středních kvadratických chyb jsou příliš vysoké. Pro použitelnou aproximaci zbytkového signálu lineární predikce na úrovni suprasegmentálních celků je zřejmě nutné použít víceprůchodový optimalizační algoritmus minimalizující velikost střední kvadratické chyby. Tab. 5.8 Statistika středních kvadratických chyb pro slabiky a přízvukové takty soubor vět Machač1 Machač2 Záruba Jana Machač1 Machač2 Záruba Jana 5.3 aproximační jednotky slabiky slabiky slabiky slabiky přízvukové takty přízvukové takty přízvukové takty přízvukové takty aritmetický průměr 179,8 318,0 153,7 502,2 540,9 801,7 513,8 212,4 směrodatná odchylka 122,7 235,6 152,0 580,6 340,6 431,7 439,5 178,0 střední chyba 14,5 27,8 17,9 68,4 40,1 50,9 51,8 21,0 minimum maximum 51,2 71,5 38,3 118,1 137,8 139,2 122,1 32,1 806,3 1068,1 906,5 3595 1873,7 1892 3404,2 1128,9 Využití zbytkového signálu lineární predikce pro tvorbu prozodických pravidel Pro využití zbytkového signálu lineární predikce pro návrh prozodických pravidel je nutné buď implementovat lexikální analýzu psaného textu, což je problém pro češtinu dosud nevyřešený, nebo využít zbytkový signál lineární predikce pro natrénování umělé neuronové sítě. Na vstupy neuronové sítě by byly přivedeny informace o haranicích suprasegmentálíí a jejich vzájemné četnosti a neuronová síť by byla trénována na zbytkový signál lineárního prediktoru. Po skončení trénovací fáze by neuronová síť generovala přímo budící signál lineárně predikčního syntetizujícího filtru, na jehož výstupu by se objevil průběh základního tónu syntetické promluvy. Na modelování buzení lineárně predikčního intonačního modelu umělou neuronovou sítí se v současné době pracuje, ale jeho podrobný popis přesahuje rámec této práce. 55 56 Část III Experimentální část 57 58 6 Experimentální část Obsahem této kapitoly je popis prováděných experimentů s cílem ověřit modelování průběhu základního tónu v praxi. 6.1 Databáze řečového materiálu pro modelování prozodie Pro ověřování navrhovaných algoritmů byla navržena a posléze namluvena řečová databáze o rozsahu cca 80 vět od několika mluvčích. Věty byly v rámci databáze rozděleny podle několika hledisek: podle typu věty na větu oznamovací, rozkazovací a otázku zjišťovací a doplňovací. Podle stavby věty na větu jednoduchou, souvětí skládající se ze dvou vět a na souvětí skládající se ze tří vět. Dále pak z hlediska délky na krátkou (stručnou) a dlouhou (rozvitou) větu. Tím bylo definováno 12 základních kategorií vět, přičemž v každé kategorii byly vybrány tři různé realizace, čímž jsme získali databázi 72 vět (souvětí), která byla ještě doplněna o krátký text sestávající celkem z 10 vět (souvětí). Seznam vět obsažených v databázi včetně jejich znění je uveden v příloze. Popisovaná databáze byla namluvena od jednoho profesionálního mluvčího pro mužský hlas (Robert Záruba – ČT), od jednoho neprofesionálního mluvčího (Pavel Machač) a od jedné neprofesionální mluvčí pro ženský hlas (Jana Mejvaldová). Celkem máme tedy 72 vět namluvených od dvou mluvčích pro mužský a od jedné mluvčí pro ženský hlas, přičemž mluvčí Machač je pokaždé ve dvou realizacích. Prozodický korpus pro účely této práce tedy obsahuje 288 vět. Všechny nahrávky byly pořízeny ve studiu ve Fonetickém ústavu FF UK na digitální magnetofon DAT SONY PCM-R300 vzorkovacím kmitočtem 48kHz. Poté byly nahrávky převedeny do počítače a převzorkovány na 8 kHz programem Sound Forge 4.5, který je k dispozici rovněž ve Fonetickém ústavu FF UK. 6.2 Automatická segmentace řeči Pro experimenty s modelováním prozodie bylo třeba namluvenou databázi opatřit informací o hranicích suprasegmentálních jednotek (hlásky, slabiky, přízvukové takty a intonační úseky). Jelikož ruční označování těchto jednotek je velice pracné, byla vyvinuta metoda automatické segmentace řeči založená na porovnávání přirozeného řečového signálu, ve kterém chceme označit suprasegmentální úseky, s totožným syntetickým signálem, ve kterém tyto hranice známe. K porovnání se používá algoritmus dynamického borcení časové osy (DTW – Dynamic Time Warping), jehož vstup tvoří časové i kmitočtové analýzy obou porovnávaných signálů. Myšlenka automatické segmentace s použitím syntézy řeči není nová. Automatická segmentace francouzštiny s využitím TTS je velmi dobře popsána v [MAL97a] a v [MAL97b]. Na uvedené autory navazují práce [STR99] a [TUČ99], ze kterých jsem při vývoji systému automatické segmentace řeči vycházel. 6.2.1 Použitý syntezátor řeči Pro účely automatické segmentace přirozené promluvy musíme nejprve vytvořit pomocí TTS systému totožnou syntetickou promluvu s vyznačenými suprasegmentálními hranicemi. Pro tyto účely byl upraven TTS systém Epos využívající mimo jiné LPC syntezátor řeči vyvinutý v ÚRE [HAN98a,b], [HAN01]. Pro účely automatické segmentace byl vybrán mužský hlas „Kubec“ používající 441 českých a slovenských segmentů řeči (difony, iniciální a finální části hlásek a těla samohlásek) při vzorkovacím kmitočtu 8 kHz a osmém řádu lineární predikce [PTÁ92], [VÍC95a]. Pro automatickou segmentaci vyšších než segmentálních celků bylo zapotřebí do LPC inventáře doplnit informaci o hranicích hlásek v rámci segmentů. Upravený systém Epos včetně modifikovaného LPC inventáře spolu s přidanou informací o hranicích hlásek umožňuje vytvářet syntetické promluvy z psaného textu spolu s informací o poloze řečových segmentů, hlásek, slabik, přízvukových taktů (celky na úrovni jednotlivých slov), intonačních úseků (celky na úrovni jednoduchých vět) a celých větných celků v tomto syntetickém signálu [HOR99d,e]. Blokové schéma systému Epos, včetně přidaných částí pro účely automatické segmentace, je znázorněno na obr. 6.1. 6.2.2 Vlastní segmentace Jelikož vlastní segmentační algoritmus pracuje s jednotlivými větami (souvětími), musí být přirozená řeč, kterou chceme automaticky segmentovat, nejprve rozdělena na jednotlivé věty, respektive v ní musí být jednotlivé věty označeny. Vstupem do automatického segmentátoru jsou tedy jednotlivé přirozené věty spolu se svým textovým zápisem. Z textového zápisu jsou pak pomocí syntezátoru řeči (Epos + LPC syntéza) generovány ekvivalentní syntetické věty obsahující navíc informaci o hranicích řečových segmentů a vyšších suprasegmentálních celků. 59 Obr. 6.1 TTS systém upravený pro účely automatické segmentace (tučné bloky byly přidány). První krok automatické segmentace spočívá v analýze přirozeného i referenčního syntetického řečového signálu v časové i ve kmitočtové oblasti. Analýza se provádí v obou signálech po jednotlivých rámcích v každé označené větě. V každém rámci je vypočteno šest základních skupin parametrů. První skupinu parametrů tvoří kepstrální koeficienty ci získané přepočtem z LPC koeficientů dle vztahů 6.1 a 6.2, reprezentující okamžitou obálku spektra [MAR76]. c0 = ln( α ) , (6.1) n −1 1 ∑ (n − k )c n − k ak for n > 0, n k =1 kde α . . . koeficient zisku lineárního prediktoru, a0 = 1 a ak = 0 pro k > M, M . . . řád lineárně predikční analýzy. cn = −an − (6.2) Delta kepstrální koeficienty Δci určené pomocí vztahů 6.3 a 6.4 tvoří druhou skupinu parametrů. (6.3) (6.4) Δc0 (i ) = c0 (i ) , Δcn (i ) = cn (i ) − cn (i − 1) , kde cj(i) . . . j-tý kepstrální koeficient i-tého rámce. Třetí a čtvrtou skupinu parametrů tvoří krátkodobá energie signálu v jednotlivých rámcích a její první diference určené dle vztahů 6.5 a 6.6 [RAB78]. E (i ) = ∞ ∑ ( x(m) w(i ⋅ N ⋅ (1 − μ ) − m) ) m 2 (6.5) , =−∞ (6.6) ΔE (i ) = E (i ) − E (i − 1) , kde x i N ... ... ... μ ... M ... řečový signál, pořadí rámce, délka rámce, koeficient překrytí rámců, řád lineárně predikční analýzy, ⎧1 : 0 ≤ a < N , w(a) = ⎨ ⎩0 : jinde. Konečně pátou a šestou skupinu parametrů tvoří počet průchodů nulou v jednotlivých rámcích spolu se svou první diferencí dle vztahů 6.7 a 6.8 [OPP75]. 60 Z (i ) = ∞ ∑ f ( x(m) x(m − 1) )w ( i ⋅ N ⋅ (1 − μ ) − m ) , (6.7) m =−∞ (6.8) ΔZ (i) = Z (i ) − Z (i − 1) , kde x i N μ ... ... ... ... řečový signál, pořadí rámce, délka rámce, koeficient překrytí rámců, ⎧1: 0 ≤ a < N , w(a) = ⎨ ⎩0 : jinde , ⎧1 : a < k z (k z < 0) , f (a) = ⎨ ⎩0 : jinde. Průběhy všech výše uvedených parametrů jsou před dalším zpracováním normalizovány do intervalu 0,1 . Blokový diagram vlastního automatického segmentátoru je znázorněn na obr. 6.2. Obr. 6.2 Blokové schéma automatického segmentátoru řeči. Ve druhém kroku automatické segmmentace je prováděna vlastní segmentace pomocí klasického algoritmu borcení časové osy (DTW) s použitím matice akumulovaných vzdáleností D (viz 6.9). D(2, J ) D( I , J ) ⎞ L ⎛ D(1, J ) ⎜ ⎟ D( I , J − 1) ⎟ L ⎜ D(1, J − 1) D(2,1) ⎟ D= ⎜ D(i, j ) M M M ⎜ ⎟ D(2, 2) D( I , 2) ⎟ L ⎜ D(1, 2) ⎜ D(1,1) D(2,1) D( I ,1) ⎟⎠ L ⎝ kde I J (6.9) . . . počet rámců signálu 1 (např. přirozený řečový signál), . . . počet rámců signálu 2 (např. referenční syntetický řečový signál). Tento DTW algoritmus používá váhovací koeficienty symetrické formu bortící funkce [SAK78]. Váhovací koeficienty pro symetrickou formu bortící funkce jsou znázorněny na obr. 6.3. 61 Obr. 6.3 Váhovací koeficienty w pro symetrickou formu bortící funkce. Na počátku DTW algoritmu jsou krajní prvky matice vzdáleností inicializovány dle vztahů 6.10 – 6.12. Ostatní prvky matice vzdáleností jsou vypočítány dle vztahu 6.13 [SAK78]. D(1,1) = d ( x(1), y (1) ) (6.10) D(i,1) = D(i − 1,1) + d ( x(i ), y (1) ) i = 1K I (6.11) D(1, j ) = D(1, j − 1) + d ( x(1), y ( j ) ) j = 1K J (6.12) ⎛ D(i − 1, j ) + d ( x(i ), y ( j ) ) ⎞ ⎜ ⎟ (6.13) D(i, j ) = MIN⎜ D(i − 1, j − 1) + d ( x(i ), y ( j ) ) ⎟ ⎜⎜ ⎟⎟ ⎝ D(i, j − 1) + d ( x(i ), y ( j ) ) ⎠ i = 1K I ; j = 1K J kde d(x(i),y(j)) . . . vzdálenost mezi i-tým rámcem prvního signálu a j-tým rámcem druhého signálu (viz vztah 6.14) MIN(*) . . . funkce počítající minimální vzdálenost. Výsledná vzdálenost d(x,y) je váhovaným součtem kepstrální vzdálenosti, energetické vzdálenosti a vzdálenosti počtu průchodů nulou. Tato vzdálenost se používá k porovnání rámce přirozeného signálu x s rámcem referenčního syntetického signálu y (vztah 6.14). ncep d ( x, y ) = α 0 ∑ ( ci ( x) − ci ( y ) ) + 2 i =0 ncep + β ∑ ( Δci ( x) − Δci ( y ) ) + γ ( E ( x) − E ( y ) ) + 2 2 (6.14) i =0 +δ ( ΔE ( x) − ΔE ( y ) ) + ϕ ( Z ( x) − Z ( y ) ) + 2 +η ( ΔZ ( x) − ΔZ ( y ) ) 2 2 Empiricky byly zjištěny nejlepší hodnoty váhovacích koeficientů pro 20 ms rámce s překryvem n = 0.7 (14 ms), vzorkovacím kmitočtem 8 kHz a řádu lineární predikce M = 8 takto: α = 1.5; β = 1.25; γ = 1.5; δ = 1; ϕ = 1; η = 1.5 prahová hodnota počtu průchodů nulou kz = -20000. Příklad akumulované distanční matice je na obr. 6.4. 62 Obr. 6.4 Ukázka DTW algoritmu na matici akumulovaných vzdáleností. 6.2.3 Testování automatické segmentace Automatický segmentátor, popsaný v předchozím odstavci, byl testován na větách z řečového korpusu (viz článek 6.1 a příloha A). Byl použit jeden soubor vět mužského hlasu „Machač1“ a jeden soubor vět ženského hlasu „Jana“. Každý mluvčí namluvil 72 vět obsahujících celkem 4066 hlásek. Výsledky automatické segmentace byly potom porovnávány s ruční segmentací stejného materiálu. Chyby přesnosti segmentace byly stanovovány pro začátek každé hlásky, které byly pro tyto účely rozděleny do deseti kategorií uvedených v tabulce 6.1. Tab. 6.1 Rozdělení českých hlásek pro účely testování automatické segmentace označ. vow exv exu frv fru afv afu liq app nas kategorie krátké a dlouhé vokály [a,,,,,a:,e:,i:,o:,u:] znělé explozívy [b,d,,] neznělé explozívy [p,t,c,k] znělé frikatívy [v,z,,,,r] neznělé frikatívy [f,s,,x,r] znělé afrikáty [dz,d] neznělé afrikáty [ts,t] likvidy [r,l] aproximanta [j] nazály [m,,n,,] Chyby automatického určení začátku hlásek jako funkci jejich absolutní hodnoty v milisekundách můžeme vidět v tabulce 6.2. Chyby automatického určení trvání hlásek jako funkci jejich absolutní hodnoty v milisekundách vidíme v tabulce 6.3. Tabulka 6.4 nám pak ukazuje absolutní i procentuální zastoupení hlásek v jednotlivých kategoriích. Chyby automatického určení začátku hlásek a automatického určení trvání hlásek pro ženský hlas jsou uvedeny v tabulkách 6.5 a 6.6. Je zajímavé, že ve většině případů jsou výsledky automatické segmentace ženského hlasu lepší než výsledky automatické segmentace hlasu mužského, a to i přesto, že pro 63 generování srovnávacích promluv byla použita syntéza mužského hlasu. V tabulce 6.7 jsou uvedeny průměrné délky hlásek v jednotlivých kategoriích pro mužský a ženský hlas při automatické i manuální segmentaci, které jsou rovněž vyobrazeny na obr. 6.5. Tab. 6.2 Procentuální výskyt chyb segmentace začátků hlásek pro mužský hlas t [ms] <5 < 10 < 20 < 30 < 40 nall [%] 19.3 37.6 64.5 79.4 86.3 95.2 ≥ 50 4.8 < 50 nvow [%] 19.1 35.5 61.2 76.0 83.0 95.0 5.0 nexv [%] 21.5 45.0 75.7 87.4 91.2 95.9 4.1 nexu [%] 21.2 42.2 73.5 86.7 93.1 97.9 2.1 nfrv [%] 20.9 41.4 68.9 83.6 91.4 95.9 4.1 nfru [%] 11.5 26.2 54.4 74.1 87.2 96.7 3.3 nafv [%] 0.0 10.0 40.0 70.0 70.0 100.0 0.0 nafu [%] 26.1 51.1 75.0 88.0 92.4 100.0 0.0 nliq [%] 18.5 37.6 66.5 85.3 91.2 98.1 1.9 napp [%] 13.5 27.0 52.7 76.4 83.8 92.6 7.4 nnas [%] 22.9 42.5 63.3 73.5 79.3 86.2 13.8 Tab. 6.3 Procentuální výskyt chyb segmentace trvání hlásek pro mužský hlas t [ms] <5 < 10 < 20 < 30 nall [%] 19.4 37.5 64.8 80.0 87.2 90.9 ≥ 50 9.1 nvow [%] 19.1 35.7 61.5 76.4 83.7 87.6 12.4 nexv [%] 21.5 45.4 75.7 87.4 91.2 94.0 6.0 nexu [%] 21.2 42.2 73.5 86.9 93.2 95.9 4.1 < 40 < 50 nfrv [%] 21.3 41.8 69.3 84.0 91.8 94.7 5.3 nfru [%] 11.5 26.2 54.8 74.4 87.5 93.8 6.2 nafv [%] 0.0 10.0 40.0 70.0 70.0 80.0 20.0 nafu [%] 26.1 51.1 75.0 88.0 92.4 97.8 2.2 nliq [%] 18.5 37.6 66.8 85.9 92.8 95.0 5.0 napp [%] 14.2 27.7 53.4 77.7 85.8 89.2 10.8 nnas [%] 23.2 43.4 64.9 76.5 83.4 87.6 12.4 Tab. 6.4 Počet výskytů hlásek v jednotlivých kategoriích kategorie hlásek počet výskytů poměrný výskyt [%] celkem 4066 100.0 krátké a dlouhé vokály 1736 42.7 317 7.8 neznělé explozívy 533 13.1 znělé frikatívy 244 6.0 neznělé frikatívy 305 7.5 10 0.2 znělé explozívy znělé afrikáty neznělé afrikáty 92 2.3 likvidy 319 7.8 aproximanta 148 3.6 nazály 362 8.9 64 Tab. 6.5 Procentuální výskyt chyb segmentace začátků hlásek pro ženský hlas t [ms] <5 < 10 < 20 nall [%] 22.4 40.5 66.0 80.3 87.1 95.5 ≥ 50 4.5 nvow [%] 20.9 38.6 63.2 77.4 84.1 94.6 5.4 nexv [%] 31.5 55.5 81.1 89.6 94.6 97.2 2.8 nexu [%] 24.0 42.2 70.4 85.4 91.4 97.9 2.1 nfrv [%] 29.9 53.7 75.8 86.9 93.0 97.1 2.9 nfru [%] 10.8 21.3 52.1 74.4 87.9 96.4 3.6 nafv [%] 20.0 50.0 80.0 100.0 100.0 100.0 0.0 nafu [%] 32.6 58.7 82.6 90.2 94.6 100.0 0.0 nliq [%] 26.3 48.6 75.2 90.3 95.3 98.7 1.3 napp [%] 23.6 37.8 58.1 76.4 82.4 93.2 6.8 nnas [%] 17.7 30.4 55.2 69.1 76.2 89.2 10.8 < 30 < 40 < 50 Tab. 6.6 Procentuální výskyt chyb segmentace trvání hlásek pro ženský hlas t [ms] <5 < 10 < 20 nall [%] 22.5 40.7 66.4 81.0 88.1 91.9 ≥ 50 8.1 < 30 < 40 < 50 nvow [%] 21.0 38.9 63.6 77.9 85.0 89.5 10.5 nexv [%] 31.9 55.8 81.4 90.2 95.3 97.2 2.8 nexu [%] 24.0 42.2 70.4 85.7 92.1 95.5 4.5 nfrv [%] 29.9 53.7 75.8 87.3 93.4 95.9 4.1 nfru [%] 11.1 21.6 52.5 74.8 88.5 93.1 6.9 nafv [%] 20.0 50.0 80.0 100.0 100.0 100.0 0.0 nafu [%] 32.6 58.7 82.6 90.2 94.6 96.7 3.3 nliq [%] 26.3 48.9 75.5 90.6 96.2 97.8 2.2 napp [%] 23.6 38.5 59.5 79.1 85.1 89.9 10.1 nnas [%] 17.7 30.4 56.1 71.0 79.3 84.3 15.7 Tab. 6.7 Průměrné délky hlásek v jednotlivých kategoriích pro mužský a ženský hlas při automatické a manuální segmentaci. kategorie hlásek mužský hlas manu auto ženský hlas manu auto celkem 84.7 88.0 77.0 79.2 krátké a dlouhé vokály 83.3 82.9 81.6 81.3 znělé explozívy 77.6 72.9 69.6 65.7 neznělé explozívy 88.4 87.5 78.4 76.9 znělé frikatívy 78.2 95.8 66.5 72.7 neznělé frikatívy 113.7 129.8 90.4 105.2 znělé afrikáty 120.0 141.7 99.9 108.9 neznělé afrikáty 126.0 127.3 113.5 115.1 likvidy 59.3 63.2 48.4 50.3 aproximanta 74.0 77.2 61.8 65.6 nazály 87.5 101.1 76.8 88.2 Jak je patrné z výše uvedených tabulek, jsou chyby segmentace z běžných skupin nejmenší pro krátké a dlouhé samohlásky. Dobré výsledky mají také neznělé explozívy, pravděpodobně proto, že spektrální obraz 65 těchto hlásek je poměrně odlišný od ostatních hlásek, s jasným uzavřením na začátku a s explozí, jež je většinou separována od následující hlásky. Chyby u frikatív jsou způsobeny nejspíše tím, že iniciální i finální části frikatív přecházejí na rozdíl od explozív v sousední hlásku plynule a to zejména jedná-li se o samohlásku. Výsledky znělých afrikát nemají z důvodu jejich malé četnosti velkou vypovídací hodnotu. Obr. 6.5 Průměrné délky hlásek v jednotlivých kategoriích pro mužský a ženský hlas při automatické a manuální segmentaci (viz tab. 6.6). Algoritmus automatické segmentace se ukázal být velmi robustní na výskyt chyb ve fonetické transkripci. V místech, kde se syntetická a přirozená promluva neshodují, algoritmus přeskočí nestejné partie a pokračuje znovu od místa shody obou promluv. Využití vyvinuté automatické segmentace spočívá především ve vytváření prozodicky označkovaných databází, které jsou potřeba pro další výzkum v oblasti modelování prozodie [HOR01a]. Na obr. 6.6 je uveden příklad automatické segmentace řeči. V horní polovině obrázku je znázorněna syntetická řeč s vyznačenými hranicemi hlásek (jedná se o větu „Výsledek nebude přesný, protože nemáme jiné údaje“). V dolní polovině obrázku pak vidíme přirozenou promluvu, ve které byly vyznačeny hranice hlásek pomocí algoritmu automatické segmentace. Obr. 6.6 Ukázka automatické segmentace. Nahoře je syntetická řeč s vyznačenými hranicemi hlásek, dole pak přirozená promluva s automaticky vyznačenými hranicemi hlásek. Algoritmus automatické segmentace byl rovněž ověřen implementací systému umožňujícího transplantaci průběhu základního tónu řeči z jedné promluvy na druhou (promluvy se liší pouze prozodicky), a to buď z přirozené promluvy na syntetickou, anebo z jedné přirozené promluvy na druhou přirozenou promluvu [HOR00a]. Bloková struktura tohoto systému je zobrazena na obr. 6.7. 66 Obr. 6.7 Blokové schéma nástroje na transplantaci průběhu základního tónu z jedné promluvy na druhou. Výsledky testování algoritmu automatické segmentace ukazují, že jeho přesnost je dostatečná pro vytváření prozodicky označkovaných databází a pro použití v systému umožňujícího transplantaci intonační kontury. Pro automatické vytváření nových řečových inventářů pomocí popisovaného automatického segmentátoru je nutná ještě manuální korekce automaticky provedené segmentace. Pro předzpracování korpusu určeného k vytváření řečových inventářů je to však nástroj velmi užitečný [HOR00a,b]. Současné automatické segmentátory jsou většinou založeny na použití skrytých Markovských řetězců (Hidden Markov Models – HMM), jejichž použití na automatickou segmentaci češtiny je popsáno např. v [NOU00]. Při použití HMM pro automatickou segmentaci řeči je nutno nejprve systém „natrénovat“ na známá data. V současnosti máme k dispozici referenční inventář (tj. inventář s informací o hranicích suprasegmentálních celků) pouze pro vzorkovací kmitočet 8 kHz. Mnohem širší využití automatického segmentátoru umožní teprve přidání informace o hranicích suprasegmentálních celků do nových trifonových inventářů se vzorkovacím kmitočtem 16 a 32 kHz. 6.3 Porovnání vlastností LPC intonačního modelu s Fujisakiho modelem Jak bylo popsáno v odstavci 2.6.7, generuje Fujisakiho intonační model průběh základního tónu řeči v oblasti logaritmu kmitočtu. Průběh základního tónu řeči je zde získán jako lineární superpozice globální (úsekové) a lokální (přízvukové) složky. Tyto složky tvoří výstupní signály dvou lineárních systémů druhého řádu, jejichž vstupy tvoří dvě různé funkce: úsekové impulsy (phrase commands) a přízvukové pulsy (accent commands). LPC intonační model oproti tomu generuje přímo průběh základního tónu řeči na základě jediného buzení. Z toho vyplývá, že Fujisakiho intonační model může poměrně přesně popisovat intonaci větších větných celků, neboť úseková deklinace je zde dobře ošetřena globální (úsekovou) složkou. Oproti tomu je LPC intonační model spíše ekvivalentem lokální (přízvukové) složky Fujisakiho intonačního modelu. Pro použití LPC intonačního modelu pro popis delších vět a souvětí by bylo vhodné doplnit LPC intonační model o složku úsekové deklinace. Z výpočetního hlediska je určení parametrů LPC intonačního modelu mnohem jednodušší než určení parametrů Fujisakiho intonačního modelu, neboť intonační kontura na výstupu Fujisakiho intonačního modelu je dána superpozicí dvou složek, které není jednoduché zpětně oddělit. V praxi se pro určování parametrů Fujisakiho intonačního modelu používají nejčastěji několikaprůchodové optimalizační algoritmy založené na minimalizaci střední kvadratické chyby. Jedna z těchto metod, vycházející z [MIX00], byla implementována také do systému SpeechStudio. Určení parametrů lineárně predikčního intonačního modelu je oproti tomu poměrně jednoduché, neboť není nutné od sebe oddělovat dvě složky. Toto bude platit i v případě rozšíření lineárně predikčního intonačního modelu o jednoduše konstruovanou (nejlépe lineární) úsekovou složku. Oba modely umožňují zjednodušit popis větné intonační kontury, výhoda lineárně predikčního modelu spočívá v jednodušším určení parametrů modelu (analýze), nevýhodou lineárně predikčního modelu je naopak absence popisu intonace větších celků (věty, souvětí). 67 6.4 Implementace LPC a Fujisakiho intonačního modelu do systému SpeechStudio SpeechStudio je programový nástroj určený pro zpracování řečových signálů na počítači, který se postupně vyvíjí od r. 1996. V současné době umožňuje náhled na řečový signál, umísťování a editaci značek, analýzu řeči v časové i kmitočtové oblasti, změnu prozodie a v neposlední řadě také vytváření řečových databází pro účely syntézy řeči. Základní grafické uživatelské rozhraní systému SpeechStudio můžeme vidět na obr. 6.8. Obr. 6.8 Grafické uživatelské rozhraní systému SpeechStudio. V rámci této práce byl systém SpeechStudio rozšířen o možnost pracovat s Fujisakiho intonačním modelem včetně automatického určení parametrů Fujisakiho modelu pro danou promluvu a také o možnost analýzy a syntézy průběhu základního tónu řeči pomocí lineární predikce včetně aproximace zbytkového signálu intonačního lineárního prediktoru. Systém SpeechStudio je schopen provádět analýzu a následnou resyntézu řečového signálu pomocí lineárně predikčního modelování řečového signálu, pomocí kepstrálního modelování řečového signálu (syntéza řeči ve kmitočtové oblasti) nebo pomocí metody TD-PSOLA (syntéza řeči v časové oblasti). Výsledné promluvy můžeme tedy ozvučovat pomocí tří různých způsobů řečové syntézy, z nichž poslechově nejkvalitnější je v současné době metoda PSOLA [MOU00]. Pro resyntézu řečového signálu metodou TD-PSOLA je však nejprve nutné označit v řečovém signálu hlasivkové pulsy pomocí algoritmu popsaného v odstavci 4.2.2. Systém SpeechStudio ukládá značky do standardního formátu RIFF s příponou „.wav“. Značky představují buď vzorky signálu (markers) nebo oblasti signálu (regions). Každý záznam o značce obsahuje typ značky, název značky, počáteční vzorek značky, délku značky a barvu značky. SpeechStudio v současné době rozlišuje 11 základních druhů standardních značek uspořádaných v tabulce 6.8. Do systému je však možné přidávat libovolné nové druhy značek. Vlastní značky mohou být importovány i exportovány také v textovém tvaru za účelem spolupráce s různými druhy software. Pro účely buzení Fujisakiho modelu byl systém SpeechStudio rozšířen o typ značek „f_phrase“ pro úsekové budící impulsy a „f_accent“ pro přízvukové budící pulsy. Pro účely buzení lineárně predikčního intonačního modelu byl systém SpeechStudio rozšířen o typ značek „lp_exc“. Amplituda budících impulsů je vložena v podobě řetězce do názvu značky. Aby se předešlo problémům s desetinnou čákou či tečkou, je hodnota uložená v názvu značky vynásobena deseti. Grafické rozhraní systému SpeechStudio s implementovaným Fujisakiho 68 Obr. 6.9 Implementace Fujisakiho intonačního modelu v systému SpeechStudio. intonačním modelem můžeme vidět na obr. 6.9. V horní části obrázku vidíme vlastní řečový signál spolu s vloženými úsekovými budící impulsy (červěná barva) a přízvukovými budící pulsy (modrá barva). Textový popis značek tvoří tisícinásobek hodnot amplitudy příslušných pulsů. Toto řešení bylo zvoleno z důvodu nejednotnosti užívání desetinné tečky/čárky v použitém software. V dolní části obrázku vidíme průběh základního tónu přirozené řeči a průběh základního tónu řeči na výstupu Fujisakiho modelu spolu se vstupními parametry tohoto modelu. Průběh základního tónu řeči, určený pomocí poloh hlasivkových pulsů, je znázorněn žlutou křivkou, která je ve znělých oblastech zvýrazněna černými křížky. V neznělých oblastech je hodnota základního tónu získána pomocí lineární interpolace. Tab. 6.8 Přednastavené druhy značek v systému SpeechStudio název druh barva účel značky unit sound oblast oblast červená zelená řečové jednotky pro vytváření inventáře hlásky syll oblast světle modrá slabiky word oblast tmavě modrá přízvukové takty colon oblast růžová intonační úseky sent oblast světle zelená věty a souvětí ppuls vzorek žlutá hlasivkové pulsy voiced oblast černá znělé oblasti f_phrase vzorek světle červená úsekové pulsy pro Fujisakiho intonační model f_accent oblast modrá přízvukové impulsy pro Fujisakiho intonační model lp_exc oblast oranžová budící pulsy pro lineárně predikční intonační model Implementace lineárně predikčního intonačního modelu do systému SpeechStudio je znázorněna na obr. 6.10. V horní části opět vidíme vlastní řečový signál spolu s vloženými značkami budících pulsů lineárně predikčního modelu (oranžová barva), jejichž textový popis tvoří desetinásobek hodnot amplitudy příslušných 69 Obr. 6.10 Implementace lineárně predikčního intonačního modelu v systému SpeechStudio. pulsů. V dolní části vidíme průběh základního tónu přirozené řeči a průběh základního tónu řeči na výstupu lineárně predikčního modelu spolu se vstupními parametry tohoto modelu. Modrou barvou je znázorněn chybový signál lineární predikce, jemuž odpovídá průběh základního tónu znázorněný černou křivkou. Pro případ buzení lineárně predikčního modelu jednotlivými pulsy je průběh intonační křivky na výstupu lineárně predikčního modelu znázorněn oranžovou křivkou. Systém SpeechStudio je dále možné využít k manuální změně jednotlivých prozodických parametrů a především ke tvorbě nových řečových inventářů. V současné době je možné pomocí systému SpeechStudio vytvářet hlasové inventáře pro syntezátory systému Epos pracující na principu lineární predikce, metody TD-PSOLA a kepstrální syntézy. Ve fázi testování je rovněž vytváření hlasových inventářů na principu harmonické syntézy. Pro získání průběhu základního tónu je v systému SpeechStudio použit detektor základního tónu pracující na principu polaritní autokorelace. Pro potřeby opakované detekce intonační křivky s co možná největší eliminací chyb je systém SpeechStudio vybaven automatickým označováním hlasivkových pulsů s možností manuální korekce. Označené hlasivkové pulsy je možné uložit v podobě značek spolu se signálem a opakovaně je využívat pro určování průběhu základního tónu. Další oblastí, kde je zapotřebí označených hlasivkových pulsů, je vytváření hlasových inventářů na základě pitch synchronního překrývání úseků signálu (metoda PSOLA). Aktuální informace o systému SpeechStudio je možné najít na adrese http://sstudio.ure.cas.cz/, kde je možné rovněž získat aktuální verzi v binární podobě pro platformu Win32. Programový systém SpeechStudio motivoval vznik funkčně shodného otevřeného systému na platformě Linux/Gnome s názvem GTK WavEdit, který je možné získat na adrese http://wavedit.ure.cas.cz/. V praxi byla rovněž ověřena možnost používání systému SpeechStudio na Linuxové platformě pomocí projektu Wine. 6.5 Implementace rozšířeného klienta pro systém Epos TTS systém Epos je založen na architektuře klient/server, jejíž jednotlivé komponenty spolu komunikují pomocí původního protokolu TTSCP podrobně popsaného v [HAN99]. Ve standardní distribuci systému Epos je obsažen klient pouze pro příkazovou řádku. Pro účely přehledné práce se systémem Epos byl implementován grafický klient tohoto systému s názvem „WinSay“. Tento klient umožňuje mimo zápisu textu ještě kontrolu fonetického přepisu včetně pomocných formátovacích znaků, výpis posloupnosti použitých řečových jednotek, 70 Obr. 6.11 Grafický klient TTS systému Epos. volbu jazyka a příslušného hlasu, změnu prozodických hodnot a ovládání některých softwarových přepínačů (soft options) systému Epos. Grafické uživatelské roznhraní klienta WinSay je vyobrazeno na obr. 6.11. Klient WinSay je napsán v jazyce C++ pro operační systémy Win32 kompatibilní a je možné jej získat v binární podobě přímo na domovské stránce projektu Epos. 6.6 Implementace ladícího modulu pro systém Epos Při syntéze z psaného textu systémem Epos je nejprve textový zápis pomocí parseru převeden do tzv. vnitřní datové reprezentace, která je vhodná pro aplikaci pravidel a nazývá se TSR (Text Structure Representation). Každý fonetický útvar nebo jeho aproximace je zde reprezentován uzlem v této struktuře. Uzly jsou uspořádány v jednotlivých vrstvách odpovídajících lingvistické úrovni, kterou odpovídající vrstva popisuje. Hierarchie uspořádání jednotlivých vrstev je v systému Epos konfigurovatelná a pro češtinu je znázorněna v Tab. 6.9. Tab. 6.9 Uspořádání úrovní TSR pro češtinu význam psané formy význam mluvené formy text sent název celý text větná konstrukce celý text ukončená promluva colon věta intonační úsek slovo přízvukový takt část slova slabika word syll phone segment písmeno hláska – řečová jednotka Na vnitřní datovou reprezentaci jsou aplikována jednotlivá prozodická pravidla. Pravidla jsou v systému Epos uložena v souboru s koncovkou .rul, přičemž každý jazyk má svůj soubor s pravidly, např. pro češtinu je to obvykle soubor cfg/lng/czech/czech.rul. Do tohoto souboru mohou být vkládány jiné soubory s pravidly a je tak možné vytvářet složitý a přitom přehledný systém pravidel. Základní přehled pravidel systému Epos je uveden v příloze C, podrobný přehled pravidel je možné nalézt v [EPOS]. Při psaní a testování nových pravidel je vhodné mít přehled o stavu vnitřní datové struktury systému Epos před a po vykonání určitého prozodického pravidla. Za tímto účelem byl navržen nástroj Epos TSR Tracking, 71 který využívá existující pravidlo DEBUG umožňující krokování jednotlivých pravidel. Syntaxe tohoto pravidla byla rozšířena o parametr TSRTOOL umožňující grafické zobrazení vnitřní datové struktury systému Epos s možností její editace. Grafický editační nástroj pro TSR strukturu se vyvolá zápisem „debug tsrtool“ v souboru s pravidly. Použijeme-li tento nástroj před a po zápisu určitého prozodického pravidla, můžeme pozorovat vliv tohoto pravidla na vnitřní datovou strukturu a tím i jeho funkčnost. Grafické prostředí popisovaného nástroje je vyobrazeno na obr. 6.12. V levé části vidíme výpis TSR struktury systému Epos pro větu „Vlak dnes nejede.“, ve které jsou barevně odlišeny různé prozodické úrovně od jednotlivých hlásek až po celý text. V pravé části je možné volit viditelnost jednotlivých prozodických vrstev a je zde také statistika jejich četnosti. Obr. 6.12 Nástroj pro výpis a modifikaci vnitřní datové struktury systému Pro snadnou implementaci nástroje Epos TSR Tracking byl v souboru cfg/lng/czech/czech.ini definován softwarový přepínač „tsr_tool(b)=false“, jehož ovládání bylo rovněž zabudováno do grafického prostředí klienta WinSay, viz. obr. 6.11. Pro zobrazení struktury TSR je pak nutné pouze v souboru s pravidly zapsat kód if tsr_tool { debug tsrtool text } a u klienta WinSay aktivovat přepínač „TSR Tool“. Nástroj Epos TSR Tracking je vytvořen jako DLL knihovna tsrtool.dll pro platformu Win32. Pokud při zpracování pravidel narazí systém Epos na zápis „debug tsrtool“, předá ukazatel na datovou strukturu TSR právě zpracovávaného textu DLL knihovně, která tuto strukturu zobrazí a umožní její editaci. Po skončení editace knihovna předá řízení zpět systému Epos, který pokračuje v aplikaci pravidel na modifikovanou strukturu TSR. Knihovnu tsrtool.dll, která je napsána v jazyce C++, je možné rovněž získat na stránkách projektu Epos. 72 6.7 Syntéza řeči s použitím generování základního tónu pomocí lineární predikce Pro implementaci lineárně predikčního intonačního modelu v TTS systému Epos musel být nejprve tento systém modifikován a rozšířen na základě výsledků popsaných v kap. 4 a 5. Do řečového syntezátoru tdpsyn byl implementován lineárně predikční intonační model a modelování základního tónu na základě analýzy textu bylo nahrazeno modelováním buzení lineárně predikčního intonačního modelu. Blokové schéma upraveného TTS systému Epos s použitím generování základního tónu pomocí lineární predikce je na obr. 6.13 (modře označené bloky byly přidány). Z tohoto obrázku je patrné, že u jednotek ve vnítřní datové reprezentaci systému Epos je parametr f využit pro přenos buzení lineárně predikčního intonačního modelu namísto hodnot základního tónu. V části vlastní řečové syntézy je toto buzení nejprve vedeno do LPC syntezátoru, jehož výstup je, po průchodu filtrem, použit k nastavení periody řečového syntezátoru. Výpis kódu upraveného řečového syntezátoru tdpsyn pro systém Epos používající lineárně predikční intonační model je uveden v příloze F. Pro ilustraci je uveden v příloze G výpis zjednodušených pravidel pro fonetický přepis češtiny (soubor trans.rul). Výpis původních pravidel pro přímé modelování intonační kontury pomocí pravidel je uveden v příloze H a výpis nových pravidel pro modelování buzení lineárně predikčního intonačního modelu je uveden v příloze I. Obr. 6.13 TTS systém s použitím generování základního tónu pomocí lineární predikce. 6.7.1 Návrh pravidel pro buzení lineárně predikčního intonačního modelu Pravidla pro generování buzení lineárně predikčního intonačního modelu pracují tak, že text je nejprve rozdělen na intonační úseky, přičemž každý intonační úsek je zařazen do patřičné kategorie. Na základě struktury tohoto intonačního úseku je následně vygenerován budící signál, který je odeslán do syntezátoru. Pro vlastní vytváření buzení je využito pravidlo contour, které je použito i pro přímé modelování intonačních kontur, viz. příloha H. Toto pravidlo nanáší na cílové jednotky uvnitř zasažené jednotky přímo definovanou prozodickou konturu (viz. příloha C), ale nechová se aditivně, tj. naneseme-li na stejnou jednotku jinou prozodickou konturu, tato nová kontura přepíše starou. Pro potřeby modelování buzení lineárně predikčního intonačního modelu se ukázalo nezbytné modifikovat systém Epos tak, aby umožňoval aditivní chování pravidla contour při zachování možnosti použít původní chování pro jiné způsoby modelování prozodie. Jelikož vlastní realizace pravidla contour ve zdrojovém souboru src/unit.cc již s možností aditivního chování počítá, bylo nutné zavést novou, hlasově závislou, logickou proměnnou do souboru options.lst umožňující volbu chování pravidla contour pomocí zápisu: VOICE_OPTION (additive_cont, additive_cont, "additive_cont", BOOL, false) Tímto kódem jsme vlastně definovali na hlasu závislý přepínač additive_cont, který je standartně vypnutý a před syntézou pomocí LP intonačního modelu je nutné jej aktivovat. Dále bylo nutné upravit volání pravidla contour ve zdrojovém souboru src/rule.cc pomocí zápisu: void r_contour::apply(unit *root) { root->contour(target, contour, l, padd_start, quantity, this_voice->additive_cont); } Podobný problém budeme řešit při volbě souboru s prozodickými pravidly. Z tohoto důvodu byla v souboru options.lst definována ještě logická, hlasově závislá, proměnná lpcprosody pomocí zápisu: VOICE_OPTION (lpcprosody, lpcprosody, "lpcprosody", BOOL, false) 73 V souboru s pravidly pro češtinu (czech.rul) je pak volba prozodie zapsána takto: if use_prosody { if lpcprosody { @include "lpcpros.rul" } if !lpcprosody { if naive_prosody { @include "naive.rul" } if !naive_prosody { @include "prosody.rul" } } } Bude-li proměnná lpcprosody kladná použije se soubor s pravidly pro modelování buzení lineárně predikčního modelu „lpcpros.rul“. V souboru lpcpros.rul jsou intonační úseky rozděleny na různé typy podle různých hledisek. Podle polohy se rozlišují úseky na iniciální, mediální, finální ukončené a finální neukončené, podle typu věty pak na oznamovací, otázku zjišťovací a otázku doplňovací. Původní pravidla systému Epos pro češtinu nerozlišují mezi větou oznamovací a otázkou doplňovací, používají jen dva typy vět. Otázka doplňovací byla zavedena pod typem „D“ (ostatní typy byly převzaty z původních prozodických pravidel). 6.7.2 Realizace lineárně predikčního intonačního modelu v syntezátoru V současné době poskytuje nejkvalitnější syntézu češtiny v systému Epos syntezátor v časové oblasti tdpsyn. Z tohoto důvodu byl lineárně predikční intonační model nejprve realizován pro tento syntezátor, jehož kód je uložen v souboru src/tdpsyn.h a src/tdpsyn.cc, jehož výpis je uveden v příloze F. Pro rozlišení způsobu modelování prozodie se zde rovněž používá hlasově závislá proměnná lpcprosody, např. kód pro inicializaci proměnných, lineárně predikčního syntetizujícího filtru a výstupního filtru vyhlazujícího intonační konturu bude v konstruktoru třídy tdpsyn vypadat takto: if (v->lpcprosody) { int i; for (i = 0; i < LPC_PROS_ORDER; lpfilt[i++] = 0); for (i = 0; i < MAX_OFILT_ORDER; ofilt[i++] = 0); sigpos = 0; lppstep = LP_F0_STEP * v->samp_rate / 1000; lpestep = LP_DECIM * lppstep; basef0 = v->init_f; lppitch = v->samp_rate / basef0;; } Základním parametrem je proměnná lppstep udávající periodu výpočtu hodnoty základního tónu z výstupu lineárně predikčního intonačního modelu ve vzorcích. Tato proměnná se vypočítá při inicializaci na základě vzorkovacího kmitočtu použitého hlasového inventáře a deklarované proměnné LP_F0_STEP udávající periodu výpočtu základního tónu v milisekundách. Obvyklá hodnota periody výpočtu hodnoty základního tónu je 8 ms. Pro názornost jsou deklarované proměnné pro lineárně predikční model uvedeny v Tab. 6.10. Tab. 6.10 Deklarace proměnných pro lineárně predikční intonačnmí model v souboru tdpsyn.cc #define #define #define #define #define LP_F0_STEP 8 LP_DECIM 10 LP_F0_ORD 4 F0_FILT_ORD 9 LP_EXC_MUL 1.0 /* /* /* /* /* step of F0 analysis for linear prediction */ F0 analysis decimation coeff. for linear prediction */ order of F0 contour LP analysis */ F0 contour filter order */ LP excitation multipicator */ Proměnná lpestep udává periodu výpočtu hodnoty základního tónu pomocí lineárně predikčního intonačního modelu a je učena při inicializaci pomocí proměnné lppstep a deklarované proměnné LP_DECIM udavající decimační poměr lineárně predikčního intonačního modelu. Deklarovaná proměnná LP_F0_ORD udává řád predikce lineárně predikčního intonačního modelu a nabývá obvykle hodnoty 4, proměnná F0_FILT_ORD 74 pak udává řád výstupního filtru vyhlazujícího intonační konturu. Pomocí proměnné LP_EXC_MUL můžeme ovlivňovat dynamiku výstupní intonační kontury. Sandartně je tato multiplikativní konstanta rovna jedné. 75 76 7 Celkový přínos práce Dříve, než přistoupím ke shrnutí výsledků této práce, bych chtěl zdůraznit, že jejím cílem nebylo úplné vyřešení problematiky modelování prozodie řeči pomocí lineární predikce, ale ověření možnosti použití této metody modelování intonace a naznačení směru dalšího rozvoje a praktického použití této metody. Z tohoto pohledu se domnívám, že cíle práce byly splněny, a dosažené výsledky lze stručně popsat v následujících bodech: ● Byl realizován lineárně predikční kodér a dekodér průběhu základního tónu řeči a byla ověřena jeho funkčnost v praxi implementací do řečových LPC a TD-PSOLA vokodérů. Tento LPC kodér/dekodér průběhu základního tónu řeči byl nejprve, včetně řečových vokodérů, ověřen v prostředí Matlab a následně implementován do systému SpeechStudio. LPC kodér/dekodér průběhu základního tónu řeči s oběma řečovými vokodéry byl následně testován na všech větách z prozodické databáze. Rozdíl mezi přirozenou konturou základního tónu a konturou resyntetizovanou pomocí lineárního prediktoru se ukázal u tohoto LPC kodéru/dekodéru průběhu základního tónu řeči z percepčního hlediska zanedbatelný. ● Byly ověřovány různé způsoby aproximace zbytkového signálu a jejich vliv na výsledné kvalitě řeči. Na základě získaných výsledků byly optimalizovány parametry LPC kodéru a dekodéru průběhu základního tónu řeči s ohledem na minimální složitost a maximální kvalitu řeči. Pro účely hodnocení použité aproximace zbytkového signálu lineárního prediktoru byla použita střední kvadratická chyba průběhu základního tónu po resyntéze pomocí lineární predikce. ● Byly zkoumány prozodicky relevantní závislosti zbytkového signálu lineární predikce průběhu základního tónu řeči pomocí řečové databáze s automaticky vloženými značkami hranic suprasegmentálních celků. Z výsledků vyplývá, že buzení lineárně predikčního intonačního modelu je nutné provádět na úrovni jednotlivých slabik. Výsledky ukazují, že v další práci je nutné se zaměřit na víceprůchodové optimalizační algoritmy umožňující aproximaci zbytkového signálu lineární predikce s výslednou minimalizovanou střední kvadratickou chybou resyntetizované intonační kontury. ● Byla testována možnost využití LPC analýzy průběhu základního tónu řeči pro tvorbu nových prozodických pravidel. Pro využití zbytkového signálu lineární predikce pro návrh prozodických pravidel je nutné buď implementovat lexikální analýzu psaného textu, což je problém pro češtinu dosud nevyřešený, nebo využít zbytkový signál lineární predikce pro natrénování umělé neuronové sítě. Na vstupy neuronové sítě by byly přivedeny informace o hranicích suprasegmentálíí a jejich vzájemné četnosti a neuronová síť by byla trénována na zbytkový signál lineárního prediktoru. Po skončení trénovací fáze by neuronová síť generovala přímo budící signál lineárně predikčního syntetizujícího filtru, na jehož výstupu by se objevil průběh základního tónu syntetické promluvy. Na modelování buzení lineárně predikčního intonačního modelu umělou neuronovou sítí se v současné době pracuje, ale jeho podrobný popis přesahuje rámec této práce. ● Byla ověřena možnost automatické generace zbytkového signálu lineární predikce z psaného textu za účelem použití LPC modelování při automatické syntéze řeči z psaného textu. Lineárně predikční intonační model, navržený v rámci této práce, byl implementován do syntezátoru řeči v časové oblasti TDPSYN pracující na principu TD-PSOLA. Modul syntézy TDPSYN, který je součástí systému Epos, poskytuje, ve spojení s trifonovými inventáři vytvořenými v ÚRE, v současné době nejkvalitnější syntézu češtiny. TTS systém Epos byl v rámci této práce rozšířen o podporu LPC intonačního modelu na úrovni pravidel. Pro účely přehledné práce se systémem Epos byl implementován grafický klient tohoto systému s názvem „WinSay“ umožňující mimo jiné přehlednou volbu jazyka, příslušného hlasu a změnu prozodických hodnot. Pro účely ladění pravidel pro systém Epos byl v rámci této práce vytvořen softwarový nástroj „Epos TSR Tracking“ umožňující zobrazení a modifikaci vnitřní datové struktury systému Epos během provádění jednotlivých pravidel, což se ukázalo nezbytné při vytváření pravidel budících lineárně predikční intonační model. Pro modelování buzení lineárně predikčního intonačního modelu v systému Epos byla navržena první verze pravidel. Tato pravidla pro buzení lineárně predikčního intonačního modelu byla dále odladěna pomocí testovací prozodické databáze vytvořené v rámci této práce a na základě subjektivních poslechových testů je možné prohlásit, že poskytují přirozenější prozodii než původní pravidla standartně obsažená v distribuci systému Epos modelující přímo intonační konturu. Pravidla pro buzení lineárně predikčního intonačního modelu navíc řeší intonaci otázek doplňovacích, kterou původní pravidla vůbec neřešila. TTS systém Epos s prozodií řízenou pomocí lineárně predikčního intonačního modelu je v současné době testován renomovanou firmou pro praktické komerční nasazení s kladným ohlasem na kvalitu modelování prozodie. Využití LPC intonačního modelu do budoucna se zdá být perspektivní především ve spojení s umělými neuronovými sítěmi, neboť budící signál pro syntetizující filtr lineárně predikčního intonačního modelu je 77 mnohem jednodušší než výsledný průběh základního tónu. Při použití více umělých neuronových sítí pro jednotlivé typy intonačních úseků pro generování budícího signálu pro syntetizující filtr lineárně predikčního intonačního modelu je úloha pro jednotlivé neuronové sítě mnohem jednodušší a jednoznačnější, než při použití jediné složité neuronové sítě přímo pro generování průběhu základního tónu řeči. Použití neuronových sítí pro buzení prozodických intonačních modelů je jednou z oblastí, které bych se chtěl ve své další práci intenzivně věnovat. Výzkum prozodických modelů, popsaný v této práci, má velký význam pro další vývoj v oblasti modelování prozodie češtiny. Na tento výzkum přímo navazuje (a z jeho výsledků čerpá) grant „Hlasové technologie v podpoře informační společnosti“ Grantové agentury České republiky č. 102/02/0124 na léta 2002 až 2004. Tato práce vznikla za finanční podpory Grantové agentury České republiky v rámci grantu č. 102/96/K087 „Teorie a aplikace hlasové komunikace v češtině“ a Ministerstva školství mládeže a tělovýchovy v rámci projektu COST 258 „Přirozenost syntetické řeči“. 78 8 Přílohy Zde jsou uvedeny přílohy, na které odkazuji v textu práce. 8.1 A B C D E F G H I J Seznam příloh - Databáze namluvených vět - Tabulka fonetického přepisu češtiny - Přehled transkripčních a prozodických pravidel systému Epos - Přehled vytvořených programů, podprogramů a funkcí - Výpisy některých podprogramů a funkcí - Výpis kódu TD-PSOLA syntezátoru s implementovaným modelováním prozodie pomocí lineární predikce - Fonetická transkripce češtiny pro systém Epos - Modelování prozodie češtiny pro systém Epos podle pravidel Prof. Palkové - Modelování prozodie češtiny pro systém Epos pomocí lineárně predikčního modelu - Popis přiloženého disku CD-ROM 79 8.2 Příloha A – Seznam namluvených vět Tab. A.1 Kategorie vět použitého prozodického korpusu věta otázka doplňovací oznamovací rozkazovací otázka zjišťovací jednoduchá souvětí dvou vět souvětí tří vět krátká dlouhá krátká dlouhá krátká dlouhá d1k1 d1d1 d2k1 d2d1 d3k1 d3d1 d1k2 d1d2 d2k2 d2d2 d3k2 d3d2 d1k3 d1d3 d2k3 d2d3 d3k3 d3d3 o1k1 o1d1 o2k1 o2d1 o3k1 o3d1 o1k2 o1d2 o2k2 o2d2 o3k2 o3d2 o1k3 o1d3 o2k3 o2d3 o3k3 o3d3 r1k1 r1d1 r2k1 r2d1 r3k1 r3d1 r1k2 r1d2 r2k2 r2d2 r3k2 r3d2 r1k3 r1d3 r2k3 r2d3 r3k3 r3d3 z1k1 z1d1 z2k1 z2d1 z3k1 z3d1 z1k2 z1d2 z2k2 z2d2 z3k2 z3d2 z1k3 z1d3 z2k3 z2d3 z3k3 z3d3 Tab. A.2 Věty prozodického korpusu o1k1 o1k2 o1k3 o1d1 o1d2 o1d3 o2k1 o2k2 o2k3 o2d1 o2d2 o2d3 o3k1 o3k2 o3k3 o3d1 o3d2 o3d3 z1k1 z1k2 z1k3 z1d1 z1d2 z1d3 z2k1 z2k2 z2k3 z2d1 z2d2 z2d3 Vlak dnes nejede. Jiné údaje nemáme. Soubor je uložen. Vlak z Pardubic do Plzně dnes odpoledne nejede. Jiné podrobné údaje o kulturních akcích nemáme. Soubor obsahující tabulky dat je uložen. Trať se opravuje, a proto vlak dnes nejede. Výsledek nebude přesný, protože nemáme jiné údaje. Soubor je uložen a program bude ukončen. Trať z Pardubic do Plzně se tento týden opravuje, a proto osobní vlak ve čtrnáct padesát nejede. Výsledek našeho výpočtu nebude dost přesný, protože zatím nemáme k dispozici jiné přesné údaje. Soubor obsahující tabulky dat je uložen a program bude po stisknutí klávesy Enter ukončen. Trať se opravuje, a proto je provoz omezen a vlak dnes nejede. Výsledek nebude tak přesný, jak jsme chtěli, protože nemáme jiné údaje. Soubor je uložen, program bude ukončen a počítač se vypne. Trať z Pardubic do Plzně se tento týden opravuje, a proto je dočasně omezen provoz mezi oběma městy, dokud nebudou odstraněny následky prudkého deště. Výsledek posledního výpočtu nebude tak přesný, jak jsme při zahajování výzkumného úkolu chtěli, protože v současné době nemáme jiné přesné údaje. Soubor obsahující úplné tabulky dat je uložen, program bude ukončen stiskem klávesy Enter a počítač se po uložení ostatních programů vypne. Vlak dnes nejede? Jiné údaje nemáme? Soubor je uložen? Vlak z Pardubic do Plzně dnes odpoledne nejede? Jiné podrobné údaje o kulturních akcích nemáme? Soubor obsahující tabulky dat je uložen? Vlak dnes nejede, protože se trať opravuje? Výsledek není přesný, protože nemáme jiné údaje? Bude program ukončen, když je soubor uložen? Vlak z Pardubic do Plzně dnes nejede, protože se železniční trať opravuje po povodních u Berouna? Výsledek našeho výpočtu není dost přesný, protože nemáme k dispozici jiné přesné údaje? Bude program po stisknutí klávesy Enter ukončen, když je soubor obsahující tabulky dat uložen? 80 z3k1 z3k2 z3k3 z3d1 z3d2 z3d3 d1k1 d1k2 d1k3 d1d1 d1d2 d1d3 d2k1 d2k2 d2k3 d2d1 d2d2 d2d3 d3k1 d3k2 d3k3 d3d1 d3d2 d3d3 r1k1 r1k2 r1k3 r1d1 r1d2 r1d3 r2k1 r2k2 r2k3 r2d1 r2d2 r2d3 r3k1 r3k2 r3k3 r3d1 r3d2 r3d3 n1_1 n1_2 n1_3 n1_4 Vlak dnes nejede, protože se opravuje trať a pokládají koleje? Výsledek není přesný, protože jiné údaje nemáme a výpočet byl přerušen? Uloží se soubor, když je program ukončen a počítač se vypne? Vlak z Pardubic do Plzně dnes odpoledne nejede, protože se opravuje trať po povodních u Berouna, o kterých se mluvilo v ranním rozhlasovém vysílání? Výsledek našeho výpočtu není dost přesný, protože nemáme k dispozici jiné přesné údaje? Uloží se soubor obsahující tabulky dat, když je program na jejich zpracování ukončen a počítač se bez uložení ostatních programů vypne? Kudy jede vlak? Jaké údaje máme? Kam bude soubor uložen, ukončíte-li program? Jak často jezdí osobní vlak z Pardubic do Plzně? Jaké údaje o kulturních akcích v Praze máme? Kam jste uložili soubor obsahující tabulky dat? Kudy jede vlak, když se trať opravuje? Jaké údaje použijete, aby byl výsledek přesný? Kam bude soubor uložen, ukončíte-li program? Kudy dnes jede vlak z Pardubic do Plzně, když se železniční trať opravuje po povodních u Berouna? Jaké údaje o stavu zaměstnanců použijete, aby byl výsledek vašeho výpočtu dostatečně přesný? Kam bude uložen soubor obsahující tabulky dat o zaměstnancích, ukončí-li se stiskem klávesy Enter běžící program? Kudy jede vlak, na který čekáme, když se opravuje trať? Jaké údaje použijete, aby byl výsledek přesný a výpočet nebyl přerušen? Kam bude soubor uložen, ukončíme-li program a vypneme počítač? Kudy jede vlak převážející řezané dřevo, které bylo dočasně uskladněno v Loděnicích u Berouna, když se trať po nedávných povodních opravuje? Jaké údaje o stavu zaměstnanců použijete, aby byl výsledek vašeho výpočtu přesný a výpočet nebyl před skončením poslední fáze přerušen? Kam bude uložen soubor obsahující tabulky dat, ukončíme-li po stisku klávesy Enter program a vypneme počítač bez uložení ostatních programů? Vyhledejte spojení. Zadejte své údaje nebo proveďte volbu. Uložte tento soubor. Vyhledejte spojení mezi Pardubicemi a Plzní dnes odpoledne. Zadejte podrobné údaje o kulturních akcích v Praze. Uložte urychleně soubor obsahující tabulky dat. Vyhledejte spojení a vytiskněte je. Zadejte své údaje nebo proveďte volbu. Uložte tento soubor, dříve než ukončíte program. Vyhledejte všechna dnešní spojení z Pardubic do Plzně a vytiskněte je v tabulce po potvrzení klávesou Enter. Zadejte pomocí klávesnice všechny své osobní údaje nebo proveďte myší volbu příslušné operace. Uložte soubor obsahující úplné tabulky dat, dříve než ukončíte stiskem klávesy Enter běžící program. Vyhledejte spojení, která nás zajímají, a vytiskněte je. Zadejte své údaje nebo vyberte operaci, kterou si přejete provést. Uložte tento soubor, dříve než ukončíte program, ve kterém jste pracovali. Vyhledejte všechna dostupná vlaková spojení, která nás v dané situaci zajímají, a po stisku klávesy Enter je vytiskněte. Zadejte pomocí klávesnice své údaje nebo vyberte ze seznamu zobrazeného na obrazovce operaci, kterou si přejete před ukončením programu provést. Uložte soubor obsahující tabulky dat, dříve než stiskem klávesy Enter ukončíte program, ve kterém jste po celou dobu výpočtu pracovali. Univerzita Karlova patří bezesporu k nejstarším evropským univerzitám. Významné postavení, které si vydobyla v kontextu evropských univerzit, však není neměnnou konstantou a nelze je pojistit ani sebedokonalejším scénářem oslav šestistého padesátého výročí jejího založení. Úroveň každé univerzity lze posuzovat z různých hledisek. Jedním z nich zůstává úroveň absolventů, která je pochopitelně těsně svázána s úrovní učitelského sboru. 81 n1_5 To je důvod, proč univerzity věnují mimořádnou pozornost výběru svých učitelů, především docentů a profesorů. n1_6 Vedení naší univerzity se vyrovnalo s křivdami minulosti urychleným jmenováním nových docentů a profesorů v rámci rehabilitačního řízení. n1_7 Po skončení rehabilitací bylo nutné jasná pravidla habilitačních a jmenovacích řízení nově stanovit. n1_8 Pokud pohlížíme na titul docenta a profesora jako na titul vědecko-pedagogický, je zřejmé, že uchazeč musí naplňovat oba atributy. n1_9 Posoudit kvalitu i kvantitu obou činností bývá ovšem mimořádně obtížné zejména proto, že vysokoškolský zákon žádná detailní kritéria pro habilitační či jmenovací řízení nestanoví. 82 8.3 Příloha B – Tabulka fonetického přepisu češtiny Tab. B.1 Fonetický přepis českých hlásek Pořadí Název hlásky autorem použitý zápis (Epos) zápis dle doc. Ptáčka [PTÁ92] zápis dle PAC [NOU97] IPA notace Příklad 1 a „krátké á“ a A a a pas 2 á „dlouhé á“ á A: á a: táta 3 b „bé“ b B b b bota 4 c „cé“ c C c ts cíl 5 dz „dz“ Z ] C dz leckdy 6 č „čé“ č c č t čas 7 dž „dž“ Ž } Č d džbán 8 d „dé“ d D d d dům 9 ď „dé s háčkem“ ď d ď děd 10 e, ä „krátké é“ e E e les 11 é, ö „dlouhé é“ é E: é e: lék 12 f „ef“ f F f f forma 13 g „gé“ g G g kde 14 h „há“ h H h had 15 ch „chá“ x X X x chata 16 ch „znělé ch“ X není není abych byl 17 i, y „krátké í“ i I i myš 18 í, ý, ü „dlouhé í“ í I: í i: pít 19 j „jé“ j J j j jas 20 k „ká“ k K k k krk 21 l „el“ l L l l led 22 m „em“ m M m m mák 23 m „retozubné em“ není není M tramvaj 24 n „en“ n N n n noc 25 n „velární en“ N není N banka 26 ň „eň“ ň n ň nic 27 o „krátké ó“ o O o rok 28 ó „dlouhé ó“ ó O: ó o: móda 29 p „pé“ p P p p pes 30 r „er“ r R r r ret 31 ř „znělé eř“ ř r ř r moře 32 ř „neznělé eř“ Ř není Ř r keř 33 s „es“ s S s s sen 34 š „eš“ š s š šaty 35 t „té“ t T t t tam 36 ť „ťé“ ť t ť c kotě 37 u „krátké ú“ u U u kus 38 ú, ů „dlouhé ú“ ú U: ú u: půl 39 v „vé“ v V v v vlak 40 z „zet“ z Z z z zub 83 41 ž „žet“ ž z ž žal 42 au A AU au au auto 43 eu E EU eu eu eunuch 44 ou O OU ou ou mouka 45 hlasivkový ráz ' ' ! ne’existuje 46 neutrální samohláska @ @ není B@ 47 pauza # není sp , 48 šev | | _ . 84 na|uka 8.4 Příloha C – Přehled transkripčních a prozodických pravidel systému Epos Transkripční pravidla jsou v systému Epos zapisována do souborů s koncovkou „.rul“ a jsou vykonávána v pořadí, v jakém jsou v tomto souboru zapsána. Hlavní soubor s pravidly pro příslušný jazyk (pro češtinu např. „czech.rul“) se nachází v adresáři příslušného jazyka (pro češtinu tedy „cfg/lng/czech/czech.rul“). Do tohoto hlavního souboru s pravidly je možné dále načítat pomocí pravidla include jiné soubory s pravidly, např. zápis „@include trans.rul“ vloží na dané místo transkripční pravidla uložená v souboru trans.rul. Komentáře do souborů s pravidly je možné vkládat pomocí znaků „#“ a „;“. V souborech s pravidly je rovněž možné používat proměnné (makra) pomocí zápisu identifikátor = nahrazení, např. zápis „$vovel = aeiouy“ nám definuje proměnnou vovel obsahující krátké samohlásky. Při zápisu pravidel je možné použít operátor except reprezentovaný znakem „!“ způsobující negaci. Hlavní druhy transkripčních a prozodických pravidel systému Epos jsou uvedeny v následujících odstavcích. Podrobný popis je možno najít v [EPOS]. 8.4.1 Pravidla využívající slovníky Pravidla tohoto typu pracují s výčtovými slovníky o velikosti pohybující se od několika položek až po megabajtové, automaticky generované, seznamy. Každý řádek slovníku představuje jednu položku sestávající ze dvou částí oddělených navzájem mezerou. Obvykle bývá část první nahrazena částí druhou. Parametrem slovníkově orientovaných pravidel může být název souboru slovníku nebo přímo výčet jednotlivých položek v uvozovkách oddělených vzájemně čárkou. subst záměna podřetězce. Parametrem je slovník, v němž se budou vyhledávat ekvivalenty. Zasažená jednotka musí být hláska. Zkoušejí se všechny podřetězce (nejdelší napřed), dokud není ekvivalent nalezen. Ten by měl nahradit příslušnou část slova. Pokud první část položky slovníku začíná znakem „^“ nebo končí znakem „$“, hledají se poze podřetězce ležící na začátku nebo na konci zasažené jednotky. prep totéž, jako subst, ale slovník musí obsahovat nikoli libovolný podřetězec, ale přímo hledanou jednotku. Dojde-li k nalezení a případnému nahrazení danému hashovací tabulkou pojmenovanou parametrem, připojí se obsah zasažené jednotky na začátek jejího pravého souseda a ona sama je vyřazena. (Nemá-li souseda, nic se nestane.) postp analogický s prep, ale obsah zasažených jednotek se připojuje na konec souseda zleva. prep a postp nejsou totéž, co předložky a nepřízvučné příklonky, ale je praktické si to myslet. prosody přiřazení prozodických rysů jednotlivým uzlům TSR, v současné době je nahrazeno pohodlnějším pravidlem contour. Parametrem pravidla prosody je jméno souboru formátovaného jako slovník, každé prozodické nastavení pro jednu ze tří prozodických veličin (tvání t, intenzita i a základní tón f) je na vlastním řádku. Struktura vlastního nastavení je velmi jednoduchá, např. i/3:4 -20. První znak, udávající nastavovanou veličinu, musí být t, i nebo f. První číslo udává pozici uvnitř jednotky jejíž délka je určena druhým číslem. Třetí číslo určuje změnu příslušné prozodické veličiny. Pokud je zasaženou jednotkou slabika uvnitř přízvukových taktů, sníží nám zápis v uvedeném příkladu intenzitu třetí slabiky u všech čtyřslabičných taktů o 20%. segments vytvoření vrstvy obsahující řečové jednotky hlasového inventáře. První část slovníkové položky obsahuje obvykle tříznakový řetězec obsahující zasaženou hlásku a její možné okolí. Pokud okolí není definováno nahrazuje se znakem „?“. Druhá část položky obsahuje číslo jednotky v příslušném hlasovém inventáři. V příštích verzích systému Epos bude převod fonémů na řečové jednotky řešen na úrovni vlastních řečových syntezátoru a segmentální úroveň již nebude definována pomocí TSR. with 8.4.2 toto pravildlo patří do skupiny podmíněných pravidel (viz. odst. 8.4.6), pracuje však se slovníkem zasažených jednotek. Obsahem řízená pravidla regress změna hlásek či jiných jednotek podle jejich bezprostředního okolí. Parametr pravidel progress a regress je tvaru co-se-mění>na-co(levé-okolí_pravé-okolí), např. zápis ve tvaru "ptk>bdg(aeiou_aeiou)" oznělí uvedené intervokalické explozívy. Změna se vyhodnocuje zprava doleva. Změní-li se jednotka na hodnotu delete_me (momentálně '0'), sama se ihned zruší. Obsahuje-li rušená jednotka jiné jednotky, zaniknou rovněž. Seznam "na-co" může být tvořen jediným znakem. V tom případě se předpokládá, že se v daném okolí mění všechny jednotky "co-se-mění" na tento znak. Jinak musí být počet znaků na obou stranách '>' stejný a znaky se 85 mění na znaky s odpovídajícím pořadím v "na-co". Seznam "co-se-mění" může též obsahovat znak juncture (nyní '0'). V takovém případě mezi jednotkami danými levým a pravým okolím vznikne jedna nová jednotka s obsahem daným příslušnou položkou seznamu "na-co". Levé i pravé okolí mohou též obsahovat symbol juncture pro označení předělu úrovně, jež tvoří rozsah pravidla. V literatuře se k těmto účelům často používá symbol '#'. Těmito pravidly není možno zpracovávat znak '0' jakožto znak vyskytující se v textu, neboť takový znak se nikdy nemění. K jeho zpracování je nutno sáhnout po pravidlu např. typu subst nebo regex. progress jako regress, ale změna se vyhodnocuje zleva. regress a progress nejsou totéž, co regresivní a progresivní fonetická změna, ale je praktické si to myslet. 8.4.3 Strukturovaná pravidla raise přesun hlásky (resp. jejího symbolu) nebo jiné jednotky do vyšší úrovně. Užívá se zejména, pokud segmentální jednotky přímo ovlivňují suprasegmentália, jako třeba rozdělení otázek na zjišťovací a doplňovací. Parametr je tvaru co-cestuje:kdy-cestuje, např. "q:?!" znamená, že znak q nahradí otazník nebo vykřičník ve všech otazníkových a vykřičníkových větách, které obsahují "q". (Kopie "q" na hláskové rovině ale zůstává, je nutno dát pozor na rozsah pravidla). Parametry co-cestuje i kdy-cestuje nemusí být jednotlivé znaky, mohou to být např. řetězce používající operátor "vyjma" (viz níže). Rozsah pravidla je úroveň, kde může dojít ke změně, v uvedeném případě věta, zasažená jednotka je úroveň, ze které mohou znaky vyjít, v uvedeném případě hláska. syll rozdělení přízvukových taktů na slabiky podle teorie znělosti. 8.4.4 Pravidla modelující prozodii Větná prozodie je v systému Epos modelována pomocí přiřazování hodnot prozodických veličin jednotlivým uzlům vniřní reprezentace TSR na jednolivých úrovních. Tyto změny se zadávají v procentech, přičemž 100% je neutrální hodnota (použijí se prozodické hodnoty určené hlasovým inventářem). Prozodická nastavení na různých úrovních se sčítájí a jsou přiřazovány na segmentální úrovni jednotlivým řečovým jednotkám. Např. hláska s úrovní f=130 uvnitř slova s f=120 se vytvoří z řečové jednotky s f=150. Systém Epos umožňuje rovněž multiplikativní skládání prozodických veličin jednotlivých úrovní. contour toto pravidlo přiřadí prozodickou konturu jednotce v příslušné úrovni, např. nastaví přízvučné slabiky uvnitř přízvukových taktů. Parametr tohoto pravidla přiřazuje jednoduchou prozodickou word syll“ přiřadí sestupnou intonační konturu konturu, např. „contour f/+2:0:-2 tříslabičným taktům. První písmeno parametru opět určuje příslušnou prozodickou veličinu, následují parametry kontury, zasaženou jednotku a cílovou (ovlivňovanou) jednotku. Uvnitř paramerů kontury může být použit znak „*“ označující libovolné opakování takto označené jednotky. Pravidlo contour bylo použito i pro vytváření budícího signálu pro lineárně predikční intonační model, viz. příloha I. prosody přiřazení prozodických rysů jednotlivým uzlům TSR, viz. odst. 8.4.1. smooth 8.4.5 vyhlazování průběhu jedné ze tří prozodických veličin. Skládání pravidel Při skládání jednotlivých pravidel se v systému Epos užívá těchto celků: • blok pravidel • výběr z pravidel • délkově závislá volba pravidel Blok pravidel je sekvence pravidel uzavřená ve složených závorkách („{“ a „}“) a s výjimkou možného určení zasažené jednotky nemá blok žádné parametry. Pravidla se uvnitř bloku aplikují sekvenčně. S blokem se zachází jako s jednoduchým pravidlem a je přínosný především v kombinaci s pomíněnými pravidly, např. konstrukce if { podmínka pravidlo_1 pravidlo_2 } 86 je-li splněna podmínka provede nejdříve pravidlo_1 a pak pravidlo_2. Jakékoli makro definované uvnitř bloku je platné jen v rámci tohoto bloku. Výběr z pravidel je sekvence pravidel uzavřená ve hranatých závorkách („[“ a „]“), kde se opět, s výjimkou možného určení zasažené jednotky, neuvádějí žádné parametry. Při výběru je vykonáno jen jedno náhodně zvolené pravidlo, přičemž pravděpodobnost výběru je pro všechna pravidla uzavřená ve hranatých závorkách stejná. Pokud chceme pravděpodobnost ovlivnit, musíme použít tzv. opakování pravidel, např. zápis [ 3x prosody prosody ] typical.dic variant.dic bude aplikovat prozodii s pravděpodobností 75% ze souboru typical.dic a s pravděpodobností 25% ze souboru variant.dic. Délkově závislá volba pravidel je sekvence pravidel uzavřená v lomených závorkách („<“ a „>“) a s výjimkou možného určení zasažené jednotky nemá žádné parametry. Provedeno je jen pravidlo, jehož pořadí v bloku odpovídá počtu cílových jednotek v zasažené jednotce. Je-li pravidel v bloku méně než je počet cílových jednotek v zasažené jednotce, provede se poslední pravidlo v bloku. Tomuto se dá předejít, uvedeme-li na poslední místo v bloku pravidlo nothing. 8.4.6 Podmíněná pravidla Podmíněná pravidla umožňují vykonání určitých pravidel nebo bloků pravidel pouze při splnění předem daných podmínek. inside aplikuje pravidlo nebo blok pravidel pouze uvnitř jednotek specifikovaných parametrem, který tvoří seznam hodnot zasažené jednotky příslušné úrovně, na které má být pravidlo (blok pravidel) aplikováno. Může zde být použit operátor except. Každá jednotka splňující danou podmínku (např. věta) je zpracovávána odděleně. near aplikuje pravidlo nebo blok pravidel pouze uvnitř jednotek obsahujících alespoň jednu ze specifikovaných jednotek. Parametrem je seznam jednotek cílové úrovně, může zde být použit operátor except. with aplikuje pravidlo nebo blok pravidel na seznam jednotek. Parametrem je název souboru se seznamem jednotek. if aplikuje pravidlo nebo blok pravidel při splnění podmínky dané parametrem. V současné době je možné používat pouze logické hodnoty. 8.4.7 Speciální pravidla regex substituce za regulární výraz. Parametr má podobu /regular_expression/replacement/. Toto pravidlo je podobné pravidlu subst pouze s jednou slovníkovou položkou, je ovšem mnohem výkonnější. debug výpis ladících informací během aplikace pravidel. Parametr elem provede výpis aktuálního stavu parsovaného textu, parametr pause čeká na stisk klávesy a parametr tsrtool provede zobrazení vnitřní datové struktury, viz. článek 6.6. 87 Příloha D – Přehled vytvořených programů, procedur a funkcí V následujících tabulkách uvádím seznam a stručný popis všech programů, procedur a funkcí, které vznikly v průběhu práce a jejichž použití bylo prezentováno v předchozích kapitolách. Tab. 8.1 Přehled vytvořených programů Název Typ OS SpeechStudio Win32, Wine Epos Unix, Linux, QNX, Win32 Unix, Linux, QNX, Win32 TDPSYN GTK WavEdit Linux, Unix ModProz EPOS TSR Tracking WinSay Win32 Win32 Win32 Stručný popis programu program pro analýzu, popis a segmentaci řeči http://sstudio.ure.cas.cz/ plně konfigurovatelný TTS systém (vznikl ve spolupráci s mgr. Hanikou z MFF UK) http://epos.ure.cas.cz/ syntéza řeči v časové oblasti pro systém Epos http://epos.ure.cas.cz/ program pro analýzu, popis a segmentaci řeči http://wavedit.ure.cas.cz/ http://sourceforge.net/projects/gtkwavedit/ modelování prozodie pomocí řečového syntezátoru výpis a modifikace vnitřní datové struktury systému Epos grafický klient pro TTS systém Epos http://epos.ure.cas.cz/ Tab. 8.2 Přehled vytvořených procedur a funkcí Název Typ prostředí pitchn f0interp f0remerr f0smooth lpan1 lpsyn1 lp98 errinterp2 errinterp3 Matlab Matlab Matlab Matlab Matlab Matlab Matlab Matlab Matlab errimp pitchnc Matlab C Stručný popis detektor základního tónu využívajíci polaritní autokorelaci lineární interpolace průběhu základního tónu řeči odstranění chyb pitchdetektoru vyhlazování průběhu F0 průměrujícím filtrem délky 5 lineárně predikční analýza lineárně predikční syntéza obecný IIR filtr pulsní aproximace zbytkového signálu lineárního prediktoru pulsní aproximace zbytkového signálu lineárního prediktoru s využitím hranic suprasegmentálních celků impulsní aproximace zbytkového signálu lineárního prediktoru detektor základního tónu využívajíci polaritní autokorelaci 88 8.5 Příloha E – Výpisy některých podprogramů a funkcí Výpisy funkcí f0interp, f0remerr a f0smooth provádějící lineární interpolaci a vyhlazování průběhu základního tónu řeči (prostředí Matlab): function f0int=f0interp(f0con) %function f0interp(f0con) %iterpolation of f0 contour l=length(f0con) f0pom=f0con; idx=1; while idx<l while f0con(idx)~=0 & idx<l, idx=idx+1; end lind=idx; % the last left nonzero value while f0con(idx)==0 & idx<l, idx=idx+1; end rind=idx; % the first right nonzero value n=rind-lind; if rind==l for j=lind:rind, f0pom(j)=f0con(lind-1); end elseif lind>1 step=(f0con(rind)-f0con(lind-1))/n; for j=lind:rind-1, f0pom(j)=f0con(lind-1)+(j-lind+1)*step; end else for j=lind:rind-1, f0pom(j)=f0con(rind); end end end f0int=f0smooth(f0remerr(f0pom,5)); %----------------------------------------------------------------------function f0int=f0smooth(f0con) %function f0interp1(f0con) %smoothing F0 contour l=length(f0con); f0int=f0con; for idx=3:l-2 f0int(idx)=mean(f0con(idx-2:idx+2)); end %----------------------------------------------------------------------function f0int=f0remerr(f0con,eps) %function f0interp2(f0con,eps) %pitch detection errors removing (1/2 F0, 2 F0) with treshold eps l=length(f0con); f0int=f0con; for idx=4:l test=abs(mean(f0int(idx-3:idx-1))/2-f0con(idx)); if test<eps f0int(idx)=2*f0con(idx); end end 89 Výpisy funkcí lpan1, lpsyn1 a filt98 provádějící lineárně predikční analýzu a syntézu a filtraci signálu (prostředí Matlab): function err=lpan1(sig,koef) %function err=lpan1(sig,koef) % koef ... a filter coeff. % err ... prediction residual signal % 1999 [email protected] ord=length(koef); err(1)=sig(1); for j=2:length(sig) err(j)=sig(j); for k=1:min(j-1,ord) err(j)=err(j)+sig(j-k)*koef(k); end end function syn=lpsyn1(exc,n,koef) %function syn=lpsyn1(excit,n,koef) % synthesis from filter coefficients % (C) Petr Horak 07.06.1998 % [email protected] % exc ... excitation signal % n ... length of the excitation signal % koef ... lp filter coeff. % syn ... synthetised signal ord=length(koef); le=length(exc); if n>le exc(le+1:n)=0; end for jj=1:ord filt(jj)=0; % rck(jj)=koef(ord+1-jj); end %syn(1)=exc(1); for j=1:max(le,n) syn(j)=exc(j)-filt(1)*koef(1); for k=ord:-1:2 syn(j)=syn(j)-filt(k)*koef(k); filt(k)=filt(k-1); end filt(1)=syn(j); % [exc(j), filt] end function y=filt98(b,a,x) %function y=filt98(b,a,x) nb=length(b); na=length(a); nmax=max(na,nb); %[nb,na,nmax] for jdx=1:nmax filt(jdx)=0; end n=length(x); for idx=1:n filt(1)=x(idx); for jdx=2:na filt(1)=filt(1)-a(jdx)*filt(jdx); end outp=0; for jdx=1:nb outp=outp+b(jdx)*filt(jdx); end y(idx)=outp; for jdx=nmax:-1:2 filt(jdx)=filt(jdx-1); end % [filt] end 90 Výpisy funkcí errinterp2 a errimp provádějící pulsní interpolaci zbytkového signálu lineárního prediktoru (prostředí Matlab): function ei=errinterp2(err,w,eps) % ei=errinterp2(err,w,eps) – pulse interpolation of residual signal % err ... linear prediction error signal % w ... length of window % eps ... interpolation treshold % (c) Petr Horak 17.06.1998 if w<1 fprintf('w must be >= 1 !') break end n = length(err); nw = floor(n/w); nm = mod(n,w); m = 0; for idx=0:nw-1 m = mean(err(idx*w+1:idx*w+w)) + m; if abs(m)>eps ei(idx*w+1:idx*w+w)=m; m = 0; else ei(idx*w+1:idx*w+w)=0; end end if nm>0 m = mean(err(idx*w+w+1:n)) + m; if abs(m)>eps ei(idx*w+w+1:n)=m; else ei(idx*w+w+1:n)=0; end end function ei=errinterp3(err,bgs,w) % ei=errinterp3(err,bgs,w) – suprasegmental interpolation of residual signal % err ... linear prediction error signal % bgs ... array of begins of suprasegmental units % w ... length of excitation impulse % (c) Petr Horak 1998 if nargin < 3 w = 1; end if w < 1 fprintf('w must be >= 1 !') break end n = length(err); nsu = length(bgs) %nw = floor(n/w); %nm = mod(n,w); m = 0; if bgs(1) > 1; ei(1:bgs(1)-1) = 0; end %err %bgs for idx=1:nsu-1 m = sum(err(bgs(idx):bgs(idx+1)-1)) es = min(bgs(idx)+w-1,bgs(idx+1)-1); ei(bgs(idx):es) = m/(es - bgs(idx) + 1); if bgs(idx+1) > es+1; ei(es+1:bgs(idx+1)-1) = 0; end m = 0; end m = sum(err(bgs(nsu):n)); ei(bgs(nsu):bgs(nsu)+w-1) = m/w; ei(bgs(nsu)+w:n) = 0; 91 Výpis funkce errimp provádějící impulsní interpolaci zbytkového signálu lineárního prediktoru (prostředí Matlab): function [ei,derr]=errimp(err,eps) % [ei,derr] = errimp(err,eps) - impulse interpolation of residual signal % err ... linear prediction error signal % eps ... interpolation treshold % ei ... interpolation of error signal % derr .. first difference of error signal % (c) Petr Horak 2001 if nargin < 2; eps = 4; end n = length(err); polar = 0; max = 0; mid = 0; suma = 0; len = 0; derr(1) = 0; for idx=1:n ei(idx) = 0; if idx > 1; derr(idx) = err(idx) - err(idx-1); end if polar > 0 & sign(err(idx)) == polar suma = suma + err(idx); len = len + 1; if err(idx) > eps if err(idx) > max; max = err(idx); mid = idx; end else if mid > 0; ei(mid-1) = suma; suma = 0; len = 0; end max = 0; mid = 0; end elseif polar < 0 & sign(err(idx)) == polar suma = suma + err(idx); len = len + 1; if err(idx) < -eps if err(idx) < max; max = err(idx); mid = idx; end else if mid > 0; ei(mid-1) = suma; suma = 0; len = 0; end max = 0; mid = 0; end elseif polar ~= 0 if mid > 0 ei(mid-1) = suma; suma = 0; len = 0; end if abs(err(idx)) > 0; suma = err(idx); len = 1; end polar = sign(err(idx)); if abs(err(idx)) > eps; max = err(idx); mid = idx; else max = 0; mid = 0; suma = 0; end; else if (sign(err(idx))) ~= 0 polar = sign(err(idx)); if abs(err(idx)) > eps; max = err(idx); mid = idx; else max = 0; mid = 0; end; end end end if mid > 0 ei(mid-1) = suma; suma = 0; len = 0; end 92 Výpis funkce pitchn provádějící detekci základního tónu řeči pomocí polaritní autokorelace (prostředí Matlab): function l=pitchn(n, ix, lvl, l1r2, lup, ldwn) % pitchdetector based on polarity autocorrelation % l=pitchn(n,ix,lvl,l1r2,lup,ldwn) lvlmin=30; plvl=0.4; n2=n/2; l=0; ix=ix*32768; for i=1:n if abs(ix(i))>lvl isig(i)=sign(ix(i)); else isig(i)=0; end end %subplot(3,1,1); plot(ix(1:n)); subplot(3,1,2); plot(isig); %pause; subplot(1,1,1) if l1r2==1 id=1; iu=n2; else id=n2+1; iu=n; end lvlpa=0; for i=id:iu if isig(i)~=0 lvlpa=lvlpa+1; end end if lvlpa<lvlmin return end lvlpa=plvl*lvlpa; fn2=n2; for ll=1:lup if ll<=n2 jup=n2; c=1.0; else jup=n-ll; c=fn2/jup; end jpa=0; if l1r2==1 for j1=1:jup if isig(j1)~=0 j2=j1+ll; if isig(j2)~=0 if isig(j1)==isig(j2) jpa=jpa+1; else jpa=jpa-1; end end end end else for j=1:jup j1=n+1-j; if isig(j1)~=0 j2=j1-ll; if isig(j2)~=0 if isig(j1)==isig(j2) jpa=jpa+1; else jpa=jpa-1; end end end end end ipa(ll)=c*jpa; end %subplot(2,1,1) %plot(ipa) % --- nalezeni 1. pruchodu IPA nulou pomjmp=0; for ll=1:lup if ipa(ll)<0 pomjmp=1; break; end end if pomjmp~=1 return; end kdwn=ll+1; %kmax=k; kmax=ll; kmax1=kmax; pk1=1; for k=kdwn:lup if (kmax1~=ll) & (ipa(kmax)>ipa(k)) pk1=0; end if ipa(k)>ipa(kmax) if pk1 kmax1=kmax; end kmax = k; end end if (abs(kmax/kmax1-2)<0.1) & (ipa(kmax)-ipa(kmax1)<10) kmax=kmax1; end if (ipa(kmax)>=lvlpa) & (kmax>=ldwn) l=kmax; end %subplot(3,1,3); plot(ipa); %s=sprintf('lvlpa=%f',lvlpa); %ylabel(s) %s=sprintf('kmax=%d kmax1=%d ipa(kmax)=%d ipa(kmax1)=%d l=%d',kmax,kmax1,ipa(kmax), ipa(kmax1),l); %xlabel(s) %pause; return 93 8.6 Příloha F – Výpis kódu TD-PSOLA syntezátoru s modelováním prozodie pomocí lineární predikce Tučně vyznačené části kódu představují přidané modelování základního tónu pomocí lineární predikce. Tento kód je standardní součastí distribuce systému Epos od verze 2.4.75 [EPOS]. /* * * * * * * epos/src/tdpsyn.cc (c) 2000-2002 Petr Horak, [email protected] (c) 2001-2002 Jirka Hanika, [email protected] tdpsyn version 2.4.1 (20.8.2002) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. * * */ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in doc/COPYING for more details. #include "common.h" #include "tdpsyn.h" #include <math.h> #define #define #define #define #define #define #define #define MAX_STRETCH MAX_OLA_FRAME HAMMING_PRECISION LP_F0_STEP LP_DECIM LP_F0_ORD F0_FILT_ORD LP_EXC_MUL 30 4096 15 8 10 4 9 1.0 /* /* /* /* /* /* /* sanity check only */ hamming coefficient precision in bits */ step of F0 analysis for linear prediction */ F0 analysis decimation coeff. for linear prediction */ order of F0 contour LP analysis */ F0 contour filter order */ LP excitation multipicator */ /* F0 contour 1:10 filter coefficients */ const double a[9] = {1, -6.46921563821389, 18.43727805607084, -30.21344177474595, 31.11962012720199, -20.62061607537661, 8.58111044795433, -2.04983423923570, 0.21516477151414}; const double b[9] = {0.01477848982115, -0.08930749676388, 0.25181616063735, -0.43840842338467, 0.52230821454923, -0.43840842338467, 0.25181616063735, -0.08930749676388, 0.01477848982115}; /* lp f0 contour filter coefficients (speaker Machac) */ const double lp[LP_F0_ORD] = {-1.23761, 0.60009, -0.32046, 0.10699}; /* Hamming coefficients for TD-PSOLA algorithm */ int hamkoe(int winlen, unsigned short *data, int e, int e_base) { int i; double fn; fn = 2 * pii / (winlen - 1); for (i=0; i < winlen; i++) { data[i] = (unsigned short)((0.53999 - 0.46 * cos(fn * i)) * e / e_base * (1 << HAMMING_PRECISION)); } return 0; } /* Inventory file header structure */ struct tdi_hdr { int magic; int samp_rate; int samp_size; int bufpos; int n_segs; int diph_offs; int diph_len; int res1; int res2; int ppulses; int res3; int res4; }; tdpsyn::tdpsyn(voice *v) { tdi_hdr *hdr; difpos = 0; tdi = claim(v->models, v->loc, cfg->inv_base_dir, "rb", "inventory", NULL); hdr = (tdi_hdr *)tdi->data; if (v->n_segs != hdr->n_segs) shriek(463, "inconsistent n_segs"); 94 if (sizeof(t_samp) != hdr->samp_size) shriek(463, "inconsistent samp_size"); tdp_buff = (t_samp *)(hdr + 1); diph_offs = (int *)((char *)tdp_buff + sizeof(t_samp) * hdr->bufpos); diph_len = diph_offs + v->n_segs; ppulses = diph_len + v->n_segs; /* allocate the maximum necessary space for Hamming windows: */ max_frame = MAX_OLA_FRAME; wwin = (unsigned short *)xmalloc(sizeof(unsigned short) * (max_frame * 2)); memset(wwin, 0, (max_frame * 2) * sizeof(*wwin)); out_buff = (t_samp *)xmalloc(sizeof(t_samp) * max_frame * 2); memset(out_buff, 0, max_frame * 2 * sizeof(*out_buff)); /* initialisation of lp prosody engine */ if (v->lpcprosody) { for (int i = 0; i < LPC_PROS_ORDER; lpfilt[i++] = 0); for (i = 0; i < MAX_OFILT_ORDER; ofilt[i++] = 0); sigpos = 0; lppstep = LP_F0_STEP * v->samp_rate / 1000; lpestep = LP_DECIM * lppstep; basef0 = v->init_f; lppitch = v->samp_rate / basef0;; } } tdpsyn::~tdpsyn(void) { free(out_buff); free(wwin); unclaim(tdi); } inline int tdpsyn::average_pitch(int offs, int len) { const int npitch = 145; int tmp; } int total = 0; int i = 0; for (int j = 0; j <= len + 1; j++) { tmp = ppulses[offs + j] - ppulses[offs + j - 1]; if (tmp < 2 * npitch) { total += tmp; i++; } } if (i <= 0) { if (cfg->paranoid) shriek(463,"pitch marks not found"); return 160; } return total / i; void tdpsyn::synseg(voice *v, segment d, wavefm *w) { int i, j, k, l, m, slen, nlen, pitch, avpitch, origlen, newlen, maxwin, skip, reply, diflen; double outf0, synf0, exc; t_samp poms; const int max_frame = this->max_frame; if (diph_len[d.code] == 0) { DEBUG(2,9, fprintf(STDDBG, "Missing speech unit No: %d\n", d.code);) if (!cfg->paranoid) return; shriek(463, fmt("Missing speech unit No: %d\n",d.code)); } /* lp prosody reconstruction filter excitation signal computing */ if (v->lpcprosody) { // in d.f is excitation signal value if (d.e >= v->init_i * 9) { for (i = 0; i < LPC_PROS_ORDER; lpfilt[i++] = 0); d.e = (d.e * 100 / v->init_i - 1000) * v->init_i / 100; } exc = LP_EXC_MUL * (d.f - v->init_f); pitch = lppitch; } else // in d.f is f0 contour value pitch = v->samp_rate / d.f; slen = diph_len[d.code]; avpitch = average_pitch(diph_offs[d.code], slen); maxwin = avpitch + MAX_STRETCH; maxwin = (pitch > maxwin) ? maxwin : pitch; if (maxwin >= max_frame) shriek(461, "pitch too large"); origlen = avpitch * slen * d.t / 100; newlen = pitch * slen; 95 hamkoe(2 * maxwin + 1, wwin, d.e, 100); skip = 1; reply = 1; if (newlen > origlen) skip = newlen / origlen; if (origlen > newlen) reply = origlen / newlen; nlen = slen - (skip - 1) * slen / skip + (reply - 1) * slen; diflen = (newlen - origlen - (skip - 1) * slen * pitch / skip + (reply - 1) * slen * pitch) / nlen; for (j = 1; j <= diph_len[d.code]; j += skip) for (k = 0; k < reply; k++) { memcpy(out_buff + max_frame - pitch, out_buff + max_frame, pitch * sizeof(*out_buff)); memset(out_buff + max_frame, 0, max_frame * sizeof(*out_buff)); for (i = -maxwin;i <= maxwin; i++) { poms = tdp_buff[i + ppulses[diph_offs[d.code] + j - 1]]; poms = (t_samp)(wwin[i + pitch] * poms >> HAMMING_PRECISION); out_buff[max_frame + i] += poms; } /* lpc synthesis of F0 contour */ if (v->lpcprosody) { synf0 = 0; outf0 = 0; for (l = 0; l < 2 * pitch; l++) { sigpos++; if (!(sigpos % lppstep)) { // new pitch value into f0 output filter synf0 = 0; if (!(sigpos % lpestep)) { // new excitation value into recontruction filter synf0 = exc - lpfilt[0]*lp[0]; exc = 0; for (m = LP_F0_ORD - 1; m > 0; m--) { synf0 -= lp[m] * lpfilt[m]; lpfilt[m] = lpfilt[m-1]; } lpfilt[0] = synf0; } ofilt[0] = synf0; synf0 = 0; for (m = 1; m < F0_FILT_ORD; m++) ofilt[0] -= a[m] * ofilt[m]; outf0 = 0; for (m = 0; m < F0_FILT_ORD; m++) outf0 += b[m] * ofilt[m]; lppitch = (int)(v->samp_rate / (basef0 + outf0)); outf0 = 0; for (m = F0_FILT_ORD - 1; m > 0; m--) ofilt[m] = ofilt[m - 1]; } } } } } w->sample((SAMPLE *)out_buff + max_frame - pitch, pitch); difpos += diflen; if (difpos < -pitch) { if (reply == 1) j--; else k--; difpos += pitch; } if (difpos > pitch) { if (reply == 1) j++; else if (k == reply - 1) { j++; k = 1; } else k++; difpos -= pitch; } 96 8.7 Příloha G – Fonetická transkripce češtiny pro systém Epos Zjednodušená pravidla fonetické transkripce pro systém Epos (kompletní je možné najít v distribuci Eposu). # # # (c) Jirka Hanika <[email protected]> $voiced = $voiceless = # $fric # $afric # $stop $nasal = $NASAL = $sonant = $SONANT = $short = $long = $diphtong = $vowel = $VOWEL = $consonant = $everywhere= $numbers = $sonority = bdďgvzžZŽhř ptťkfsšcčxŘ = szšžfvhx = cZčŽ = ptťkbdďg mnňN MQŇW jlr$nasal JLR$NASAL aeiouuyěä áéíóúůýěöü OAE $short$long$diphtong AEIOUUYÁÉÍÓÚŮÝĚ $voiced$voiceless$sonant !_! 1234567890 0'<$voiceless$voiced$SONANT<$nasal<l<rj<$vowel $lower_case = aáäbcčdďeéěfghiíjklmnňoóöpqrřsštťuúůüvwxyýzž $upper_case = AÁÄBCČDĎEÉĚFGHIÍJKLMNŇOÓÖPQRŘSŠTŤUÚŮÜVWXYÝZŽ $letter = ${lower_case}${upper_case} # Ošetření německých přehlásek ÄÖ>E(!_!) Ü>Y(!_!) progress progress # # # # \d už vydělil parser, provizorně jako znak slovní úrovně. Úseky mezi výskyty tohoto znaku (např. tečka v URL) se hláskují, pokud neobsahují samohlásku nebo slabikotvornou souhlásku. Tato pravidla se mohou chovat nerozumně v kombinaci s velkými písmeny. inside \d { regress 0>\d(!_0) } regress \d>\ (!_!) if { word word word roman @include "../slovak/roman.rul" } regex /^([vVsSzZkK][~\ ]\{0,2\})\$/\W\1/ regress lr>\X\Y(0_!) near *!\Wlr$vowel$VOWEL word phone { regress ${lower_case}\X\Y>${upper_case}LR(!_!) subst abbrurl.dic } regress \W>0(!_!) regress \X\Y>lr(0_!) word word # Pravidla pro čtení zkratek apod.: velké písmeno na jiném, # než prvním místě ve slově indikuje zkratku a hláskuje se. # Stejně tak jednotlivé písmeno před nebo za cifrou nebo # speciálním znakem nebo hláskovanou částí slova. regress ${upper_case}>${lower_case}(!letter_${lower_case}) regress ${upper_case}>${lower_case}(0_${lower_case}) regress ${lower_case}>${upper_case}(0_!${lower_case}) regress ${lower_case}>${upper_case}(!${lower_case}_!$letter) if spellout { regex /^([^\Y\ ~]*)(.\?)\$/\1\Y\1\2/ progress ${lower_case}>${upper_case}(\Y${upper_case}_!) regex /\Y/./ } subst abbrevs.dic regress ${upper_case}>${lower_case}($everywhere) @include "numerals.rul" subst main.dic progress progress progress ; Různé výjimky äö>e(!_!) ü>y(!_!) ů>ú($everywhere) 97 word colon colon colon word text colon colon 0>s(x_!) u0>0v(q_!) xq>k($everywhere) h>x(c_!) zž>ZŽ(d_!) cd>0(!_xZŽ) h>x(s_!) progress progress regress regress regress progress progress ; Rozložení x,q na ks, kv ; Spřežka ch > x ; Spřežky dz,dž > Z,Ž ; Pražské sh # Následující pravidla jednak změní věty vydělené dvojtečkou # na věty vydělené tečkou (to je spíše špatně než dobře), # dále pak označí dvojtečkou (místo otazníku) ty věty, které # obsahovaly ve své první klausi některé ze slov uvedených # ve slovníku wh.dic, neměly tuto klausi zvlášť vydělenou # žádnou interpunkcí, a byly samy vyděleny otazníkem. # # Fonetik vidí, že jsem právě "definoval" doplňovací otázky. progress subst raise progress raise progress progress progress :>.($everywhere) wh.dic Q:_ Q>_(!0_!) Q:? Q>0($everywhere) Q>_($everywhere) Q>:($everywhere) if { colloquial regress j>J(0_ds) text sent ; Doplňovací otázky colon phone sent colon ; jen v první klausi sent colon ; úklid všech úrovní sent colon text sent ; fixme: random environment } i>j($vowel_0) syll.dic 0>'(0_$vowel) regress subst regress with preps.dic { regress _\ ~>P(!_!) } with "se" { regress _\ ~>P(!_!) } regress P>\ (!_P) _\ ~>F(!_0) regress progress progress progress inside P { prep } progress 0>S(!S_szšž) S>0(!_!0) 0>S(0_s) syll ; Rozsadit vokály ; Rázy word word word word word word ; "se" nesmí být v preps.dic colon word ; dvě předložky za sebou colon word colon word colon "Sse,se seS,se SseS,se" ; "se" jako předložka S>0($everywhere) inside P { prep preps.dic } progress P>\ ($everywhere) word word word regress regress regress regress regress b>0(!_b) n>0(!_nň) s>0(!_s) t>0(!_t) f>0(!_f) syll syll syll syll syll progress ř>Ř($voiceless_!0) syll regress syll regress $sonant>$SONANT(0_!) $sonority syll $SONANT>$sonant(!_!) syll nonsyl.dic prep # postp ; "S" jen před hranicí slov, za níž je sykavka ; "S" před první hláskou v klausi word ; pochybný heuristický odstaveček ; namířený proti geminátám ; je už zde kvůli "k řízení [gřízeňí]" "křeč [kŘeč]" ; Rozklad_na_slabiky syll postps.dic ; jednou by se mělo vrátit regress h>0(t_!) ; pathologie, plethora, thanatos. Pochybné. regress regress $voiced>${voiceless}(!_$voiceless&0') $voiceless>$voiced(!_$voiced!v) colon ; Asimilace znělosti if { colloquial subst casual.dic 98 regress J>0(!_!) regress '>v(!_o) ; "okno" [vokno] } regress regress regress regress regress 0>n(m_ě) dtn>ďťň(!_iíě) ě>e(ďťň_!) 0>j(!_ě) ě>e($everywhere) progress yý>ií($everywhere) progress progress progress tkfslmn>TKFSLMN(i_0) i>j(oae_TKFSLMN) TKFSLMN>tkfslmn(!_!) progress n>N(!_kg) progress progress w>u($vowel_$consonant&0) w>v($everywhere) ; většinou ale "w" odstraní výjimky, řekněme ; zde bývala eliminace geminát ; zde býval rozklad na slabiky progress regress if { oae>OAE(!_u) u>0(OAE_!) syll syll ; Dvojhlásky !voiced_affrs regress regress regress ; toto by mělo přijít do inventáře (traditnl.dph); ; rozkládá se zde dz, dž (representované Z,Ž) ; na d-z, d-ž, pokud následuje vokál. ZŽ>DĎ(!_$vowel) 0>d(!_DĎ) DĎ>zž(!_!) } # Následující odstavec má za cíl označit všechny otevřené slabiky tildou. # Ve zavřených slabikách se objeví příznak "C" (coda), ten se pak posune # do slabičné úrovně, tam se pak nezavřené slabiky prohlásí za otevřené # a pak už je možno C odstranit z hláskové i slabičné úrovně. $syllabic = !0$vowel_!0$vowel progress progress progress progress raise progress progress progress 0>C($vowel_!0) syll $sonant>$SONANT($syllabic) 0>C($SONANT_!) syll $SONANT>$sonant($everywhere) C:! syll _|>~($everywhere) word C>_($everywhere) word C>0($everywhere) syll ; syllabic consonant (environment) ; C za nekoncovou samohlásku syll ; C za slabikotvornou sonoru syll ; posuň "C" do slabičné úrovně syll syll phone 99 8.8 Příloha H – Modelování prozodie češtiny pro systém Epos podle pravidel Prof. Palkové Pravidla modelování prozodie češtiny pro systém Epos zapsané J. Hanikou podle podkladů Prof. Palkové. # # # # # # # # # # # # # # # # # # prosodická pravidla Fonetického ústavu FF UK pro češtinu, 1998 (c) 1998 (c) 1998 Tento soubor vznikl na základu výzkumu modelování prosodie češtiny uskutečněného s přispěním grantu GAČR 405/96/0301. (See doc/COPYING for information on copying and modifying this file.) Následující odstavec pečuje o to, aby dříve označené krátké tvary zájmenné byly zapojeny do řetězů monosylab při pozdějším skládání taktů, ale jiná koncová monosylaba nikoli. Děje se tak ještě před transkripcí zejména proto, abychom poznali "mě" vs. "mně". regress ~_\ >f(!_0) colon inside !~ { regress } regress # # # # # # < Zdena Palková Jirka Hanika f>\ (!_!) ~>\ (!_!) word word colon word word Nyní si označíme mono-, di-, tri-, tetra-, polysyllaba. Děje se tak jen v taktech ukončených mezerou (ta je zvýrazněna předcházejícím zvráceným lomítkem), tedy nikoli v koncových taktech. Viz též minulý komentář. word syll regress \ regress \ regress \ regress \ regress \ >m(!_!) >d(!_!) >t(!_!) >q(!_!) >p(!_!) word word word word word word word word word word > # # # # # # # # # # # # # # # # # # # # Monosylaba se v určitých pozicích označí jako přízvučná ("x") a vzápětí jsou ve všech ostatních pozicích, kde zůstala označena jako "m", přilepena ke svému levému sousedu. Počáteční stříška znamená začátek úseku. (V pravidlech 4.6 sub f nesouhlasí příklad s formulacemi pravidel. Doporučuji zkontrolovat.)... Je důležité, že u pravidel, která pracují se seznamem řetězců, jako je například následující, nezáleží na pořadí položek v seznamu. Jde-li o pravidlo substituční, provádějí se substituce (přednostně v pravé části zpracovávaného textu a delší, je-li pochybnost) opakovaně tak dlouho, dokud se text neustálí, nebo dokud program neztratí trpělivost (s věčně zacykleným pravidlem). Nakonec se zamete (všechny dočasné značky se smažou). Při téže příležitosti zanikne značka \X, která případně blokovala zapojení taktu do tohoto přilepování. subst "^mmmmm,mmmxm subst "pmm,pxm qmmm,qxmm pmmm,pxmm tmmmm,tmmxm qmmmm,qxmxm dmmmmm,dmmxmm tmmmmm,tmmxmm qmmmmm,qxmxmm pmmmmm,pxmmxm dmmmmmm,dmmxmmm tmmmmmm,tmmxmmm qmmmmmm,qxmmxmm pmmmmmm,pxmmxmm dmmmmmmm,dmmxmmxm tmmmmmmm,tmmxmmxm qmmmmmmm,qxmmmxmm pmmmmmmm,pxmmmxmm mmmmmmmm,mmmmxmmm" colon word postp "m" regress word ^mmmmmm,mmmxmm ^mmmmmmm,mmmmxmm" colon word word mdtqpxf\X>\ (!_!) word word # # zkracování isolovaných a ostatních taktů podle počtu slabik - ipcz # regress inside { _\ >I(0_0) sent I word ; isolated words 100 < > } inside { < > } regress # # # # word word word word word word word word word word word word word word word word word word word word word word !I word syll contour t/+8 contour t/+0 contour t/-5 contour t/-8 contour t/-10 I>_(!_!) sent word Právě jsme přestali "I" používat k označení isolovaných taktů a začneme ho používat k označení taktů iniciálních. regress regress # # # # # # word syll contour t/+33 contour t/+0 contour t/-15 contour t/-25 contour t/-31 contour t/-33 _\ F>M(!_!) M>I(0_!) colon colon word word Rozdělíme M na A a B podle toho, zda budeme chtít kadenci klesavou nebo stoupavou. Označování se děje zleva: IMMMMMF -> IBMMMMF -> IBAMMMF -> IBACMMF -> -> IBACBMF -> IBACBAF a pak dalšími pravidly -> IBABBBF subst "IM,IB BM,BA regress C>B(!_!) AM,AC CM,CB" colon word regress IAB>F(!_0) colon regress A>B(!_F) colon # regress IAB>aab(!_ab) colon regress F>T(!_0) sent word word word word colon word ; a,b: F (kA, kB) ; O,P: F-1 (kA, kB) ; ?? # Toto pravidlo je nejspíš reliktem minulosti #with postp2.dic colon word #{ # regress FT>M(!_!) colon word #} # # # Nyní máme označeny takty I, M, P, F, T ( = FF) a přiřazeny kadence. # # # # # při přiřazování kadencí se hodnota přiřazená slabice vztahuje na všechny její hlásky v použitém slabičném členění inside { < IaA word word { } [ syll ; tzn. zařiď se dle počtu slabik v taktu ; monosylaba se rozdělují ;regress 0>a(a_!) syll phone ;syll a<'0$consonant syll phone ;inside $vowel phone ; contour t/-50 phone ;[ ; contour f/+2:-3 word syll ; contour f/+2:-2 word syll ; contour f/+0:+0 word syll ; contour f/-2:-2 word syll ;] ; disyllaba word syll word syll word syll contour contour contour f/+2:-3 f/+4:-4 f/-3:-3 contour contour contour contour contour contour contour ; trisyllaba f/+2:+0:-4 word syll f/+2:-2:-4 word syll f/+4:+0:-4 word syll f/-2:-2:-6 word syll f/+0:-4:-4 word syll f/-4:+4:-6 word syll syll f/-4:+0:-4 word ] [ 101 contour f/-2:-3:-3 word contour contour contour contour ; tetrasyllaba f/+0:+0:-2:-3 word f/-2:-2:-5:-5 word f/-3:+0:-2:-3 word f/+0:+0:-1:-1 word contour contour contour ; pentasyllaba f/-2:+0:-2:-3:-3 word f/-3:+0:+0:+0:-3 word f/-2:+0:+0:+0:-2 word contour f/-2:+0:-1:-1*:-2:-3 ] [ ] [ ] [ syll syll syll syll syll syll syll syll word syll ] } > inside { < Y word { } [ word syll ; tzn. zařiď se dle počtu slabik v taktu ; monosylaba se ignorují ; disyllaba word syll word syll contour contour f/+4:-4 f/-3:-3 contour contour contour ; trisyllaba f/-4:+4:-6 word syll f/-4:+0:-4 word syll f/-2:-3:-3 word syll contour contour ; tetrasyllaba f/-3:+0:-2:-3 word syll f/+0:+0:-1:-1 word syll contour ; pentasyllaba f/-2:+0:+0:+0:-2 word ] [ ] [ ] [ ] nothing } ; F A - never used syll ; hexasyllaba a delší se neřeší > inside { < bB word { word syll ;regress 0>a(a_!) syll phone ;syll a<'0$consonant syll phone ;inside $vowel phone ; contour t/-50 phone ;[ ; contour f/-1:+1 word syll ; contour f/-2:+2 word syll ; contour f/-2:+3 word syll ;] } [ contour contour contour ; disyllaba f/-4:+2 word f/-5:-1 word f/-3:+4 word syll syll syll contour contour contour contour contour contour contour f/+0:-4:+0 f/+0:-6:-2 f/-6:-2:+0 f/-1:+3:+5 f/-6:-6:+0 f/-6:+4:+0 f/-4:+2:+4 syll syll syll syll syll syll syll contour contour contour f/+0:-3:-2:+0 f/-4:-4:-2:+2 f/+0:-3:+0:+2 contour contour contour f/+0:-3:-2:+0:+1 f/+1:-1:-1:-1:+1 f/-2:-2:+0:+2:+2 contour contour f/+0:-1:-1:-2*:-1:+0 f/+0:-2:-1:+0*:+1:+2 ] [ ] [ ] [ ] [ word word word word word word word word word word syll syll syll word word word syll syll syll word word syll syll 102 } > ] inside F word { contour f/-2 word word < word syll { ;regress 0>a(a_!) syll phone ;syll a<'0$consonant syll phone ;inside $vowel phone ; contour t/-50 phone ;[ ; contour f/+2:-2 word syll ; contour f/+0:+0 word syll ; contour f/-2:-2 word syll ; contour f/-2:+2 word syll ; contour f/-2:+3 word syll ;] } [ ; disyllaba contour f/-5:-1 word syll contour f/-3:+4 word syll contour f/+4:-4 word syll contour f/-3:-3 word syll ] [ contour f/-6:-6:+0 word syll contour f/-6:+4:+0 word syll contour f/-4:+2:+4 word syll contour f/-4:+4:-6 word syll contour f/-4:+0:-4 word syll contour f/-2:-3:-3 word syll ] [ contour f/-4:-4:-2:+2 word syll contour f/+0:-3:+0:+2 word syll contour f/-3:+0:-2:-3 word syll contour f/+0:+0:-1:-1 word syll ] [ contour f/-2:-2:+0:+2:+2 word syll contour f/-2:+0:+0:+0:-2 word syll ] [ contour f/-2:+0:-1:-1*:-2:-3 word syll ; pravidla zde mají prázdnou nabídku :-) ] > } inside ? sent { regress T>Q(!_!) } word word inside T word; soubor C { contour f/+2 word word < word syll { ;regress 0>a(a_!) syll phone ;syll a<'0$consonant syll phone ;inside $vowel phone ; contour t/-50 phone ;[ ; contour f/-4:-14 word syll ; contour f/+2:-14 word syll ; contour f/-12:-14 word syll ; contour f/-2:-16 word syll ;] } [ contour f/-6:-16 word syll contour f/-4:-14 word syll contour f/-2:-14 word syll contour f/+2:-14 word syll ] [ contour f/-4:-9:-14 word syll contour f/-4:-6:-14 word syll contour f/-6:-10:-14 word syll contour f/-6:-16:-18 word syll ] [ 103 contour contour contour f/-4:-10:-12:-14 f/-2:-4:-8:-14 f/-2:-10:-14:-16 contour contour contour f/-2:-2:-4:-8:-14 f/-2:-10:-12:-14:-16 f/-2:-4:-12:-14:-16 contour contour contour f/-2:-2:-4:-8:-14* f/-2:-10:-12:-14:-16:-18* f/-2:-4:-12:-14:-16:-18* ] [ ] [ } > word word word syll syll syll word word word syll syll syll word word word syll syll syll ] inside Q word ; soubor D { contour f/-2 word word < word syll { ;regress 0>a(a_!) syll phone ;syll a<'0$consonant syll phone ;inside $vowel phone ; contour t/-50 phone ;[ ; contour f/-14:+2 word syll ; contour f/-14:+6 word syll ;] } [ contour f/-6:+4 word syll contour f/-10:+14 word syll ] [ contour f/-8:-6:+4 word syll contour f/-8:+2:+1 word syll ] [ contour f/-6:-6:-7:+5 word syll contour f/-6:+6:+6:+3 word syll ] [ contour f/-6:-6:-7:-8:+5 word syll contour f/-8:+7:+7:+3:+1 word syll ] [ contour f/-6:-6:-7:-8*:+5 word syll contour f/-8:+7:+7:+5*:+3:+1 word syll ] > } # # # < úseková deklinace frekvence (zatím jen do 11 taktů v úseku) colon word 3x nothing contour contour contour contour contour contour contour contour contour nothing ; tzn. zařiď se dle počtu taktů v promluvovém úseku ; jeden až tři takty se neupravují f/0:-1:-2:-3 colon word f/0:-1:-2:-3:-4 colon word f/0:-1:-2:-3:-4:-5 colon word f/0:-1:-2:-3:-4:-5:-6 colon word f/0:-1:-2:-3:-4:-5:-6:-7 colon word f/0:-1:-2:-3:-4:-5:-6:-7:-8 colon word f/0:-1:-2:-3:-4:-5:-6:-7:-8:-9 colon word f/0:-1:-2:-3:-4:-5:-6:-7:-8:-9:-10 colon word f/0:-1:-2:-3:-4:-5:-6:-7:-8:-9:-10:-11 colon word > # # # < větná deklinace frekvence (zatím jen do 9 úseků ve větě) sent colon 2x nothing contour contour contour contour contour contour contour nothing ; tzn. zařiď se dle počtu promluvových úseků ve větě ; jeden až dva takty se neupravují f/0:-2:-4: sent colon f/0:-2:-4:-6 sent colon f/0:-2:-4:-6:-8 sent colon f/0:-2:-4:-6:-8:-10 sent colon f/0:-2:-4:-6:-8:-10:-12 sent colon f/0:-2:-4:-6:-8:-10:-12:-14 sent colon f/0:-2:-4:-6:-8:-10:-12:-14:-16 sent colon > 104 8.9 Příloha I – Modelování prozodie češtiny pro systém Epos pomocí lineárně predikčního modelu Výpis pravidel pro buzení lineárně predikčního prozodického modelu pro modelování prozodie češtiny v systému Epos. # # # # # # # # # # # # # # # # # prosodická pravidla pro modelování průběhu základního tónu pomocí lineárně predikčního modelu (trvání dle Fonetického ústavu FF UK pro češtinu, 1998) (c) 1998-2002 (c) 1998-2002 (c) 1998 Následující odstavec pečuje o to, aby dříve označené krátké tvary zájmenné byly zapojeny do řetězů monosylab při pozdějším skládání taktů, ale jiná koncová monosylaba nikoli. Děje se tak ještě před transkripcí zejména proto, abychom poznali "mě" vs. "mně". regress ~_\ >f(!_0) inside !~ { regress } regress # # # # # # < Petr Horák Jirka Hanika Fonetický ústav FF UK f>\ (!_!) ~>\ (!_!) colon word word word colon word Nyní si označíme mono-, di-, tri-, tetra-, polysyllaba. Děje se tak jen v taktech ukončených mezerou (ta je zvýrazněna předcházejícím zvráceným lomítkem), tedy nikoli v koncových taktech. Viz též minulý komentář. word syll regress \ regress \ regress \ regress \ regress \ >m(!_!) >d(!_!) >t(!_!) >q(!_!) >p(!_!) word word word word word word word word word word > # # # # # # # # # # # # # # # # # Monosylaba se v určitých pozicích označí jako přízvučná ("x") a vzápětí jsou ve všech ostatních pozicích, kde zůstala označena jako "m", přilepena ke svému levému sousedu. Počáteční stříška znamená začátek úseku. Je důležité, že u pravidel, která pracují se seznamem řetězců, jako je například následující, nezáleží na pořadí položek v seznamu. Jde-li o pravidlo substituční, provádějí se substituce (přednostně v pravé části zpracovávaného textu a delší, je-li pochybnost) opakovaně tak dlouho, dokud se text neustálí, nebo dokud program neztratí trpělivost (s věčně zacykleným pravidlem). Nakonec se zamete (všechny dočasné značky se smažou). Při téže příležitosti zanikne značka \X, která případně blokovala zapojení taktu do tohoto přilepování. subst "^mmmmm,mmmxm subst "pmm,pxm qmmm,qxmm pmmm,pxmm tmmmm,tmmxm qmmmm,qxmxm dmmmmm,dmmxmm tmmmmm,tmmxmm qmmmmm,qxmxmm pmmmmm,pxmmxm dmmmmmm,dmmxmmm tmmmmmm,tmmxmmm qmmmmmm,qxmmxmm pmmmmmm,pxmmxmm dmmmmmmm,dmmxmmxm tmmmmmmm,tmmxmmxm qmmmmmmm,qxmmmxmm pmmmmmmm,pxmmmxmm mmmmmmmm,mmmmxmmm" colon word postp "m" regress word ^mmmmmm,mmmxmm ^mmmmmmm,mmmmxmm" colon word word mdtqpxf\X>\ (!_!) word word # # zkracování izolovaných a ostatních taktů podle počtu slabik dle FÚ FF UK # regress _\ >I(0_0) inside I { < word syll contour t/+33 contour t/+0 sent word ; izolované takty word word word word 105 t/-15 t/-25 t/-31 t/-33 word word word word word word word word word syll contour t/+8 contour t/+0 contour t/-5 contour t/-8 contour t/-10 word word word word word word word word word word contour contour contour contour > } inside { < > } regress # # # # I>_(!_!) sent word Právě jsme přestali "I" používat k označení isolovaných taktů a začneme ho používat k označení taktů iniciálních. regress regress # # # # # # !I _\ F>M(!_!) colon M>I(0_!) colon word word Rozdělíme M na A a B podle toho, zda budeme chtít kadenci klesavou nebo stoupavou. Označování se děje zleva: IMMMMMF -> IBMMMMF -> IBAMMMF -> IBACMMF -> -> IBACBMF -> IBACBAF a pak dalšími pravidly -> IBABBBF subst "IM,IB BM,BA AM,AC CM,CB" regress C>B(!_!) colon word regress regress regress IAB>F(!_0) colon A>B(!_F) colon F>T(!_0) sent colon word word word word ; a,b: F (kA, kB) # # Označení konců otázek doplňovacích # inside : sent { regress T>D(!_0) sent } word # # # Nyní máme označeny takty I, M, P, F, T a D a přiřazeny kadence. # # # # # při přiřazování kadencí se hodnota přiřazená slabice vztahuje na všechny její hlásky v použitém slabičném členění # # označení začátku věty pro syntezátor # inside { .:! sent contour i/1000:0* sent phone } # # Slabičné buzení iniciálních a mediálních taktů # inside { < IaA word word { } [ syll ; contour f/+5:0 ; disyllaba word syll contour f/+8:0:0 ; trisyllaba word syll contour f/+10:0:0:0 ; tetrasyllaba word syll ] [ ] [ ] [ ; tzn. zařiď se dle počtu slabik v taktu ; monosylaba ; pentasyllaba 106 contour f/10:0:0:0:0 word syll contour f/10:0:0:0*:0:0 word syll ] [ ] } > # # Slabičné buzení mediálních taktů # inside { < bB word { word syll ; } [ f/30:0 f/15:0 f/-10:0 contour contour contour f/+35:-5:+0 f/+17:-5:+0 f/-17:-5:+0 contour contour contour f/+45:-5:0:+0 f/+20:-5:0:+0 f/-20:-5:0:+0 word word word syll syll syll contour contour contour f/+45:-5:0:+0:+0 f/+20:-5:0:+0:+0 f/-20:-5:0:+0:+0 word word word syll syll syll contour contour contour f/+45:-5:0:0*:0:+0 f/+20:-5:0:0*:0:+0 f/-20:-5:0:0*:0:+0 ] [ ] [ ] [ ] [ } > ; disyllaba word syll word syll word syll contour contour contour word word word syll syll syll word word word syll syll syll ] # # Slabičné buzení posledního taktu intonačního úseku # inside F word { contour f/-5 word word < word syll { ; } [ ; disyllaba contour f/-10:0 word syll ] [ contour f/-12:-6:+0 word syll contour f/-20:-6:+0 word syll ] [ contour f/-15:-8:0:0 word syll contour f/-25:-8:0:0 word syll ] [ contour f/-16:-10:+0:+0:+0 word syll contour f/-30:-10:+0:+0:+0 word syll ] [ contour f/-20:+0:-0:-0*:-4:-0 word syll contour f/-30:+0:-0:-0*:-0:-0 word syll ] > } inside ?J sent { regress T>Q(!_!) } word word # # Slabičné buzení posledního taktu oznamovací věty # 107 inside T word { contour f/+5 word word < word syll { ; } [ contour f/-25:-50 word syll contour f/-50:-60 word syll ] [ contour f/-25:-20:-50 word syll contour f/-50:-30:-60 word syll ] [ contour f/-25:-15:-15:-50 word syll contour f/-50:-20:-20:-60 word syll ] [ contour f/-25:-12:-12:-17:-50 word syll contour f/-50:-17:-17:-25:-60 word syll ] [ contour f/-25:-10:-10:-10*:-15:-50 word syll contour f/-50:-15:-15:-15*:-20:-60 word syll ] > } # # Slabičné buzení posledního taktu otázky doplňovací # inside D word { contour f/+5 word word < word syll { ; } [ contour f/-15:0 word syll contour f/+15:0 word syll ] [ contour f/-15:0:0 word syll contour f/+15:0:0 word syll ] [ contour f/-15:0:0:0 word syll contour f/+15:0:0:0 word syll ] [ contour f/-15:0:0:0:0 word syll contour f/+15:0:0:0:0 word syll ] [ contour f/-25:0:0:0*:0:0 word syll contour f/+25:0:0:0*:0:0 word syll ] > } # # Slabičné buzení posledního taktu otázky zjišťovací # inside Q word { contour f/-5 word word < word syll { ; } [ contour f/50:0 word syll ] [ contour f/60:0:0 word syll contour f/30:30:0 word syll ] [ contour f/-10:60:0:0 word syll contour f/-10:30:30:0 word syll ] [ contour f/-10:0:60:0:0 word syll 108 contour f/-10:0:30:30:0 word syll contour contour f/-10:0*:60:0:0 f/-10:0*:30:30:0 word word syll syll ] [ } > ] # # Slabičné buzení začátku otázky doplňovací # inside { < : [ sent sent syll contour f/50 contour f/-30:70 contour f/-30:70:-10 contour f/-30:70:-10:0 sent syll contour f/-30:70:0:-10:+5 sent syll contour f/-30:70:0:-10:*:+5 ] [ ] [ ] [ ] [ ] [ } # # # < > sent syll sent syll sent syll sent syll ] Buzení úsekové deklinace frekvence (do 11 taktů v úseku) colon word 3x nothing contour contour contour contour contour contour contour contour contour nothing ; tzn. zařiď se dle počtu taktů v promluvovém úseku ; jeden až tři takty se neupravují f/0:-5:-5:-5 colon word f/0:-5:-5:-5:-5 colon word f/0:-5:-5:-5:-5:-5 colon word f/0:-5:-5:-5:-5:-5:-5 colon word f/0:-5:-5:-5:-5:-5:-5:-5 colon word f/0:-5:-5:-5:-5:-5:-5:-5:-5 colon word f/0:-5:-5:-5:-5:-5:-5:-5:-5:-5 colon word f/0:-5:-5:-5:-5:-5:-5:-5:-5:-5:-5 colon word f/0:-5:-5:-5:-5:-5:-5:-5:-5:-5:-5:-5 colon word > # # # < Buzení větné deklinace frekvence (do 9 úseků ve větě) sent colon 2x nothing contour contour contour contour contour contour contour nothing ; tzn. zařiď se dle počtu promluvových úseků ve větě ; jeden až dva takty se neupravují f/0:-10:-10: sent colon f/0:-10:-10:-10 sent colon f/0:-10:-10:-10:-10 sent colon f/0:-10:-10:-10:-10:-10 sent colon f/0:-10:-10:-10:-10:-10:-10 sent colon f/0:-10:-10:-10:-10:-10:-10:-10 sent colon f/0:-10:-10:-10:-10:-10:-10:-10:-10 sent colon > 109 8.10 Příloha J – Popis přiloženého disku CD-ROM Pro spuštění přiloženého disku CD-ROM je nutné vložit jej do mechaniky a spustit soubor index.html. Na disku CD-ROM se nacházejí tyto adresáře: epos matlab poslech sstudio vetydis wavedit text - TTS systém Epos verze 2.4.79 s implementovaným lineárně predikčním intonačním modelem - vytvořené procedury a funkce v prostředí Matlab - zvukové soubory pro porovnání modelování prozodie - programový systém SpeechStudio - prozodická databáze (možno prohlížet pomocí SpeechStudia) - Linuxový klon systému SpeechStudio - text této práce Všechny soubory na přiloženém disku CD-ROM jsou k dispozici rovněž na internetové adrese http://epos.ure.cas.cz/dizertace. 110 9 Přehled literatury [BOR67] Borovičková, B., Maláč, V.: The Spectral Analysis of Czech Sounds Combinations. Rozpravy ČSAV, řada společenských věd, 77, č. 14. Academia, Praha 1967. [ČÍŽ81] Čížek, V.: Diskrétní Fourierova transformace a její užití. SNTL, Praha 1981. [DAN57] Daneš, F.: Intonace a věta ve spisovné češtině. Studie a práce lingvistické, č. 2, ČSAV, Praha 1957. [DUT97] Dutoit, T.: An Introduction to Text-to-Speech Synthesis. Kluwer Academic Publishers, Dodrecht 1997. [DOH91] Dohalská, M.: Dynamika verbální komunikace - mluvené slovo v teorii a praxi. AUC, Philologica, monografia CXIV - 1991. UK, Praha 1991. [EPOS] The Epos home page http://epos.ure.cas.cz/ or http://www.speech.cz/ . [FAN60] Fant, G.: Acoustic Theory of Speech Production. Mouton, The Hague, 1960. [GON98] Goncharoff, V., Gries, P.: An Algorithm for Accurately Marking Pitch Pulses in Speech Signals. In: Proceedings 1998 IASTED International Conference on Signal and Image Processing, Las Vegas NV, October 1998. [HÁL75] Hála, B.: Fonetika v teorii a v praxi. SPN, Praha 1975. [HAN98a] Hanika, J., Horák, P.: Implementation of Original Czech TTS System on the Epos Speech Synthesis Platform. In: 8th Czech-German Workshop Speech Processing, September 14–16, 1998, Prague, pp. 45–46. [HAN98b] Hanika, J., Horák, P: Epos – A New Approach to the Speech Synthesis. In: Proceedings of the First Workshop on Text, Speech and Dialogue – TSD’98, Brno, Czech Republic, September 23–26, 1998, pp. 51– 54. [HAN99] Hanika, J, Horák, P.: Text to Speech Control Protocol. In: Proc of the Int. Conf. Eurospeech’99, Budapest, Hungary, September 5–9, 1999, Vol. 5, pp. 2143–2146. [HAN00] Hanika, J., Horák, P.: Dependences a Independences of Text-to-Speech. In: Papers in Phonetics and Speech Processing, Forum Phoneticum 70, Z. Palková, H.-W. Wodarz (eds.), Frankfurt am Main, 2000, pp. 27–39. [HAN01] Hanika, J.: The Epos Speech System. User Documentation ver. 2.4. Available on the www page http://epos.ure.cas.cz/epos.html. [HEL96] Helbig, J., Horák, P.: Deutsch-Tschechische Sprachsynthese in einem Telefon-Auskunft-system. In: D. Mehnert (ed): Studientexte zur Sprachkommunikation No. 13-Elektronische Sprachsignalverarbeitung, Berlin, November 25–27, 1996, pp. 102–107. [HIR00] Hirst, D.: INTSINT (INTernational Transcription System for INTonation) homepage http://www.lpl.univ-aix.fr/~hirst/intsint.html . [HNŽ01] Hanžl, V., Batůšek, R., Matoušek, J. & others: Final Czech SAMPA Proposal (v1). Available on the www page http://noel.feld.cvut.cz/sampa/CZECH-SAMPA.html . [HOR96a] Horák, P.: Programový systém pro modelování prozodie. 580. kolokvium teorie obvodů, systémů a signálů, ÚRE AV ČR Praha, březen 1996. [HOR96b] Horák, P.: Prosody modelling software system. In: Proc. 6th Nat. Scient. Conf. Radioelektronika 96, Brno, April 23–24, 1996, pp. 317–319. [HOR96c] Horák, P., Mejvaldová, J.: Design and Application of the New Prosody Modelling System for Czech. In: 6th Czech-German Workshop Speech Processing, Prague, September 2–4, 1996, pp. 42–44. [HOR96d] Horák, P., Tučková, J., Vích, R.: New Prosody Modelling System for Czech Text-to-Speech. In: D. Mehnert (ed.) Studientexte zur Sprachkommunikation. No. 13. - Elektronische Sprachsignalverarbeitung, Berlin, November 25–27, 1996, pp. 102–107. [HOR97a] Horák, P.: Vyhlazování průběhu základního tónu řeči. 587. kolokvium teorie obvodů, systémů a signálů, ÚRE AV ČR Praha, leden 1997. [HOR97b] Horák, P.: Pitch frequency contour smoothing. In: Radioelektronika'97 Conference Proceedings, Slovak University of Technology in Bratislava, April 23–24, 1997, pp. 176–179. [HOR97c] Horák, P., Ptáček, M.: Czech Diphone Synthesis with the New Diphone Inventory. In: 7th CzechGerman Workshop Speech Processing, Prague, September 8–10, 1997, pp. 35–36. [HOR97d] Horák, P.: L’état actuel de la synthèse tchèque à partir du texte écrit. In: Deuxièmes Journées Jeunes Chercheurs en Parole, FLASH La Rochelle, November 14–15, 1997, pp. 27. [HOR98a] Horák, P., Hanika, J.: User Configurable Text-to-Speech System. In: Proc.of the 8th Nat. Scientific Conf. with Int. Participation Radioelektronika’98, Brno, Czech Republic, April 28–29, 1998, pp. 212–215. 111 [HOR98b] Horák, P.: Modelování prozodie řeči pomocí lineární predikce. 600. kolokvium teorie obvodů, systémů a signálů, ÚRE AV ČR Praha, červen 1998. [HOR98c] Horák, P.: New Approaches in Czech Prosody Modelling. In: Proc. of the 14th Biennial Internat. Conf. Biosignal 98, Brno, June 23-25, 1998, pp. 203–205. [HOR98d] Horák, P., Hanika, J.: Design of a Multilingual Speech Synthesis System. In: Sprach-kommunikation No. 152 , 9. Konferenz “Elektronische Sprachsignalverarbeitung”, Dresden, 31.8–2.9. 1998, pp. 127–128. [HOR98e] Horák, P., Vaškových, M.: New Czech Diphone Inventory Segmentation Software. In: 8th CzechGerman Workshop Speech Processing, Prague, September 14–16, 1998, pp. 50–52. [HOR98f] Horák, P.: The LPC Analysis and Synthesis of F0 Contour. In: A Workshop on TEXT, SPEECH and DIALOG TSD’98, Brno, Czech Republic, September 23–26, 1998, pp. 219–222. [HOR99a] Považanec, D., Horák, P., Fuchs, P.: Speech Synthesiser. In: Proc. of the 9th Nat. Scientific Conf. with Int. Participation Radioelektronika’99, Brno, Czech Republic, April 27–28, 1999, pp. 156–159. [HOR99b] Horák, P.: SpeechStudio – Speech Analysis Software System. In: Proc. of the 9th Nat. Scientific Conf. with Int. Participation Radioelektronika’99, Brno, Czech Republic, April 27–28, 1999, pp. 427–430. [HOR99c] Horák, P.: Lineárně prediktivní kódování průběhu F0. 609. kolokvium teorie obvodů, systémů a signálů, ÚRE AV ČR Praha, červen 1999. [HOR99d] Horák, P.: Automatic segmentation based on DTW with the application of the Czech TTS system. Lecture in: Management Committee of COST 258, Budapest, Hungary, September 10–11,1999. [HOR99e] Horák, P.: Automatic Speech Segmentation Using Czech TTS. In: 9th Czech-German Workshop Speech Processing, Prague, September 13–15, 1999, pp. 37–38. [HOR99f] Horák, P.: Software Tools for Prosody Reseach. In: Troisièmes Rencontres Jeunes Chercheurs en Parole RJC’99, Avignon, France, November 18–19, 1999. [HOR00a] Horák, P., Hesounová, A.: Automatic Speech Segmentation with the Application of the Czech TTS System. In: Proc. of the 3rd International Workshop Text, Speech and Dialogue – TSD 2000, Brno, September 13–16, 2000, Czech Republic, pp. 201–206. [HOR00b] Horák, P., Hesounová, A.: Měření trvání českých hlásek pomocí automatické segmentace řeči. 617. kolokvium teorie obvodů, systémů a signálů, ÚRE AV ČR, Praha, 14. 6. 2000. [HOR00c] Horák, P., Mejvaldová, J.: Software Tools in Czech Phonetic Research. In: Papers in Phonetics and Speech Processing, Forum Phoneticum 70, Z. Palková, H.-W. Wodarz (eds.), Frankfurt am Main, 2000, pp. 41–50. [HOR01a] Horák, P.: Automatic Speech Segmentation Based on DTW with the Application of the Czech TTS System. In: Improvements in Speech Synthesis, Ed. by E. Keller, G. Bailly, A. Monaghan, J. Terken & M. Huckwale, John Wiley & Sons, Ltd., 2001, pp. 328–338. [HOR01b] Horák, P., Hesounová, A.: Czech Triphone Synthesis of Female Voice. In: 11th Czech-German Workshop Speech Processing, (Ed.: Vích, R.), Prague, September 17–19, 2001, pp. 32–33. [HOR01c] Horák, P.: Modelování prozodie češtiny pomocí Fujisakiho modelu. 628. kolokvium teorie obvodů, systémů a signálů, ÚRE AV ČR, Praha, 24. 10. 2001. [IPA96] The International Phonetic Association: Reproduction of The International Phonetic Alphabet (Revised to 1993, Updated 1996) http://www2.arts.gla.ac.uk/IPA/ipachart.html . [ITA69] Itakura, F., Saito, S.: Speech Analysis-Synthesis System based on the Partial Autocorrelation Coefficients. In: Proc. of the Acoustical Society of Japan Meeting, 1969. [KEL94] Keller, E. (ed.): Fundamentals of Speech Synthesis and Speech Recognition. John Wiley & Sons Ltd., England, 1994. [KRK98] Krkoška, M., Tučková, J., Musil, V.: A Neural Net Architecture in Czech Text-to-Speech Synthesis. Proc. of 5th Electronic Devices and Systems Conference EDS’98, Brno, June 1998 pp. 359-361. [LER77] Leroux, J., Guegen, C.: A Fixed Point Computation of Partial Correlation Coefficients. In: IEEE Transactions on ASSP, June 1977, pp. 257-259. [MAL97a] Malfrère, F., Dutoit, T.: Speech Synthesis for Text-To-Speech Alignment and Prosodic Feature Extraction. Proc. ISCAS 97, Hong-Kong, pp. 2637–2640. [MAL97b] Malfrère, F., Dutoit, T.: High-Quality Speech Synthesis for Phonetic Speech Segmentation. In: Proc. EuroSpeech’97, Rhodes, Greece, pp. 2631–2634. [MAR76] Markel, J. D., Gray, A. H.: Linear Prediction of Speech. Springer, New York, 1976. [MATE] MATE: A homepage of the MATE project (Multilevel Annotation, Tools Engineering; Telematics Project LE4-8370) http://mate.nis.sdu.dk/ . 112 [MEN00] Mengel, A., Dybkjaer, L., Garrido, J. M., Heid, U., Klein, M., Pirrelli, V., Poesio, M., Quazza, S., Schiffrin, A., and Soria, C.: MATE Dialogue Annotation Guidelines. January 8, 2000, http://www.ims.unistuttgart.de/projekte/mate/mdag/ . [MER97] Mersdorf, J., Rinscheid, A., Brüggen, M., Schmidt, K. U.: Kodierung von Intonationsverläufen Mittels Linearer Prädiktion. In: Studientexte zur Sprachkommunikation, Achte Konferenz Elektronische Sprachsignalverarbeitung, Cottbus, 25.-27. August 1997, Germany, pp. 169–176; [MIX98] Mixdorff, H.:Intonation Patterns of German – Model-based Quantitative Analysis and Synthesis of F0 contours. PGS Thesis, Technische Universität Dresden, 1998. [MIX00] Mixdorff, H.: A Novel Approach to the Fully Automatic Extraction of Fujisaki Model Parameters. In: Proceedings of ICASSP 2000, Istanbul, Turkey, vol. 3, pp. 1281–1284. [MOU90] Moulines, E., Charpentier, F.: Pitch Synchronous Waveform Processing Techniques for Text-toSpeech Synthesis Using Diphones. Speech Communication, 1990, 9(5/6), pp. 453–467. [NOU97] Nouza, J., Psutka, J., Uhlíř, J.: Phonetic Alphabet for Speech Recognition of Czech. In: Radioengineering, 1997, Vol. 6, No. 4, pp. 16–19. ISSN 1210-2512. [NOU00] Nouza, J., Myslivec, M.: Methods and Application of Phonetic Label Alignment in Speech Processing Tasks. In: Radioengineering, 2000, Vol. 9, No. 4, pp. 1–7. [ÖHM67] Öhman, S.E.G.: Word and Sentence Intonation: A Quantitative Model. In: STL-QPSR 2-3, Royal Institute of Technology, Stockholm 1967, pp. 20–54. [OPP75] Oppenheim, A. V., Schaffer, R. W.: Digital Processing of Signals. Prentice Hall, New Jersey, 1975. [PAL94] Palková, Z: Fonetika a fonologie češtiny. Univerzita Karlova, vydavatelství Karolinum, Praha 1994. [PAL95] Palková, Z., Ptáček, M.: Prosodic Issues in Czech: An Application in TTS. In: Proceedings of the 13th International Congress of Phonetic Sciences ICPhS 95., Stockholm, Vol. 4, pp. 380–383. [PIE80] Pierrehumbert, J. B.: The Phonology and Phonetics of English Intonation. PhD thesis, MIT, 1980. [PŘI95] Přibil, J.: Pitch-synchronní syntezátor řeči s kepstrálními koeficienty. 1. medzinárodná konferencia o telekomunikačných technológiach Telekomunikácie 95. Sborník referátů II. díl – vědecká sekce, Bratislava 31.5. – 1.6. 1995, str. 124–129. [PŘI97] Přibil, J.: Použití kepstrálního modelu pro syntézu řeči. Dizertační práce ČVUT FEL, Praha 1997. [PTÁ92] Ptáček, M., Vích, R., Víchová, E.: Czech Text-to-Speech Synthesis by Concatenation of Parametric Units. In: Proc. URSI ISSSE'92, Paris, France, pp. 230–232. [PTÁ93] Ptáček, M.: Vybrané statě z akustiky řeči. Skriptum Fonetického ústavu FF UK, Praha 1993. [PTÁ95] Ptáček, M., Janota, P.: Speech sound quantity in isolated Czech words. In: Proc. of the 32nd Czech Conference on Acoustics, Prague 1995, pp. 67–70. [RAB78] Rabiner, L. R., Schaffer, R. W.: Digital Processing of Speech Signals, Prentice Hall, New Jersey 1978. [ROM85] Romportl, M.: Základy fonetiky (VŠ skripta). SPN, Praha 1985. [SAI92] Saito, S.: Speech Science and Technology. Ohmsha, Tokyo 1992. [SAK78] Sakoe, H., Chiba, S.: Dynamic Programming Algorithm Optimization for Spoken Word Recognition. In: IEEE Trans. on Acoustics, Speech and Signal Proc., Vol. ASSP-26, 1978, pp. 43–49. [SCH97] Schwarzenberg, M., Vích, R.: Robuste Grundfrequenzbestimmung durch Korrelationsanalyse im Frequenzbereich. In: Fortschritte der Akustik 21. Deutsche Jahrestagung für Akustik, DAGA 95, Saarbrücken, 13.–17.3.1995, Vol.II, pp. 1019–1022. [SIL92] Silverman, K., Beckman, M., Petrelli, J., Ostendorf, M., Wightman, C., Price, P., Pierrehumbert, J. and Hirschberg, J.: ToBI: A Standard for Labelling English Prosody. In: Proc. Int. Conf. On Spoken Language Processing ICSLP'92, Banff, Canada, 1992, pp. 867–870. [SMÉ98] Smékal, Z., Vích, R.: Zpracování signálů pomocí signálových procesorů. RADIX spol. s r.o., Praha 1998. [STR99] Strecha, G.: Automatic Segmentation of Speech Signal. Pre-diploma stay final report, IREE Academy of Sciences, Czech Republic, 1999 (in German). [ŠNO96] Šnorek, M., Jiřina, M.: Neuronové sítě a neuropočítače. Skriptum ČVUT, vydavatelství ČVUT, Praha 1996. [TOBI] ToBI homepage http://ling.ohio-state.edu/~tobi/ . [TUČ96] Tučková, J.: Comparison of Two Approaches in the Fundamental Frequency Control by Neural Nets. 6th Czech-German Workshop Speech Processing, September 2-4, 1996, Prague. 113 [TUČ97a] Tučková, J., Horák, P.: Fundamental Frequency Control in Czech Text-to-Speech Synthesis. Third Workshop on Electronic Control and Measuring Systems, Université Paul Sabatier, Toulouse, France, June 1997, pp.80–84. [TUČ97b] Tučková, J.: Influence of the Input Data on Neural Net F0 Training. 7th Czech-German Workshop Speech Processing, Prague, September 1997, p. 31. [TUČ97c] Tučková, J., Boreš, P.: The Neural Network Approach in Fundamental Frequency Control. Speech Processing: Forum Phoneticum (Ed.: Wodarz, H.-W.), Frankfurt am Main, Hector Verlag, 1997, pp.143– 154. [TUČ97d] Tučková, J.,Vích, R.: Fundamental Frequency Modelling by Neural Nets in Czech Text-to-Speech Synthesis. Proc.of the IASTED Int. Conf. "Signal and Image Processing-SIP'97, New Orleans, Louisiana, USA, December 1997, pp. 85–88. [TUČ98] Tučková, J.: Fundamental Frequency Control in TTS System. Proc. of 8th Int. Czech-Slovak Scientific Conf. Radioelektronika’98, Brno, April 1998. [TUČ99] J. Tučková, G. Strecha, Automatic Labelling of Natural Speech by Comparison with Synthetic Speech. In: Proc. of the 4th Int. Workshop on Electronics, Control, Measurement and Signals ECMS’99, Liberec, Czech Republic, May 31 - June 1, 1999, pp. 156–159. [UHL95] Uhlíř, J., Sovka, P.: Číslicové zpracování signálů. Vydavatelství ČVUT, Praha 1995. [VÍC83] Vích, R.: Transformace Z a některá její použití. Matematický seminář SNTL č. 15, Praha 1983. [VÍC94a] Vích, R., Horák, P., Víchová, E.: Experimente mit der Synthese der Frauenstimme. In: DAGA 94 20th Annual Conference on Acoustics, Dresden, March 14–17, 1994, Part C, pp. 1317–1320. [VÍC94b] Vích, R., Horák, P.: Spectral Smoothing of Voiced Speech Signals by Hidden Homomorphic Processing. In: 12th Internat. Conf. Biosignal’94, Brno, June 28–30, 1994, pp. 142–144. [VÍC95a] Vích, R.: Pitch Synchronous Linear Predictive Czech and Slovak Text-to-Speech Synthesis. In: Proc. of the 15th Internat. Congress on Acoustics, Trondheim, Norway, June 26–30, 1995, Vol. 3, pp. 181–184. [VÍC95b] Vích., R., Horák, P., Schwarzenberg, M.: Korrelation von Sprachsignalen im Zeit und Frequenzbereich. In: R. Hoffmann u. R. Ose (Hrsg): Sechste Konferenz Elektronische Sprachsignalverarbeitung, Wolfenbüttel, September 4.–6., 1995, pp. 10–13. [VÍC96a] Vích, R., Horák, P.: Text-to-Speech Conversion. History and Present State. In: Proc. 6th Nat. Scient. Conf. Radioelektronika 96, Brno, April 23–24, 1996, pp. 1–7 (Invited paper). [VÍC96b] Vích, R., Horák, P.: Text-to-Speech Conversion. History and Present State. In: Proc. of the 13th Biennial Internat. Conf. Biosignal 96, Brno, June 25–27, 1996, pp. 323–328 (Invited paper). [VÍC96c] Vích, R., Tučková, J.: Neural Network Application in Czech Text-to-Speech Synthesis. In: Proc. of the IASTED Int. Conf. Signal and Image Processing and Applications-SIPA’96, Annecy-France, June 1996, pp. 242–244. [WEL92] Wells, J.C., Barry, W., Grice, M., Fourcin, A., Gibbon, D.: Standard Computer-compatible Transcription. Esprit project 2589 (SAM), Doc. no. SAM-UCL-037. London, Phonetics and Linguistics Department, UCL, 1992. [WEL00] Wells, J.C.: SAMPA – computer readable phonetic alphabet http://www.phon.ucl.ac.uk/home/sampa/home.htm . [WIT82] Witten, I. H.: Principles of Computer Speech. Academic Press, London 1982. 114 10 Rejstřík K kadence, 21 konkluzívní, 22 kategorie hlásek, 63 vět, 80 koeficienty kepstrální, 60 lineárně predikční, 60 váhovací, 61, 62 korpus. viz. databáze řečová prozodický, 59, 80 A algoritmus DTW, 59, 61 Leroux-Guegenův, 41 Levinson-Durbinův, 31 označování pitchpulsů, 42 antikadence, 22 stoupavá, 22 stoupavě klesavá, 23 aproximace zbytkového signálu, 53 D databáze řečová, 59, 110 decimace, 40 detektor základního tónu, 41 L lineární predikce, 8, 13, 18, 29, 30, 33, 37, 40, 41, 42, 43, 44, 55, 73, 77, 112 M matice distanční, 62 vzdáleností, 62 melodém, 21 melodie větná, 20, 23 mikrointonace, 19 model intonační Fujisakiho, 67 intonační LPC, 67 parametrický, 30 modelování prozodie, 100, 105 modely intonační, 26 E energie signálu krátkodobá (STE), 60 Epos, 13, 55, 59, 88, 111 Epos TSR Tracking, 72 F filtr decimační, 37 dekorelační, 30 FIR, 39 rekonstrukční, 42 syntetizující, 30 filtru analyzující, 30 fonetická transkripce, 17, 19 fonetický přepis, 83 formanty, 14 frázování, 21 P pauza, 21 počet průchodů nulou, 60 polokadence, 23 bezpříznaková stoupavá, 23 příznaková klesavá, 23 příznaková stoupavá, 23 pravidla, 71, 85 podmíněná, 87 prozodická, 86 řízená obsahem, 85 strukturovaná, 86 využívající slovníky, 85 prozodie, 9, 13, 16, 18, 19, 25, 37, 43, 59, 77, 111, 112 předrážka, 20 předtaktí. viz předrážka přízvuk, 24 slovní, 20 větný, 21, 22 přízvukový takt. viz takt přízvukový PSOLA, 25, 68 G GTK WavEdit, 70 H hlasové ústrojí, 14 Ch charakteristika impulsní, 37 kmitočtová, 37 chyba střední kvadratická, 47 I interpolace lineární, 39 intonace, 19 INTSINT, 26 115 R redundance, 47 řeč, 14 tsrtool. viz. Epos TSR Tracking TTS systém, 13, 16 umělé neuronové sítě (UNS), 18 S SAMPA, 17 segmentace automatická, 60 SpeechStudio, 68 spektrogram, 15 syntéza řeči formantová, 19, 25 v časové oblasti, 25 U úsek intonační, 21 promluvový, 22, viz úsek intonační V věta, 21 neutrální oznamovací, 23 W WinSay, 71 T takt přízvukový, 20, 21 tempo řeči, 21 ToBI, 26 transkripce fonetická, 97 Z značky, 68 zpracování textu, 16 116