Speech Processing
Difónová syntéza

Difónová syntéza

Model difónovej syntézy generuje tvar vlny z postupnosti difónov vyberaním a skladaním jednotiek z vopred nahratej databázy difónov. Difón je podobný hláske, pričom začína v strede jednej hlásky a končí až v strede nasledujúcej. Difónovú syntézu môžeme charakterizovať nasledujúcimi krokmi:

Príprava:

  1. Nahrať z jedného zdroja príklad každého difónu

  2. Rozdeliť reč na jednotlivé difóny a všetky ich uložiť do databázy.

Syntéza:

  1. Vybrať z databázy sekvenciu difónov, ktorá sa zhoduje s požadovanou hláskovou postupnosťou.

  2. Pospájať difóny, pričom jemne upravíme signál na hraniciach jednotiek.

  3. Spracovať signál tak, aby sa zmenila prozódia difónovej sekvencie požadovanej prozódie.


Pri tejto spojovacej syntéze sa používajú difóny namiesto hlások kvôli fenoménu koartikulácie.

Kvôli koartilkulácii sa každý difón mierne líši v závislosti na predošlej a nasledujúcej hláske. Ak by sme iba jednoducho poskladali hlásky dokopy, dostali by sme veľmi veľké rozdiely na na spojoch medzi hláskami.

V difónovej syntéze modelujeme koartikuláciu vložením prechodu na ďalšiu hlásku už vo vnútri jednotky. Pre príklad difón [w - eh] obsahuje prechod od hlásky w na hlásku eh. Pretože difón je definovaný od stredu hlásky po stred ďalšej hlásky, poskladaním týchto dvoch difónov skladáme vlastne stredy hlások a tie sú zvyčajne menej ovplyvnené kontextom. Obrázok 8.15 ukazuje trend, že začiatok a koniec samohlásky sa hýbu oveľa viac ako jej stred.

Vytváranie difónovej databázy

Poznáme 6 krokov pri vytváraní difónovej databázy:

  1. Vytvoriť zoznam difónov

  2. Nájsť vhodného rečníka

  3. Vytvoriť text pre rečníka na prečítanie každého difónu

  4. Nahrať rečníka čítajúceho tento text

  5. Rozdeliť, označiť a nastaviť výšku pre každý difón

  6. Uložiť difóny


Aký je zoznam difónov, ktoré potrebujeme na syntézu? Ak existuje 43 hlások, potom existuje 43*43 = 1849 možných hláskových kombinácií. Avšak nie všetky sa musia v reči objaviť, hlavne kvôli niektorým jazykovým pravidlám. Navyše niektoré difónvé systémy sa nezaoberajú ukladaním difónov, ak neexistuje nejaká možná koartikulácia medzi hláskami, ako napríklad ticho počas rečových prestávok. 43 hláskový systém AT&T má napr. iba 1162 difónov naproti hypotetickému 1849 difónovému systému.

Teraz už môžeme zapojiť náš zdroj reči, často zvaný aj hlasový talent. Databáza difónov pre tento zdroj sa nazýva „hlas“.(Komerčné systémy majú často viacero hlasov. Jeden ženský a jeden mužský.)

Vytvorili sme text pre hlasový talent a teraz nahráme každý difón. Najdôležitejšia vec pri nahrávaní je udržať difóny také konzistentné, ako je to len možné. Ak je to možné, mali by mať konštantnú energiu, stúpanie a trvanie, aby bolo jednoduché ich skladať bez zaznamenateľných prestávok. Dokážeme to spraviť nahraním každého difónu v nejakej nosnej fráze. Vložením difónu do stredu iných slabík dodržíme konečnú dĺžku výslovnosti a počiatočné hláskové efekty bez toho, aby nejaký difón znel hlasnejšie alebo tichšie než ostatné.

Keď sme už nahrali reč, musíme označiť a segmentovať každé dve slabiky, ktoré tvoria difóny. Túto funkciu väčšinou vykonáva rozpoznávač reči nastavený na „forced alignment mode“. V tomto režime je rozpoznávaču presne povedané aká je postupnosť hlások, takže má za úlohu iba nájsť presné hranice hlások. Tieto prístroje však nie sú úplne presné pri hľadaní hraníc hlások, takže ich výstup sa často ešte ručne upravuje.

