Robert Batůšek, Pavel Nygrýn: Vejdete do dveří vašeho bytu. Z obývacího pokoje se ozve: „To jsi ty, kámo?“ Odpovíte: „Jasně, co je nového?“ „Přišla pošta od Barta.“ „Fajn, tak ji přečti.“ „Dobře, poslouchej …“
Ne, nemáte nového spolubydlícího, to se jen váš počítač naučil poslouchat a mluvit. O rozpoznávání řeči a řečových povelů jsme psali v Computeru přesně před rokem, nyní se budeme věnovat druhé části problému, tedy syntéze řeči.
Nechci displej
Kde všude se dá syntéza řeči využít? Jde především o situace, kdy uživatel počítače nebo jiného zařízení nemá možnost (anebo chuť) přečíst si informace na displeji. V automobilu vám může palubní systém GPS hlásit názvy měst a ulic, kterými projíždíte, přes telefon si můžete nechat počítačem přečíst došlou poštu. Nesmíme zapomenout ani na aplikace pro zrakově postižené, například programy pro čtení obsahu webových stránek. Hry, které se jistě již někde plánují v přísvitu monitorů, nebudou obsahovat jen několik předem daných dialogů, jako je tomu dnes, ale budou umět (za pomoci umělé inteligence) plynně konverzovat.
Více než 200 let
Naučit počítač mluvit je zdánlivě mnohem jednodušší než naučit ho rozpoznávat řeč. První pokusy o syntetickou řeč byly učiněny již v roce 1779, kdy Christian Kratzenstein sestrojil sadu píšťal, které napodobovaly souhlásky. V polovině devatenáctého století existoval mechanický přístroj, který mohl reprodukovat některá slova. Všechny podobné syntetizéry vycházely z fyzického napodobování mluvícího ústrojí a přispěly velkou měrou k poznávání mechanismu vzniku řeči. První plně elektrický přístroj byl vyvinut v roce 1922 a fungoval na principu rezonance. První zařízení, které by si zasloužilo přívlastek řečový syntetizér, byl VODER (Voice Operating Demonstrator), jenž byl představen v roce 1939. Za vydatné pomoci operátora, který musel být skutečným klávesovým a pedálovým virtuosem, dokázal reprodukovat celé věty.
Přeskočme nyní několik desetiletí, v nichž se zjevily a zase zmizely elektronkové počítače, které se samozřejmě do dějin syntézy řeči také zapsaly, a zastavme se v roce 1968, kdy se objevil první skutečný TTS (text-to-speech) engine, tedy přístroj, který dokázal přečíst libovolný text. V osmdesátých a devadesátých letech vzniklo mnoho čistě softwarových řešení, zprvu pro velké počítače, později i pro běžné osobní. Za všechny můžeme jmenovat například DECTalk, nebo syntetizér, který je součástí SpeechAPI od Microsoftu.
Proč je tedy syntéza řeči stále problém, když už před deseti lety existovaly programy, které se svojí kvalitou dost blížily současným produktům?
Omluvte, prosím, zpoždění vlaku
Každý z nás se jistě octl na nějakém větším nádraží, kde vlaky nevyhlašuje člověk, ale automatický systém. Poznáme to obvykle podle toho, že i když je řeč poměrně dobře srozumitelná, přece jenom nám na ní „něco nesedí“. Vyhlašování odjezdů a příjezdů vlaků je typickou aplikací syntézy řeči s omezeným slovníkem. Takový systém má obvykle nahrány všechny věty nebo některé jejich části, a pokud má určitou větu říci, jednoduše ji vyhledá v databázi nebo ji poskládá z příslušných částí. Zjišťujeme ale, že i v takto jednoduchém případě se nedaří vytvořit dokonalou syntézu řeči, kterou by člověk nerozpoznal od lidské řeči.
Přečti mi tento článek …
U syntézy, která by měla být schopná vyslovit v podstatě jakoukoli větu příslušného jazyka, tedy právě TTS, je situace samozřejmě ještě složitější. Tady už si nevystačíme s nahráním všech možných promluv, protože v době vývoje syntézy je prostě neznáme. Navíc by takové nahrávání mělo neúměrné nároky na hardware a v neposlední řadě také na mluvčího, který by takovou práci dělal. Pro syntézu češtiny pomocí omezeného slovníku by bylo teoreticky potřeba více než 1,5 miliónu slov! V současné době se používají v podstatě dva přístupy k řešení tohoto problému.
Prvním z nich je tzv. syntéza ve frekvenční oblasti. Autoři frekvenčního syntetizéru vytvoří matematický model artikulačního ústrojí člověka. Takový syntetizér je potom schopen simulovat ústrojí libovolného člověka – dítěte, starce nad hrobem, muže, ženy apod. Právě z principů syntézy ve frekvenční oblasti vycházely mechanické a elektronické syntetizéry řeči. Vzhledem ke složitosti vytvoření a vyřešení dostatečně kvalitního modelu hlasového ústrojí jsou ale frekvenční syntetizéry v současné době v menšině.
Momentálně se častěji používá syntéza v časové oblasti, nebo také syntéza spojováním (konkatenací) segmentů. Základní myšlenka je velmi jednoduchá: určíme množinu segmentů (částí promluvy), která je schopná pokrýt libovolný vyřčený text, a při syntéze už jenom spojujeme příslušné segmenty dohromady. Také tento postup má ale několik úskalí. Prvním a největším problémem je značná různorodost řeči. Ta způsobuje, že segment, který při poslechu řeči vnímáme jako stejný, je ve skutečnosti možné vyslovit mnoha různými způsoby. Tento jev je způsoben jednak ovlivněním sousedními segmenty (tzv. koartikulace), jednak obecněji kontextem, ve kterém byl vysloven, jako např. pozicí segmentu ve větě nebo ve slově, významem, psychickým stavem mluvčího apod. To tedy znamená, že při pořizování databáze segmentů musíme nahrávat mluvu v nějakém neutrálním vyznění, což není nijak jednoduché.
Dalším problémem je segmentace. Segmenty musíme volit tak, aby se dobře hledaly jejich hranice a aby při jejich spojování vznikalo co nejméně potíží. Jelikož segmenty v databázi musí být – jak jsme si řekli – v jistém smyslu neutrální, musíme jim při tvoření řeči zpětně dodat prozodii (viz slovníček), kterou přirozená řeč musí mít, aby nezněla strojově. Právě vhodnost segmentů pro takové úpravy je dalším kritériem jejich výběru. Z těchto důvodů se jako segmenty prakticky nepoužívají fonémy, které mají příliš malou variabilitu. Používají se alofóny, difóny nebo segmenty větší, jako jsou trifóny či slabiky (více viz slovníček pojmů).
Jakpak to mluví?
Různé fáze vytváření řeči jsou natolik vnitřně provázány, že je velmi těžké je od sebe oddělit. Přesto lze vyčlenit několik kroků, které obvykle současné syntetizéry při tomto procesu provádějí. Ty obvykle probíhají po sobě, bez větší spolupráce jedné fáze s druhou. Je nutno podotknout, že to je značně zjednodušený model, který bude pravděpodobně v budoucnu nahrazen systémem v mnoha ohledech propracovanějším.
Vstupem do syntetizéru bývá obvykle text. Tento text je třeba podrobit analýze a rozčlenit ho na nějaké jednotky. Už zjišťování konců vět není bez problémů, neboť například ne každá tečka je zároveň koncem věty. Někdy k určení hranice věty musíme pochopit i její smysl, např. Letos počet účastníků dosáhl rekordního počtu, 25. Kudrnovo Okolobrno se tak stalo jednou z největších turistických akcí u nás. V textech se navíc poměrně často vyskytují problémy typu chybějící tečky nebo malého písmene na začátku věty. Věty je dále potřeba rozdělit na ještě menší části, nazývané obvykle fráze. Dále je třeba se vypořádat se zkratkami, čísly a dalšími „nepříjemnými“ částmi textu.
Další fází je fonetický přepis. Přepsat musíme text z klasické abecedy do abecedy fonetické (např. budka na butka, shánět na zháňet apod.). I tady se ale musíme vyrovnat s řadou záludností – např. foném ř se vyskytuje ve dvou základních variantách, znělé a neznělé, některé skupiny hlásek se slévají v jednu (např. dvouhláska ou, ts na c), někdy se výslovnost (i spisovná) liší v závislosti na regionu nebo tempu řeči (jsem na jsem nebo sem, shoda na schoda nebo zhoda) nebo dokonce na významu slov (panický strach vs. panický mládenec).
Po fonetickém přepisu nastává fáze vytváření prozodie, kdy musíme přiřadit každé části foneticky přepsaného textu intonaci, hlasitost, délky trvání segmentů, pauzy apod. I tady se však dostáváme do problémů, jejichž úplné řešení je možné jen s pochopením významu celé promluvy. Srovnejme například dvě stejné věty řečené v různých kontextech:
Kdo ti zlomil nohu? Miloš mi zlomil nohu.
Co ti to Miloš zlomil? Miloš mi zlomil nohu.
V prvním případě bude v odpovědi zdůrazněné slovo Miloš, ve druhém případě slovo noha. Taková komplexní analýza ovšem značně přesahuje možnosti současného výzkumu a vytváření prozodie se řeší na nižších úrovních – příslušný algoritmus pak občas selhává.
Pokud máme text zpracován až na úroveň prozodie, nastává závěrečná fáze vytváření řeči. Pokud jde o syntézu v časové oblasti, vyhledají se v databázi vhodné segmenty a upravují se tak, aby vyhovovaly prozodickému schématu vytvořenému v předchozí fázi.
Kudy dál?
Je tedy vidět, že problémem, který by brzdil vývoj syntézy řeči, není ani tak výkon počítačů (pro provozování většiny existujících aplikací vám stačí postarší Pentium a zvuková karta), ale spíše nedokonalé poznání některých mechanismů uplatňovaných při vzniku řeči. To, co dělí počítač od slavného řečníka a rétora Démosthena, je inteligence. Počítač se může sebelépe naučit vyslovovat souhlásky i samohlásky, ale k přirozenému lidskému vyjadřování mu zatím chybí pochopení významů slov, vět a celého textu. Je tedy přibližně ve stejné situaci, jako kdyby se většina z nás snažila přečíst naprosto neznámý text třeba v jazyce afrického kmene Zulu.
S příchodem výkonných multimediálních počítačů se však výrazně zrychlilo právě tempo výzkumu. Pro testování různých postupů při syntéze již nepotřebují výzkumníci sestrojit specializovaný přístroj, nebo pořídit drahé vybavení. Většinu modelování a testování lze totiž vyřešit na úrovni software. Počkáme-li si tedy ještě pár let, je možné, že dialog, kterým jsme uvedli tento článek, nebude vůbec nereálný a neobvyklý.
Autoři článku pracují v Laboratoři akustiky a fonetiky při Fakultě informatiky MU v Brně.
SlovníčeProzodie – informace přítomná v řeči, např. hlasitost, intonace nebo délka segmentů. Výsledkem je např. důraz na některém slově nebo rozlišení věty tázací, oznamovací a rozkazovací
Foném – základní (abstraktní) stavební jednotka řeči. Nejmenší část řeči, která rozlišuje význam, např. les/pes/ves. Jednotkou nejbližší fonému v psaném projevu je v češtině písmenoAlofón – varianta fonému, která je navíc určena svým pravým a levým sousedem nebo i delším kontextemDifón – segment začínající ve „středu“ jedné hlásky a končící opět ve „středu“ hlásky následující. Jeho výhodou je, že obsahuje koartikulační informaciTrifón – segment, který začíná stejně jako difón, pokračuje přes celou následující hlásku a končí ve „středu“ třetí hláskySlabika – segment, který obsahuje samohláskové jádro a volitelně počáteční nebo koncové souhláskové skupiny. Přesné určení hranic slabik není vždy jednoznačnéKoartikulace – závislost výslovnosti segmentu na okolních segmentech. Podobnost stavu artikulačního ústrojí při vyslovování dvou různých segmentů.