Systém syntézy reči pre slovenský jazyk

Predstavujeme

Nasledujúci článok je určený tým našim čitateľom, ktorí sa zaujímajú o možnosti využitia prirodzeného jazyka v počítačových aplikáciách. Systém je možné implementovať do aplikácií, ktoré obsahujú digitalizované knižničné dáta, predovšetkým pre podporu nevidiacich.

Úvod

V priebehu vývoja systému text-to-speech pre slovenský jazyk (TTS) bola zvolená architektúra založená na štandarde SSML (Speech Synthesis Markup Language) [2]. SSML bol použitý ako základná myšlienka v novom koncepte, pretože špecifikácia poskytuje štandardizovaný spôsob kontroly vlastnosti reči medzi rôznymi platformami syntézy reči. Tento TTS systém sa vyvíja na Katedre informačných sietí (KIS) Žilinskej univerzity a aplikuje systém RBE (rule based engines).

Už nejaký čas sú známe metódy, ktoré aplikujú systém RBE. Používajú sa v rozličných vedeckých a komerčných odboroch. Takisto v spracovaní prirodzeného jazyka boli ohlásené alebo publikované určité postupy. Spracovanie prirodzeného jazyka predstavuje dôležitú časť syntézy reči. Na zvládnutie týchto prepisovacích problémov bol vyvinutý systém založený na RBE, ktorý transformuje všeobecný alfanumerický text v SSML formáte do grafém a následne do fonetického prepisu, ktorý môže byť priamo použitý v DSP (digital signal processing) časti systému text-to-speech. Dôvod použitia RBE v TTS bola jeho schopnosť manipulovať so SSML požadovaným spôsobom.

Spracovanie textu slovenského jazyka je v systéme rozdelené do oddelených modulov. Každý modul má špeciálne podmienky nazývané pre- a postconditions. Preconditions sú pravidlá, ktoré určujú spustenie modulu a postconditions určujú výsledný efekt spusteného modulu. Špecifické vlastnosti (moduly sú samostatné a majú pre- a postconditions) prinášajú modularitu, flexibilitu a podobnosť. Moduly môžu byť vyvíjané samostatne a môžu riešiť iba špecifické problémy jazyka.

TTS SyStém

Opisovaný TTS je založený na spojovaní difém1 (elementárnych zvukových jednotiek). Je postavený na SSML štruktúre, ktorá bola použitá pre formát vstupného textu ako jeho stabilný základ. Systém používa syntézu difém, metódu zreťazovacej syntézy, ktorá používa difémy ako základné jednotky zreťazovania.

Systém používa jadro syntézy, ktoré bolo vyvinuté na KIS a databázu difém pre slovenský jazyk, ktorá bola tiež vytvorená pre potrebu syntézy. Jadro systému bolo vytvorené kvôli možnostiam lepšej kontroly syntézy a použitia rôznych prístupov počas fázy spájania difém a aplikácie prozódie. Pre požiadavky systému boli vyvinuté nástroje na analýzu a vytváranie difém [3].

Bloková architektúra systému pozostáva z dvoch hlavných častí (obr. 1):

jandak1.jpg (33920 bytes)

Obr. 1 Architektúra TTS


NLP

– Natural Language Processing (spracovanie prirodzeného jazyka); je zodpovedný za transformáciu všeobecného vstupného textu v SSML, ktorý je subjektom pre fonetickú transkripciu. Takisto konvertuje čísla, skratky, dátumy atď. do fonetického textu. Princíp spracovania textu je založený na RBE.

DSP

– Digital Signal Processing (spracovanie digitálneho signálu); je zodpovedný za vytvorenie zvukových dát z fonetického textu.

NLP aktívne pracuje nad SSML štruktúrou a mení ju, a DSP pasívne používa informácie poskytnuté NLP.

RBE pre spracovanie textu

Hlavná funkcia RBE je postupná transkripcia textu do fonetického prepisu. Abstraktná štruktúra RBE: 

jandak2.jpg (96536 bytes)

Obr. 2 Abstraktná štruktúra RBE

 

RBE pozostáva z nezávislých častí nazývaných blok”, ako to vidieť na obr. 3.

 jandak3.jpg (18524 bytes)