Ak už máme 2 hlásky (napr. [b aa]) s doladenými hranicami, existujú 25 spôsoby, ako z nich spraviť /b-aa/ difón určený pre uloženie do databázy.

Prvá metóda používa pravidlá na rozhodnutie ako hlboko treba do hlásky položiť difónovú hranicu. Napríklad pre ukončenie slova položíme difónovú hranicu do tretiny cesty v poslednej hláske. Pre ostatné hlásky položíme túto hranicu do polovice hlásky.

Druhý, sofistikovanejší spôsob, ako nájsť hranice difónov je uchovať obe hlásky celé a počkať s vyselektovaním difónu pokiaľ sa nedozvieme, ktorú hlásku pripojíme k tej prvej. Táto metóda sa nazýva optimálne párovanie. Jej princípom je použiť dve kompletné hlásky, ktoré chceme spojiť a skontrolovať každé možné miesto na odrezanie difónu, až kým sa nevyberú 2 konečné body ,ktoré budú tvoriť hranice difónu akusticky najviac podobné hraniciam ďalšieho difónu. Táto akustická podobnosť sa dá odmerať pomocou kepstrálnej podobnosti.

Spájanie difónov a TD-PSOLA pre prispôsobenie prozódie

Doteraz sme sa zaoberali analýzou textu a reči, nahrali sme a upravili databázu difónov. Teraz potrebujeme poskladať difóny do reťazca a potom nastaviť prozódiu (výšku, energiu a trvanie) difónovej sekvencie. Musíme to spraviť tak, aby sme sa priblížili prozodickým požiadavkám bežnej reči.

Čo teda potrebujeme na úspešné spojenie dvoch difónov? Ak sú vlny dvoch difónov na ich hranách veľmi rozdielne, budeme počuť zreteľný klik. Preto musíme použiť funkciu „windowing“ na hranice oboch difónov, aby na ich spojení mali oba nízku alebo nulovú amplitúdu.

Ak sú však oba difóny znelé, musíme sa uistiť, že sú spojené tak, aby mali rovnaké výšky. Znamená to, že výska tónu na konci prvého difónu musí byť vyrovnaná s výškou toho druhého.

Keď už máme poskladané oba difóny, musíme upraviť výšky a trvanie, aby sme splnili požiadavky prozódie. Existuje jednoduchý algoritmus, ktorý dokáže upraviť prozódiu a jeho názov je TD-PSOLA (time domain pitch-synchronous overlap-and-add).

Algoritmus patrí medzi tie, ktoré upravujú každú periódu alebo obdobie. V podobných algoritmoch je dôležité presné značenie výšok, periód a merania, kde presne sa objaví nejaká výška alebo obdobie. Obdobie môžeme definovať ako okamih maximálneho tlaku na hlasivkách alebo ako okamih uzatvorenia hlasiviek.

Povedzme si rozdiel medzi značkovaním výšok a hľadaním výšok. Hľadanie výšok nám dáva hodnotu F0 (priemerný počet cyklov v hlasivkách) v každom časovom okamihu. Značkovaním výšok hľadáme presný časový okamih v každom kmitavom cykle, kde vokálna vlna dosiahne určitý bod (obdobie).

Obdobie môžeme označiť dvomi spôsobmi. Tradičný spôsob, ktorý sa používa najviac je použitie „electroglottograph“ (EGG). Je to zariadenie, ktoré sa pripevní na rečníkov krk blízko hrtanu a vysiela malý prúd cez „Adamovo jablko“. Čidlo zaznamenáva meraním odporu na vokálnych vlnách, kedy sú hlasivky otvorené alebo uzavreté. Jediným problémom EGG je, že zariadenie musí byť pripevnené k rečníkovi počas nahrávania databázy difónov. Zariadenie nedokáže spracovať už vopred nahovorenú reč. Druhým spôsobom je použitie moderných detektorov obdobia. EGG sa už nepoužíva v komerčných „text to speech“ systémoch.

Ak už máme korpus rozdelený na obdobia, potom algoritmus TD-PSOLA dokáže modifikovať výšku a trvanie vlny pomocou vybrania rámca pre každú periódu určitej výšky(impulzu) (rámec už nemá ostré hranice). Tieto rámce sa potom môžu poskladať alebo poprekrývať tak, aby sa na spojoch zhodovali. Algoritmus sa nazýva overlap an add alebo OLA (prekry a pridaj). TD-PSOLA je špeciálny prípad tohto algoritmu.