Obr. 3 Bloky RBE

RBE je formované do blokov: Overovanie SSML, analýza štruktúry a normalizácia textu, konverzia textu na fonémy, sylabická a prozodická analýza.

Každý blok má špecifické funkcie:

  • kontrola SSML
overuje a kontroluje vstupný formát
  • štrukturálna analýza a normalizácia textu
konverzuje špeciálne znaky, skratky, dátumy atď.
definuje typ viet a súvetí
rozdeľuje vety do slov
transformuje špecifické značky SSML
  • konverzia textu na fonémy
nahradí písaný text jeho fonetickou transkripciou
  • slabiky
rozdelí slová na slabiky a postupne na fonémy
  • prozodická analýza
rozširuje výslovnosť o prozodické vlastnosti jazyka (hlasitosť, tempo, dôraz…)
aplikačné obálky viet, slov …

 

Blok je rozdelený do menších častí nazývaných “moduly

z dôvodu spustenia jeho úloh. Blok pozostáva z jedného alebo viacerých samostatných modulov. Závisí od požiadavky, ktorý blok sa musí spustiť. Blok určuje, akým spôsobom sa moduly spustia. Moduly môžu fungovať dvomi spôsobmi:

  • jedenkrát – blok pozostáva z modulov {M1… Mn}. Poradie modulov je striktne definované (napr. Mi<Mj i<j i,j = 1..n). V tomto poradí sa aj spúšťajú. Výstup z jedného modulu je vstupom do ďalšieho modulu. Výstup z modulu nemusí byť znova spracovaný modulom, ktorý sa už ukončil;
    • cyklicky – blok pozostáva z neutriedených modulov {M1 … Mn}. Moduly sú spúšťané v cykloch pokiaľ aspoň jeden z modulov nezmení vstup. Výstup z jedného modulu môže byť potrebný na spracovanie v module, ktorý už skončil v tom istom cykle. Moduly bežia sekvenčne iba raz v jednom cykle.

    Tieto spôsoby sa nazývajú aj explicitná spúšťacia logika, keď je poradie striktne definované, a implicitná spúšťacia logika, keď sú moduly spúšťané v cykloch.

    Keď blok ukončil svoju činnosť, je zabezpečené, že blok, napr. konverzia textu na fonémy, je aplikovaný na celý výstup. Pri cyklickom behu modulu sa cyklus znova spustí, pokiaľ niektorý modul nezmení vstup.

    Spôsob, ako rozhodnúť, či modul spustiť a ako jeho výstup vyzerá, je definovaný podmienkami (každý modul má špecifický “contract”). Podmienky sú precondition a postcondition:

    • precondition – množina pravidiel, ktorá popisuje, kedy je potrebné spustiť modul,
    • postcondition – množina pravidiel, ktorá oopisuje, aký je efekt spusteného modulu.

    Experimentálne bol vyvinutý abstraktný jazyk, ktorý umožňuje písať pre/postconditions. Dodnes nie je súčasťou implementácie, ale používa sa ako formálny jazyk. Je založený na “first order predicate” logike; obsahuje množinu predikátov, modifikátorov, relačných operátorov, kvantifikátorov a logických funkcií.

    Moduly

    Nasledujúca sekcia opisuje niekoľko modulov pre demonštráciu ich atomicity a granularity. Moduly formujú množinu atomických sekcií spúšťaných nad štruktúrou. Tento prístup zjednodušuje pridávanie alebo zlepšovanie existujúcich modulov.

    Tieto moduly sú:

    • Syllable

    Účelom tohto modulu je rozdelenie slov do slabík podľa ich výslovnosti. Pred štartom modulu je každé slovo, ktoré má byť rozdelené na slabiky, napísané vo forme fonetického prepisu. Fonetický prepis je písaný v abecede IPA (International Phonetic Alphabet). IPA bola použitá pre jej schopnosť poskytnúť štandardný, presný a špecifický spôsob, ako reprezentovať zvuky akéhokoľvek hovorového jazyka [4].

    • precondition – slovo je napísané vo fonetickom prepise a nebolo ešte rozdelené na slabiky,
    • postcondition –každé slovo napísané vo fonetickom prepise je rozdelené na slabiky.

    Rozdelenie slova na slabiky (v slovenskom jazyku) je urobené experimentálne podľa kombinácie rozdelenia podľa výslovnosti a automatického delenia, ako to znázorňuje tab. 2.

    Metóda je nasledujúca:

    1. Základ každej slabiky je samohláska, respektíve slabikotvorná spoluhláska.

      Samohláska a á ä e é i í o ó u ú
      Slabikotvorná spoluhláska r ŕ l ĺ

      Tab. 1 Samohlásky a slabikotvorné spoluhlásky

    2. Ak je medzi susednými samohláskami iba jedna spoluhláska, táto spoluhláska patrí nasledujúcej slabike.
    3. Ak je medzi susednými samohláskami viac ako jedna spoluhláska, táto spoluhláska je rozdelená podľa pravidla:
    4. Prvá patrí predošlej slabike a ďalšie patria nasledujúcej slabike.

    Rozdelenie na slabiky má nejaké výnimky:

    1. Dvojhlásky ia, ie, iu, ô predstavujú jednu samohlásku.
    2. Spoluhlásky ch, dz, , predstavujú jednu spoluhlásku.
    3. Ak susedia slabikotvorná spoluhláska a samohláska, slabikotvorná spoluhláska sa správa ako spoluhláska.
    4. Ak je samohláska na konci slova a vytvára slabiku, ktorá má iba túto jednu samohlásku, táto slabika je pripojená k predchádzajúcej slabike.
    5. Znaky í v ipa abecede vo fonetickej transkripcii slova označujú, že táto časť musí byť vo výslovnosti chápaná ako celá časť. Ak sú znaky í , ­ medzi dvomi spoluhláskami, tieto spoluhlásky sú chápané ako jedna spoluhláska. Veľmi dobrý príklad je denne. Fonetický prepis je denne1.jpg (1287 bytes). Spoluhlásky nj sú spojené cez znak.jpg (692 bytes). To znamená, že slovo nie je rozdelené denne2.jpg (1165 bytes) ale denne3.jpg (1310 bytes).
    6. Znak . ipa abecedy vo fonetickej transkripcii slova označuje, že táto časť musí byť rozdelená. Toto pravidlo má najvyššiu prioritu (sylabická prestávka).

    Takisto niektoré exotické a cudzie slová sú dobrým príkladom; napr. prialokovať. Fonetický prepis je pri.alokovatj. Dvojhláska ia sa správa ako dve samohlásky. To znamená, že slovo nie je rozdelené pri.a-lo-ko-vatj, ale pri.-a-lo-ko-vatj.

    jand_tab2.jpg (36248 bytes)

    Tab. 2. Príklady slabík

    1. Word join

    Tento modul je zodpovedný za aplikovanie pravidiel spodobovania, výber medzi viacerými možnosťami výslovnosti a nakoniec za spájanie slov.

    • precondition – slovo vo fonetickom prepise je rozdelené na slabiky, ktoré obsahujú iba fonémy,
    • postcondition – rovnaké ako precondition.

    V skutočnosti nie sú vytvárané žiadne nové elementy. V tomto procese je vybraná jedna možnosť výslovnosti slova a druhá možnosť je odstránená aj s riadiacimi znakmi; napr. dá[šť/žď] – dážď. Pri fonetickom prepise vyzerá implementácia ako dazd1.jpg (2132 bytes) Následne sú slová spojované a párované.

    Pri procese spodobovania platia tieto pravidlá:

    Ak je nasledujúca hláska neznelá alebo nasleduje koniec vety, je vybraná neznelá hláska. (tabuľka 3: 1. riadok). Inak je spodobená na znelú hlásku (tabuľka 3: 3. riadok).

    Ak sú možnosti na výber ekvivalentné, spodobovanie nenastane, ale výberová funkcia rozhodne o jednej z možností (tabuľka 3: 4. riadok).

    Pre prípad výnimky v spodobovaní je definovaná tabuľka s výnimkami (napr. “s nami”). Ak sa spracovávaný výraz nachádza v tabuľke, pravidlá spodobovania sa neuplatňujú, ale je použitá výnimka (tabuľka 3: 5. riadok).

    Ku spodobovaniu tiež nedochádza medzi vetami, a v prípade, keď nastane vloženie medzier alebo zvukových súborov. V poslednom kroku je overované spojenie slov. Ak sa vyskytlo spodobenie na konci slova, nastane spojenie s nasledujúcim.

    jand_tab3.jpg (24718 bytes)
    Tab. 3 Príklady pre modul Word join

    1. Xphone

    Modul Xphone vkladá element xphone do elementu syllable. Rozdeľuje slabiky na difémy (xfémy

    2).

    • precondition – slovo je vo fonetickom prepise a je rozdelené na slabiky, ktoré obsahujú len fonémy,
    • postcondition – každá slabika je rozdelená na xfémy.

    Proces vytvárania elementov xphone:

    Modul spracováva elementy syllable a zisťuje či sú k dispozícii trifémy. Ak nie sú, použijú sa difémy. Diféma pozostáva z dvoch elementov ph, ktoré sú nastavené týmto spôsobom: Ak sa diféma nachádza:

    1. vo vnútri vety, sú do elementu xphone vložené dva za sebou nasledujúce ph elementy;
    2. na začiatku vety, prvý ph element je vytvorený s hodnotou ” ” (medzera);
    3. na konci vety, posledný ph element je vytvorený s hodnotou ” ” (medzera).

    Posledný ph element a prvý ph element za sebou nesledujúcich xfém sú ekvivalentné. Trifémy sa vytvárajú podobným spôsobom.

     

    Vstup do modulu:
    <s>
       <word original=“na“>
              <syllable>
                    <ph>n</ph>
                    <ph>a</ph>
             </syllable>
        </word>
    </s>
    Výstup:
    <s>
      <word original=“na“>
              <syllable>
                    <xphone>
                            <ph>_</ph><ph>n</ph>
                    </xphone>
                    <xphone>
                            <ph>n</ph><ph>a</ph>
                    </xphone>
                    <xphone>
                           <ph>a</ph><ph>_</ph>
                    </xphone>
             </syllable>
      </word>
    </s>

    Obr. 4 Príklad spracovania samostatného slova ”na”

    Rozdeľovanie na elementy xphone je posledným krokom, ktorý je aplikovaný v záujme zmeny textovej štruktúry. Konečná štruktúra je pripravená na vstup do modulu DSP (digitálneho spracovania zvuku), ktorý slúži na generovanie zvuku.

    Záver

    V článku bol prestavený koncept TTS systému, ktorý je založený na SSML štruktúre. Spracovania prirodzeného jazyka v systéme je založené na RBE kvôli jeho schopnosti manipulovať s SSML. Metóda RBE poskytuje silný nástroj na vývoj robustných a flexibilných systémov. Vývojový proces pridávania nových modulov na spracovanie textu a manipulácia s existujúcimi modulmi neovplyvňuje iné moduly ani samotný rečový systém. Článok ďalej prezentuje niektoré špecifické moduly RBE použité v spracovaní textu pre slovenský jazyk. Snažili sme sa vybrať moduly, ktoré ukazujú špecifické problémy slovenského jazyka.

     

    Literatúra

    1. Oravec, J., Laca, V.: Príručka slovenského pravopisu. Slovenské pedagogické nakladateľstvo : Bratislava, 1978.
    2. Speech Synthesis Markup Language (SSML) Version 1.0, W3C Recommendation 7 September 2004. Dostupné na internete: http://www.w3.org/TR/speech-synthesis/
    3. Čaky, P., Klimo, M., Mihálik, I., Mladšík, R.: Text-to-Speech for Slovak Language, Text, Speech and Dialog 2004 : Int. Conf. Proceedings, Brno. ISSN 0302-9743, ISBN 3-540-23049-1, Springer Verlag, Lecture Notes in Computer Science, 2004
    4. International Phonetic Alphabet. Dostupné na internete: http://en.wikipedia.org/wiki/International_Phonetic_Alphabet

     


    1Susediaci pár foném. Označuje prechod medzi dvomi hláskami.

    2Xféma označuje možnosť, že bude použitých viac ako 2 fonémy (ako pri diféme) kvôli realistickejšiemu výstupu zvuku.

    Zdieľať: