1 Principy řečových služeb Jakub Doležal2 Autor: Jakub Doležal Název díla: Principy řečových služeb Zpracoval(a): České vysoké učení technické v Praze...
Autor: Jakub Doležal Název díla: Principy řečových služeb Zpracoval(a): České vysoké učení technické v Praze Fakulta elektrotechnická Kontaktní adresa: Technická 2, Praha 6
Inovace předmětů a studijních materiálů pro e-learningovou výuku v prezenční a kombinované formě studia
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
VYSVĚTLIVKY
Definice
Zajímavost
Poznámka
Příklad
Shrnutí
Výhody
Nevýhody
ANOTACE Význam aplikace technologií pro rozpoznávání řeči je v současné době opomíjen i přes jeho význam pro praktické nasazení v Interactive Voice Response systémech jako další evoluční krok klasické tónové volby, známé z automatizovaných zákaznických linek. Tento modul obsahuje úvod do technologií pro tvorbu takových služeb, které s uživatelem komunikují pomocí řeči podobně, jako živý operátor. Studenti tohoto modulu porozumí základům a praktické aplikaci technologií VoiceXML a MRCP spolu s nejdůležitějšími pravidly návrhu řečových služeb.
CÍLE Tento kurz seznamuje studenty s teorií i praktickým vývojem distribuovaných řečových služeb. Po prostudování první teoretické části budou studenti obeznámeni s možnostmi a limity technologií rozpoznávání a syntézy řeči. Druhá číst kurzu je již zcela praktická, obsahuje výklad tvorby skutečných řečových aplikací v jazyce VoiceXML a distribuované nasazení v telekomunikačním prostředí s využitím protokolu MRCP.
LITERATURA [1]
Sharma Chetan, Kunins Jeff. VoiceXML: Strategies and Techniques for Effective Voice Application Development with VoiceXML 2.0. : John Wiley & Sons, 2002. 496. ISBN 978-0471418931.
[2]
Juang B. H., Rabiner Lawrence R. Automatic Speech Recognition - A Brief History of the Technology Development. Rutgers University and the University of California (Santa Barbara), 2004. http://www.ece.ucsb.edu/Faculty/Rabiner/ece259/Reprints/354_LALI-ASRHistoryfinal-10-8.pdf.
[3]
Mařík Vladimír, Štěpánková Olga, Lažanský Jiří a kolektiv. Umělá inteligence 5. : Academia Praha, 2007. 552. ISBN 978-8020014702.
[4]
Harris Randy Allen. Voice Interaction Design: Crafting the New Conversational Speech Systems. : Morgan Kaufmann, 2004. 624. ISBN 978-1558607682.
[5]
World Wide Web Consortium (W3C). Voice Extensible Markup Language (VoiceXML) Version 2.0. : 2004, http://www.w3.org/TR/voicexml20/.
[6]
Burke David. Speech Processing for IP Networks: Media Resource Control Protocol (MRCP). : Wiley-Blackwell, 2007. 368. ISBN 978-0470028346.
[7]
Shanmugham S., Monaco P., Eberman B. A Media Resource Control Protocol (MRCP). : 2006, http://tools.ietf.org/html/rfc4463.
[8]
World Wide Web Consortium (W3C). Natural Language Semantics Markup Language for the Speech Interface Framework. : 2000, http://www.w3.org/TR/nl-spec/.
Obsah 1 Úvod ....................................................................................................................................... 8 1.1
Příležitosti řečových služeb ........................................................................................ 8
1.2
Historie do konce 60. let............................................................................................. 9
1.3
Historie od 70. let ..................................................................................................... 11
2 Teoretické základy syntézy a rozpoznávání řeči ............................................................. 12 2.1
6 Test ...................................................................................................................................... 54 6.1
Test ........................................................................................................................... 54
1 Úvod 1.1 Příležitosti řečových služeb V Současné době je většina softwarových aplikací založena na grafické interakci i přesto, že první, byť jednoduchý řečový syntetizér byl zkonstruován na konci 18. století a první rozpoznávač v roce 1952. Pro uživatele je však přínosnější a přirozenější kombinace hlasové a vizuální interakce, která potlačuje nevýhody a naopak zdůrazňuje výhody každé z obou interakcí. Kombinace interakcí se odborně označuje jako multimodální interakce. Pojem multimodální slouží jako protějšek známějšího označení multimediální, které označuje více způsobů interakce pro předání informací uživateli strojem. Naopak pojem multimodální vyjadřuje použití různých interakcí pro zadání příkazu stroji uživatelem. Cílem multimodální interakce člověka s počítačem je tedy nápodoba interakce člověka s člověkem, která využívá navíc více smyslu. Ideálním klientem multimodálních služeb je mobilní telefon, zařízení s celosvětovou penetrací 60% a celkovým počtem 4 600 000 000 kusu. V některých rozvinutých zemích Evropy dosahuje penetrace nad 100%. V CR se jedná o penetraci 130%, mobilní telefon má téměř každý student a každý druhý důchodce. V rozvojových zemích je penetrace menší, avšak mobilní telefony představují nejdostupnější cestu k informacím. Celkový počet počítačů dosáhl v roce 2008 jedné miliardy, přitom 58% počítačů je používaných ve vyspělých zemích v EU, USA a Japonsku, ve kterých žije 15% světové populace. Uživatelé mají mobilní telefon, na rozdíl od osobních počítačů, většinou stále při sobe. Nové generace mobilních telefonu disponují rychlejším procesorem, vetší paměti, kvalitnější obrazovkou, rychlým připojením na Internet a GPS přijímačem. Tyto a další funkce učiní v budoucnu z mobilního telefonu všudypřítomné klienty s konektivitou, zajištující přístup k multimodálním službám. Současné dělení na vizuální a hlasové služby padne a přijde nová generace služeb, využívajících nejlepších vlastností z vizuální i hlasové interakcí. Služby se stanou vůči uživatelům přátelštější a efektivnější díky zapojení více smyslu. Uživatel bude komunikovat ze softwaru, který bude mluvit jako člověk a možná tak i vypadat. Informace pro uživatele budou pocházet z Internetu, role lidského operátora bude potlačena. Změní se způsob jejich prezentaci uživateli, založený na spolupráci webové stránky, vykreslené v prohlížeči telefonu, s rozpoznáváním a syntézou reci. Uživatelé budou moci zapojit zrak i sluch pro rychlé pochopení informací, používání služby se stane přirozenější a zábavnější. Díky tomu, že mobilní telefony doprovázejí své majitele po celém světě, bude možné vytvořit služby, nabízející správné informace ve správný čas. Znalost polohy uživatele umožní předložit mu jen ty informace, které se vztahují k jeho aktuální poloze. Díky zapojení hlasu se práce s informacemi přiblíží rozhovoru dvou lidí. Tento vývoj umožní většímu poctu lidí přístup k informacím a efektivní práci s nimi.
1.2 Historie do konce 60. let Ovládání strojů pomocí řeči je vnímáno jako buď jako rekvizita vědeckofantastických filmů nebo novinka, používaná pro hlasové vytáčení a vyhledávání na mobilních telefonech. První prototypy syntetizéru řeči, napodobující mechanicky lidské řečové ústrojí, však byly sestrojeny před dvěma sty lety a výzkum rozpoznávačů přinesl první výsledky před šedesáti lety v době, kdy dnes nejrozšířenější grafické uživatelské rozhraní neexistovalo. Následuje proto shrnutí významných pokroků až do konce 60. let, následující obrazovka rozšiřuje časovou osu do 90. let. •
1773 Christian G. Kratzenstein, ruský profesor fyziologie v Kodani, zkonstruoval první přístroj schopný vytvářet samohlásky pomocí rezonujících trubic připevněných k vahanům.
•
1804 Wolfgang von Kempelen, autor slavného podvrhu hrajícího šachového stroje Turek a Bratislavský rodák, předvedl dvacet let jím vyvíjený přístroj schopný vytvářet celá slova i věty. Své poznatky shrnul v knize Mechanismy lidské řeči, i s popisem mluvícího stroje. Přístroj napodoboval lidské hlasové ústrojí: vzduch proudil z měchu nahrazujícího plíce přes píšťalu a přes úzkou trubici. Ovládal se páčkami a ručním zakrýváním nosních dírek a úst, prst nahrazoval jazyk. Jednalo se tedy v podstatě o hudební nástroj. Mechanický přístup k syntéze hlasu přetrval až do počátku 20. století. 1837 Sir Charles Wheatstone navazuje na Kempelenovu práci a tím zahajuje další vlnu výzkumu fonetického rozměru řeči.
•
1876 Alexander Graham Bell vynalezl telefon. Učinil tak poté, co se jako mladý seznámil s Wheatstonovou prací. Původně chtěl sestrojit fonoautograf, aby pomohl hluchým lidem dorozumět se s okolím.
•
1939 Homer Dudley navrhl v Bellových laboratořích elektronický systém Voice Operating Demonstrator (VODER) pro rozpoznání a syntézu řeči. Jedná se o elektronickou variantu Wheatstonova syntetizátoru, pracující na základě poznatků Harveryho Fletchera o hlasovém spektru, které je distribucí síly hlasu přes frekvenci. Navzdory přetrvávajícímu paradigmatu hudebního nástroje je VODER považován za důležitý milník ve vývoji demonstrující význam spektra hlasového signálu pro identifikaci fonémů.
•
1952 V Bellových laboratořích stvořen hlasový analyzátor schopný rozpoznat číslice 0 až 9 s pravděpodobností úspěchu 50 až 100 % Pracoval na principu měření formantů, což jsou lokální extrémy frekvenčního spektra vznikající akustickou rezonancí. 1959 V Lincolnových laboratořích, Forie a Forgie byl stvořen systém rozlišující slova typu b-samohláska-t (bit, boat, byte, . . . ) s přesností 93 %.
•
60. léta 20. století Výzkum rozpoznání hlasu v Japonsku. V Tokiu se za účasti společností Suzuki a Nakata zkoumá rozpoznání fonémů. Rozpoznání samohlásek se společně s Kjótskou univerzitou věnují Sakai a Doshita za prvního použití segmentace řeč, která znamená počátek rozpoznání přirozeného jazyka. Laboratoře NEC zkoumají rozpoznání číslic.
9
•
1966 Položeny základy lineárního prediktivního kódování, které slouží k rozpoznávání fonémů na základě statistických pravděpodobnostních metod. V průběhu dalších let výrazně zdokonaleno. Na MIT vyvinut systém analýzy řeči se slovníkem o 50 slovech pracující na principu ohodnocení všech možností. Dosáhl úspěšnosti 86 %, v 96 % se správné slovo umístilo do druhého místa.
•
1968 Stanley Kubrick natáčí film 2001: Vesmírná odysea (2001: A Space Odyssey), ve kterém vystupuje myslící a mluvící stroj. Lidstvo začíná být fascinováno představou stroje, který by se mohl chovat a mluvit jako lidé.
10
1.3 Historie od 70. let •
70. léta 20. století byla bohatá na události: Počítače umožňují simulovat obvody pro generování tónů, což se dříve dělalo s pomocí speciálního hardwaru. Systémy pro rozpoznání mají slovní zásobu čítající stovky slov. Mezi problémy patří nutnost dělat pomlky mezi slovy a závislost na mluvčím. Založena první komerční společnost v oboru rozpoznání řeči Threshold Technology, Inc. Se svým produktem VIP-100 System slaví skromné úspěchy, použito výrobci televizorů a FedExem. Do výzkumu porozumění řeči se dává americká DARPA společně s Carnegie Mellon University. Jejich systém Harpy obsahoval ve svém slovníku 1011 slov, k jejichž rozpoznání používal segmentaci řeči a prohledávání konečného grafu stavů pro výběr nejpravděpodobnějšího slova. Tým IBM, v čele s českým rodákem Fredem Jelínkem, zkoumá hlasem ovládaný psací stroj Tangora, který měl umět převést řeč do textové podoby, a stát se tak historicky prvním Speech-to-text systémem závislým na řečníkovi. Používal gramatiku a n-gramový model. Gramatika byla statistickým souborem syntaktických pravidel říkajících, která slova nebo fonémy po sobě mohou v projevu následovat. N-gramový model slouží k predikci dalšího slova na základě slov již zadaných, až do počtu n. Dnes se využívá zejména pro porozumění přirozenému jazyku. V Bellových laboratořích AT&T se pracuje na systému nezávislém na mluvčím, schopnému obsloužit velký počet zákazníků v oboru telekomunikací. Použito statistické modelování. Systém byl schopen si poradit s přirozenou řečí zákazníků díky vyhledání klíčových slov v projevu, které pak spustily adekvátní reakci.
•
80. léta 20. století Pokrok ve statistickém modelování řeči, které je základem dnešních systémů. Jednalo se zejména o skryté Markovovy modely, na kterých jsou založeny dnešní systémy rozpoznávání řeči.
•
90. léta 20. století vznik call center se jeví jako vhodná příležitost k automatizaci hlasové komunikace se zákazníkem. AT&T v roce 1992 zprovozňuje Voice Recognition Call Processing (VRCP), který vyřídí za rok 1,2 miliardy telefonátů za použití technologií rozpoznání i syntézy řeči. Podle AT&T někteří zákazníci vůbec nepoznali, že se jedná o stroj.
•
Některé výše zmíněné technologie (rozpoznání fonémů, segmentování, lineární kódování, statistické metody, gramatiky) jsou dále rozvíjeny a dnes používány.
11
2 Teoretické základy syntézy a rozpoznávání řeči 2.1 Syntéza řeči Pojmem syntéza řeči označujeme proces tvorby akustického signálu, který imituje lidskou řeč na základě strojové informace, která má obvykle podoby textu. Proto se syntéza také označuje jako Text-to-speech. Při syntéze dochází ke zřetězení (konketace) segmentů akustického signálu do podoby výsledného sdělení. Na některých českých nádražích se lze setkat s nejjednodušší formou konketace jednotlivých předem nahraných slov pro syntézu informačních hlášení cestujícím. Software pak vybírá nahrávky jednotlivých slov z databáze a zřetězuje je. Takové řešení je velice jednoduché, avšak značně limituje možnosti použití a rozšiřitelnost daného řešení, kdy pro syntézu hlášení je nejprve třeba slova namluvit a zanést do databáze. Tato kapitola pojednává o složitější variantě konketace fonémů - nejmenších akustických jednotek řeči, která umožňuje syntézu prakticky jakékoliv informace. Foném je nejmenším rozlišitelným prvkem akustického vnímání řeči, který má rozlišovací vlastnost. Tedy na základě poslechu fonémů v projevu dokáže mozek určit obsah sdělení. Při syntéze dochází k fonetické transkripci, tj. k převedení posloupnosti znaků abecedy na posloupnost fonémů. Vlastní syntéza se skládá ze dvou procesů, popsaných na následujících stránkách: 1. Zpracování přirozeného jazyka 2. Konketace řečových segmentů Moderní syntetizéry navíc disponují podporou více jazyků v podobě rozšiřitelných softwarových modulů. Je proto možné míchat v jedné řečové službě mnoho jazyků, neboť syntéza řeči nepředstavuje pro dnešní počítače velkou výpočetní zátěž. Se syntézou řeči se můžeme setkat v moderních operačních systémech pro chytré mobilní telefony, kde nabízí alternativu k obrazovce.
12
2.2 Zpracování přirozeného jazyka Na předchozí stránce je zmíněna fonetická transkripce pro převod textu na fonémy. Pro správný převod je nutné provést řadu operací nad vstupním textem pro optimální transkripci. Dnešní řečové služby jsou propojeny s řadou graficky orientovaných aplikací, které poskytují informace v textové podobě, která spoléhá na implicitní znalost významu použitého formátování lidským uživatelem. Jedná se o formát zápisu čísel a zkratek a symbolů, interpunkci a další. Tyto psané projevy přirozeného jazyka je třeba analyzovat a dle výsledku upravit vlastní následnou konotaci řečových segmentů. Komponentou syntetizéru, zodpovědnou za toto zpracování přirozeného jazyka, je Morfologicko-syntaktický analyzátor. V případě některých slov jsou však vlastnosti řeči, získané na základě syntaktické analýzy, nepřesné. Např. anglické slovo read může být vysloveno různě na základě časového vyjádření věty. Tyto problémy řeší Morfologicko-syntaktický analyzátor. Ten pracuje podobně jako kontrola pravopisu v některých textových editorech. Udržuje si gramatický kontext, a je proto schopen najít a případně opravit chyby v pravopisu a stylizaci. Jeho použití je logicky možné jen pro jeden konkrétní jazyk. Morfologicko-syntaktický analyzátor se skládá z několika částí, které pracují paralelně: 1. Předzpracování řeči extrahuje vlastní text formátu z požadovaného souboru a stanovuje strukturu textu: odstavce, tabulky, seznamy atp. Je využíváno anotací podkladového formátu (např. HTML značkování). 2. Normalizace převádí prvky textu vyžadující zvláštní interpretaci na lépe zpracovatelnou formu. Jedná se čísla, finanční částky, zkratky atd. 3. Morfologická analýza zpracovává ohebná slova tak, že detekuje jejich kmen a doplní jej o vhodné koncovky. 4. Kontextová analýza zkoumá druhy po sobě následujících slov podle pravděpodobnostního i deterministického modelu. 5. Syntakticko-prozodický rozbor odvozuje dodatečnou prozódii na základě hranic mezi frázemi v textu. K tomu je využíván korpus s anotacemi určujícími hranice frází Morfologicko-syntaktický analyzátor obsahuje pravidla pro gramatický kontext a pravidla výslovnosti slov definované pomocí expertních pravidel či trénovací množiny. Pro jazyky s množstvím odvozenin jako např. čeština je vhodná trénovací množina, vytvořená ze statisticky významného množství příkladů reálného jazyka. Tyto příklady jsou obsažené v tzv. jazykových korpusech, sestavovaných dle určitého zastoupení různých písemných projevů z novin, knih či dalších zdrojů. Naopak expertní pravidla jsou vhodná pro jazyky s jasnými pravidly pro gramatiku a výslovnost. Pravidla jsou pak zapsána jako algoritmus a spouštěna syntetizérem nad textem k analýze.
13
2.3 Konketace řečových segmentů Konketace je závěrečný proces syntézy řeči, skládající akustické segmenty řeči za sebe, tvoříce tak výsledný akustický signál řeči. Segmenty jsou uloženy v akustickém modelu - zvláštní databázi, která je součástí syntetizéru. Starší syntetizéry produkovaly zvukově plochý „strojově“ znějící řečový signál, který neobsahoval změny prozódie, typické pro skutečnou řeč. Důvodem jsou odlišné charakteristiky fonému ovlivněné fonémem předchozím s následujícím v projevu. Pro lepší kvalitu syntézy je tak každý foném uložen v akustickém modelu v podobě několika reprezentantů, kteří s sebou nesou informaci o předchozím a následném fonému.
Příklady trifónů a difónů
Tvorba akustického modelu je náročná práce, která začíná pořízením nahrávek řádově desítek lidí s odlišným řečovým projevem, každý přečte text o minimální délce několika stránek formátu A4. Následně …
14
2.4 Rozpoznávání řeči Strojové rozpoznávání řeči je proces, při němž je vstupní akustický signál převáděn do digitální podoby a ta pak dále do posloupnosti slov. Výsledná posloupnost je dále analyzována za účelem získání potřebné informace. Žádoucí vlastností je nezávislost procesu rozpoznávání na konkrétním mluvčím, což zjednodušuje práci se systémem. Jsou používány systémy pro porozumění řeči na různých úrovních složitosti. Určující proměnnou je přitom velikost domény, nad níž má systém pracovat. Od ní se odvíjí velikost slovníku, se kterým bude systém pracovat. Velké slovníky (velikost řádově desítky tisíc slov) představují nemalou výpočetní zátěž, nehledě na zvýšenou chybovost. Dále je třeba z projevu získat potřebné informace. Zde záleží na povaze řešené úloze: obvykle je cílem buď převést diktovaný obsah do textové podoby, nebo si pomocí hlasového dialogu vyžádat od uživatele potřebné informace. Zatímco v prvním případě diktafonů proces rozpoznávání se získáním slova končí, v případě druhém je nutno zpracovat celou větu a tu podrobit sémantické analýze. Zatímco primitivní systémy obvykle reagují na přítomnost dané fráze, v případě rozsáhlejších domén je nutno použít vlastní gramatiky. Rozpoznávání řeči samo osobě negarantuje porozumění projevu uživatele. V případě rozpoznávání přirozené řeči je výsledkem nijak nestrukturovaný text, který je nutně analyzovat pomocí specializovaného software – tzv. chatbotu, který dokáže na základě modelů jazyka a gramatiky z textu extrahovat podmět, přísudek, předmět a další informace. Chatbot obvykle má definována synonyma podstatných jmen a ekvivalentní slovesa, a proto se dokáže vypořádat s různými projevy odlišných uživatelů se stejným obsahem projevu.
15
2.5 Komponenty rozpoznávače - Akustický procesor Akustický procesor mění spojitý signál hlasu, pocházející ze vstupního zařízení (nejčastěji mikrofonu), do posloupnosti vektorů příznak·. Využívá lineární prediktivní analýzu (LPC) pro odvození parametrů (např. intensity a frekvence) hlasového signálu na základě krátkodobého měření jeho diskrétních hodnot. Pro získání čistých parametrů signálu jsou reverzním filtrováním pomocí číslicových obvodů ze signálu odstraněny formanty, což jsou lokální extrémy frekvenčního spektra vznikající akustickou rezonancí. Akustické procesory se snaží věrně napodobovat způsob, jak lidé slyší. K tomu využívají psychoakustický model podobně jako MP3 kódování. Ten pracuje s frekvenčním a časovým maskováním:
Frekvenční maskování V případě vnímání signálu s vysokou frekvencí není lidské ucho schopné vnímat též jiné signály s frekvencí nižší. Jedná se tedy o posun prahu slyšitelnosti zvuků.
Časové maskování Při výskytu příliš hlasitého zvukového signálu chrání lidské ucho člověka tím, že daný signál prostě potlačí. Přitom snížená citlivost sluchu bude patrná nejen několik milisekund po vypnutí signálu, ale i těsně před jeho spuštěním.
16
2.6 Komponenty rozpoznávače – Ligvistický dekodér Lingvistický dekodér překládá vektory příznaků na konkrétní slova. Přitom si musí umět poradit s různými typy hlasů a zkomoleninami. Nechť: •
W = {w(1), w(2), … , w(N) je posloupnost N slov.
•
O = {o(1), o(2), … , o(T) je akustická informace v podobě posloupnosti vektorů odpovídajícímu t-tému mikrosegmentu hlasového signálu.
•
P(W | O) představuje podmíněnou pravděpodobnost, že při zjištěné akustické informaci O bude detekována posloupnost slov W.
•
P(O | W) je podmíněná pravděpodobnost, že při vyřčení posloupnosti slov W bude zjištěna akustická informace O.
•
P(W) vyjadřuje apriorní pravděpodobnost vyřčení posloupnosti slov W.
•
P(O) značí apriorní pravděpodobnost výskytu akustické informace O.
Pak lze rozpoznání vyjádřit jako dekódování s maximální aposteriorní pravděpodobností nalezením takové posloupnosti slov W, která maximalizuje podmíněnou pravděpodobnost P(W | O). S využitím Bayesova pravidla tak dostaneme:
Bayesovo pravidlo
Vzhledem k tomu, že P(O) není závislá na W, ji lze z rovnice 3.1 vynechat, čímž dostaneme:
Upravené Bayesovo pravidlo
17
2.7 Skryté Markovovy modely Skrytý Markovův model (Hidden Markov Model - HMM) je konečným stochastickým automatem, jehož aktuální stav je nezávislý na stavech předchozích. Slovo skrytý značí, že pozorovateli je aktuální stav automatu neznámý. Cílem je aktuální stav odvodit na základě pozorovaných parametrů, které automat generuje v diskrétním čase pro každý stav. Nechť automat generuje parametry v podobě vektorů příznaků O = o(1), o (2)}, …, o(T). Nechť aktuální stav s(i) je v diskrétních časových okamžicích změněn na s(j) tak, že i ≤ j (jedná se o levo-pravé Markovovy modely) podle předem daných, v čase konstantních, podmíněných pravděpodobností přechodu a(i,j) mezi stavy i a j:
Vyjádření Markovova modely
Kde s (t) je stav modelu v čase t. Po každém přechodu je vytvořen vektor příznaku o(t) též podle předem daného pravděpodobnostního rozdělení b(j, o(t)) vztahujícího se k novému stavu v čase. Lidské hlasové ústrojí je vlastně považováno za Markovovův proces, jehož každý jeden stav reprezentuje konkrétní konfiguraci hlasivek, jazyka, zubů atp., která vytváří zvuk, a tedy i zachycenou akustickou informaci o.
18
3 Vývoj řečových aplikací v jazyce VoiceXML 3.1 Úvod Řečové služby mohou být realizovány na bázi monolitické i distribuované architektury. Tento materiál cílí na distribuovanou architekturu z důvodů její standardizace a četnější využití v telekomunikačním prostředí. Nicméně obě architektury mají své přednosti.
Výhodou monolitické architektury je na rozdíl od distribuovaného možnost úzkého propojení s existujícími technologiemi – knihovnami pro syntézu a rozpoznávání řeči. Díky tomu je možné využít specifické vlastnosti a funkce knihoven, jinak nedosažitelné z používaných standardů, které tvoří minimální podmnožinu funkcí, nabízených napříč spektrem různých dodavatelů. Další výhodou může v některých případech být možnost implementovat logiku aplikace ve zvolené technologii, např. jazyce Java, PHP nebo na platformě .NET.
Výhodou distribuované architektury je modularita všech komponent: interpretu, rozpoznávače, syntetizéru a úložiště logiky vlastní služby, které může být realizováno jako aplikace v jazyce Java, PHP nebo na platformě .NET. Díky nezávislosti na konkrétním produktu a dodavateli je možné měnit různé komponenty bez negativních dopadů a nekompatibilit. Další výhodou je snazší škálovatelnost při velkém počtu uživatelských požadavků a snazší školení odborníků díky jedné standardizované technologii.
19
3.2 Jazyk VoiceXML VoiceXML je jednak značkovací jazyk, založený na jazyce XML (Extensible Markup Language), spravovaný konsorciem W3C a podporovaný různými dodavateli řečových technologii. Po stránce syntaxe je VoiceXML velice podobný HTML (Hypertext Markup Language), avšak odlišuje se ve způsobu řízení vlastní řečové služby vzhledem k velkým odlišnostem mezi grafickou a akustickou interakcí člověka s počítačem. Zároveň se jedná o standard, zastřešující různé dílčí technologie pro řečové služby: 1. Syntéza řeči 2. Rozpoznávání řeči 3. Sémantická interpretace rozpoznané řeči 4. Logika služby, která spojuje výše uvedené Každá distribuovaná architektura vyžaduje protokol, definující způsob komunikace jednotlivých částí – interpret VoiceXML potřebuje sdělit rozpoznávači nejprve gramatiky, které se mají použít, později rozpoznávači sdělit, že má být zahájeno rozpoznávání řeči a nakonec od něj přijmou výsledky. Takovým protokolem je MRCP (Media Resource Control Protocol), který definuje obsah a formu zpráv, vyměňovaných si VoiceXML interpretrem, rozpoznávačem a syntetizérem. Ačkoliv znalost tohoto jazyka není pro samotnou tvorvu řečových služeb vyžadována, jeho znalost je výhodou.
20
3.3 Stavy a formuláře Aplikace jsou v jazyce VoiceXML modelovány jako množina stavů s definovanými podstavy. Stav je reprezentován elementem form, který má podobnou funkci jako stejnojmenný element v jazyce HTML – načíst uživatelský vstup. Nicméně vzhledem ke složitosti definice gramatik pro rozpoznání řeči následnému zpracování výsledků včetně zotavení se z případných chyb, je definice formu ve VoiceXML složitější.
Každý formulář se proto skládá z nejméně jednoho podstavu, který načítá vstup. Formulář pak slouží jako jakýsi kontejner pro seskupování více podstavů pro obsluhu událostí (viz následující část 4) a navigaci mezi stavy.
Podstav může být realizován elementem field nebo block. Element field obsahuje trojici vnořených elementů: 1. Element prompt pro zprávu, která má být syntetizována uživateli. 2. Element grammar s gramatikou, definující možné volby řečového povelu. 3. Elemnt filled s obsluhou události úspěšného rozpoznání. 4. Element catch s obsluhou událostí chyby rozpoznání nebo vykonávání samotné služby Element block může obsahovat pouze syntézu řeči nebo logiku služby, např. větvení a vykonávání skriptů. Příklady elementů field a block v jednom formuláři:
22
3.4 Navigace mezi stavy a obsluha událostí Běh spuštěné VoiceXML služby se skládá z opakovaných změn stavu, typicky dle řečové volby uživatele, kdy se průběh služby větví. Přechod mezi stavy lze iniciovat explicitně pomocí elementu goto, který jako atribut přebírá název nového formu. Do elementu field či block lze takto přejít pouze v rámci stejného formu. Důvodem pro takové chování je myšlenka zapouzdření, kdy podstavy jednotlivých stavů jsou neviditelné z vnějších stavů. Příklady elementu goto:
Po přechodu do nového stavu skokem do elementu form je interpretem standardně vykonán první podstav, kterým může být element block nebo field. Po jeho dokončení je vykonán podstav další. Jestliže je nutné, aby po přechodu do formu byl vykonán jiný než první podstav, pak je vhodné zavést tzv. rozcestník – první podstav v podobě bloku s logikou vyhodnocení situace a explicitním přechodem na požadovaný podstav. Pro větvení přechodů je vhodné použít elementy if, elseif a else, které tvoří podmíněné podmínky vykonání určených vnořených elementů, v následujícím případě tedy syntézy textu a přechodu na form. Příklady větvení logiky:
category
==
Implicitním přechodem je potom zachycení událostí, které jsou typicky generovány v případě nespěšného rozpoznávání. Zachycení takových událostí pomocí elementu catch dává možnost zotavit se z chyby, např. syntézou přesnějších pokynů uživateli. Příklad zachycení chybové události pomocí elementů catch, umístěných na různých úrovních aplikace. První element catch je zanořený do elementu form s atributem, a speciálně uzpůsoben k obsluze chyb, které se vyskytly při vykonávání logiky tohoto formuláře. Případné chyby mimo formulář jsou zachyceny druhým elementem catch, vnořeným přímo do hlavního elementu vxml, a jejich obslouha po syntéze obecného popisu ukončí aplikaci: … <prompt> Promiňte, došlo k vážné chybě. <exit />
Elementy catch mohou být na úrovni podstavu, stavu i celé služby. V takovém případě je vykonán pouze ten element catch, který je nejblíže výskytu události od nejbližšího podstavu po nejvzdálenější službu.
24
3.5 Syntéza řeči – práce s hlasem a tichem VoiceXML obsahuje elementy umožňující ovlivnit syntézu reci. Následující výpis obsahuje formulář z identifikátorem welcome, obsahující pouze syntézu v elementu prompt. Po syntéze úvodní hlášky následuje krátká pomlka, jejíž trvání je možné zadat v sekundách nebo milisekundách. Formulář uzavírá přechod do jiného formuláře s identifikátorem IBM. Identifikátoru formuláře v elementu goto musí vždy předcházet znak #. Příklad syntézy s použitím elementu voice, který umožňuje definovat hlas syntézy daného textu. V níže uvedeném příkladu vystupuje vypravěč s hlasem Jan, muž a žena coby protagonisté, s hlasy definovanými dle pohlaví a věku. Každý syntetizér je obvykle dodáván s jedním až s několika hlasy, které mohou pokrývat obě pohlaví a různé věky a dokonce i varianty. Avšak tato podpora je rozdílná dle dodavatele syntetizéru a uvedený příklad nemusí fungovat s jinými syntetizéry . …
25
3.6 Syntéza řeči – práce s důrazem V řeči se používají způsoby doplnění významu informací změnou rychlosti či hlasitosti, Jazyk VoiceXML stejné vlastnosti řeči umožňuje dodat pomocí elementu prosody s atributem rate pro změny rychlosti a atributem volume pro změnu hlasitosti. Jak ukazuje příklad níže, oba atributy je možné kombinovat pro vtvoření požadovaného efektu. …
Výčet všech možných hodnot pro oba atributy jsou uvedeny v následující tabulce: Basic table – table caption
Atribut
Hodnoty
Atribut
Hodnoty
rate
x-slow
volume
x-silent
slow
silent
medium
medium
fast
loud
x-fast
x-loud
26
3.7 Syntéza řeči – dodání významu Často se vyskytne nutnost syntetizovat posloupnost znaků se sémantickým význam, který je jasný člověku z kontextu, avšak nikoliv syntetizéru. Příkladem mohou být datum a čas, finanční částky, telefonní číslo a další. Následující příklad obsahuje element say-as, který je používán k vyznačení významu zanořeného obsahu pomocí atributu format pro definicí typu obsahu k syntéze a interpret-as s použitou konvencí zápisu. V následujícím příkladě tak první element say-as dává syntetizéru na srozuměnou, že posloupnost čísel 03.06.1868 se datumem a druhý element stejným způsobem ošetřuje srývnost syntézy času 22:22. …
Podpora různých typů obsahu i konvencí se liší dle dodavatele syntetizéru o od rozsáhlé podpory různých významů až po prosté ignorování celého elementu sayas. Další formou významu textu je použitý jazyk. Element prompt je proto možné doplnit elementem xml:lang se zkratkou jazyka dle ISO 866, např. cs-CZ pro češtinu. Následující příklad doplňuje aplikaci vtipů o dva nové vtipy v anglickém a německé jazyce: …
Pro řadu volně dostupných syntetizérů je možné stáhnout balíčky s podporou dalších jazyků, mezi kterými nechybí ani čeština. Podpora jazyků komerčních syntetizéru je pak závislá na technických možnostech a strategii výrobce.
28
3.8 Gramatiky pro rozpoznání řeči Tvorba gramatik představuje základní a nejdůležitější prvek návrhu řečové služby. VoiceXML umožňuje pouze tvorby gramatik na základě výčtu všech voleb včetně opakování a větvení. S těmito možnostmi lze dosáhnout složitých a bohatých gramatik.
Výhodou gramatik je snadná definice s možností začít malou gramatikou a postupným rozšiřováním pokračovat ke složitějším verzím. Dále gramatiky doplněné sémantickou interpretací jsou výborné pro zadávání strukturovaných objednávek s mnoha volbami, např. „dvě velké pizzy se sýrem, parmskou šunkou a olivami a láhev Infinitus Tempranillo“. Výsledkem rozpoznání dle dobře, avšak snadno napsané gramatiky s interpretací bude datová struktura s vlastnostmi: počet kusů, oddělené ingredience, nápoj.
Nevýhodou je nutnost gramatiku navrhovat, testovat a udržovat. Je třeba pamatovat a ošetřit situace, kdy uživatel zadá volbu jinak, než očekával návrhář gramatiky. Následné testování je velmi pracné i pro člověka, který má kvalifikaci v oboru návrhu uživatelských rozhraní. Pro porozumění řeči převedené na text existují speciální nástroje, v případě jejichž rozšíření bude návrh gramatik umenšen.
29
3.9 Tvorba řečových gramatik Základní gramatika představuje použití seskupujícího elementu rule a elementu item pro definici textu, který se má rozpoznat. Gramatiku jej dále možné vylepšit větvením, kdy uživatel má na výběr jednu ze tří voleb pomocí elementu one-of:
Gramatiku lze vylepši přidáním opakování pomocí atributu repeat elementu item, který v tomto případě slouží jen jako kontejner pro další elementy one-of a item. Různý zápis hodnot atributu je přípustný: •
repeat="3" učiní volbu opakovatelnou přesně třikrát. Jestliže budde volba zopakována pouze dvakrát, skončí rozpoznávání neúspěchem
•
repeat="1-3" umožní volbu zopakovat jednou, dvakrát nebo třikrát
•
repeat="0-1" učiní volbu volitelnou
•
repeat="1-" volba může být zadána jednou až vícekrát, limit není stanoven
Jestliže hrozí, že uživatelé řeknou daný povel s příliš mnoha variantami, je možné použití elementu garbage, jako doplňku klasických elementů gramatik. Element garbage přijme každou část povelu bez nutnosti vypisování všech variant. Nevýhodou je, že část povelu, přijatá elementem garbage se neobjeví ve výsledku rozpoznávání. Jedná se tedy o vhodný způsob vypořádání se s variantami povely typu „chci se odhlásit“ – „odhlásit se“ – „odhlásit, prosím“ a další na základě klasického elementu item doplněného před sebou i za sebou elementem garbage.
30
3.10 Sémantická interpretace gramatik Gramatiky lze doplnit elementy tag, obsahující výraz v ECMAScriptu, který se vykoná vždy, pokud uživate vybere příslušnou volbu. Elementy tag jsou obvykle vnořeny do elementů item, např. pro náhradu uživatelem řečeného příkazu univerzálním tokenem. Následující příklad obsahuje :
=
Uvedený příklad zobrazuje, jak umožnit definici více řečových povelů, které se vztahují ke stejnému tématu. Bez ohledu na to, zda uživatel řekne „Zvířata“ nebo „Medvědi“, výsledek bude v následném zpracování v elementu filled zpracován stejně, v tomto případě skokem do formuláře s id atributem „zvirata“, který obsahuje vtipy o medvědech i dalších zvířatech. V gramatikách je možné použít dokonce skriptování včetně definice vlastních metod, které se používá pro průběžné zpracování dílčích výsledků rozpoznání ve složitých gramatikách. Tato problematika je však již nad rámec kurzu.
31
3.11 Tvorba gramatik pro tónovou volbu Řečová může být nevhodná v případě limitů, pramenících z nároků na rozpoznávání řeči. Typickým příkladem je prostřední s hlukem na pozadí nebo nutnost rozpoznat krátké volby, které obsahují příliš málo písmen, respektive fonémů, a je tedy vysoké riziko špatného rozpoznání. V extrémních případech může dokonce dojít k aktivování rozpoznání a vykonání volby na základě náhodného hluku na pozadí. V těchto případech je vhodné použít tónovou volbu, anglicky označovanou jako Dual-tone multi-frequency (DTMF).
Tónová volba představuje výhodu prakticky 100% úspěšnosti rozpoznání v případě, že uživatel stiskne správné tlačítko. Na rozdíl od rozpoznání řeči není třeba třeba zabývat se při návrhu gramatiky situací chybného rozpoznání z důvodů neznalosti či zmatení uživatele ani z důvodu rušného prostředí.
Nevýhodou tónové volby je nutnost sdělit uživatel význam každé klávesy, přesněji čísla, na klávesnici mobilních telefonů. Při větším počtu dostupných voleb a v případě víceúrovňových menu s volbami může být tento způsob interakce těžkopádný. Dalším limitem je omezený počet takto definovaných volbe v jedné gramatice na 10 číslic plus klávesy hvězdičky a mřížky. S tónovou volbou tak standardně nelze tvořit rozsáhlé gramatiky. Následující příklad ukazuje definici gramatiky se třemi číselnými hodnotami. Povšimněte si použití sémantické interpretace pro přiřazení významu jednotlivým číselným volbám. Takto lze dokonce mít v jednom fieldu definovány gramatiky pro ovládání řečí i tónovou volbou:
32
Je možné a užitečné kombinovat obě modality – řečovou i tónovou volby v podobě dvou gramatik, přiřazených jednomu elementu field. Uživatel si tak může vybrat, který způsob zadání voly použije.
33
3.12 Skriptování Samotný kód VoiceXML je možné doplnit ECMAScriptem pro dodání dalších funkcí. Klíčovými elementy jsou skript pro definici skriptových funkcí, var pro přiřazení volání funkce proměnné a value pro syntézu proměnné.
ECMAScript je podmnožinou JavaScriptu, používaného pro tvorby webových aplikací, běžících na straně klienta. To je velký rozdíl v případě VoiceXML služeb, které jsou celé včetně případného skriptování vykonávány vždy na straně serveru. Navíc nejsou v ECMAScriptu k dispozici proměnné, specifické pro webové stránky, a naopak k dispozici jsou jiné proměnné, specifické pro možnosti VoiceXML služeb. Následující příklad vylepšuje přivítání uživatele o pozdrav dle aktuálního času. V elementu block představen nový element var, který definuje novou ECMAScript proměnnou jménem greeting s hodnotou určenou výrazem v atributu expr. Atribut může obsahovat jakýkoliv správný výraz ECMAScriptu, v uvedeném příkladu se jedná o volání funkce, jejíž návratová hodnota je přiřazena proměnné. … <script>
34
]]>
V element se syntézou prompt je přitomen element value, který vloží aktuální hodnotu atributu expr do syntézy. Jako v případě elementu var i zde může atribut expr obsahovat libovolný výraz ECMAScriptu, u tomto případě se jedná o dříve definovanou proměnnou. Vlastní funkce hello je pak zapsána v jazyce ECMAScript jako obsah elementu skript. Výhodou skriptování pomocí ECMAScriptu je efektivní zápis vlastních algoritmů pro načtení externího obsahu nebo pokročilejší zpracování výsledků rozpoznání. Bohužel výuka programování v jazyce ECMAScript je mimo rozsah tohoto kurzu.
Nevýhodou skriptování je nepřehledné ladění. Častým zdrojem chyb ze strany vývojářů, znalých webových aplikací, je pak použití metod, které fungují v prohlížečích jako rozšíření základního standardu ECMAScript, avšak VoiceXML interpretem podporovány nejsou.
35
3.13 Rozšířená práce s výsledky rozpoznání Při rozpoznávání řeči často dochází k situacím, kdy je namísto skutečného příkazu uživatel mylně rozpoznána jiná volba. K tomu dochází zejména při velkém počtu položek v gramatice nebo při výskytu příliš krátkých položek, v jejich případě má rozpoznávač příliš málo dat ke správnému rozpoznávání V takovém případě je vhodné analyzovat dodatečné informace o výsledku rozpoznání pomocí proměnné application.lastresult$, za jejíž definici a obsah zodpovídá VoiceXML interpret. Jedná se o datovou strukturu s vlastnostmi, které poskytují detailní informace o výsledku: •
utterance je textová reprezentace řečové volby uživatele, může být vhodná pro dotaz na uživatele, zda je hypotéza správná.
•
inputmode rozlišuje způsob zadání: nabývá hodnot voice pro řečový povel a dtmf pro tónovou volbu s použitím klávesnice.
•
intepretation je textová interpretace volby uživatele, je použita pro přechod na další stavy.
•
confidence je číselné vyjádření míry pravděpodobnosti hypotézy v intervalu 1 až 100, nicméně rozpoznávač hypotézy s pravděpodobností menší než 50 standardně zahazuje.
Následující příklad představuje doplnění formuláře s výběrem kategorie vtipů o úplný výčet informací o výsledku rozpoznání: <property name="maxnbest" value="1" />
36
Element property slouží k zadání speciálních vlastností rozpoznávače, které ovlivňují výsledky. Vlastnost maxnbest říká, že pro jednoduchost si přejeme pouze jediného kandidáta výsledku rozpoznání. Na základě hodnoty confidence je vhodné se rozhodnout, zda existujíc pochybnosti o nejpravděpodobnější hypotéze a na základě ní přejít přímo na další stav nebo provést ověření. V případě, že existuje více hypotéz s nízkou pravděpodobností
37
3.14 Procházení výsledky rozpoznání V reálných aplikacích se vhodné nelimitovat se na navrácení jediného kandidáta, nýbrž požádat rozpoznávač o vrácení pole N kandidátů, kterému se odborně říká N-Best-List. V dalším příkladu je pomocí elementu property požadována maximálně 5 kandidátů. Proměnná application.lastresult$ je pak pole s délou k < N, neboť rozpoznávač se může rozhodnout, že skutečný počet hypotéz je menší než počet vyžádaných hypotéz. Každá položka v poli je pak struktura objekt s vlastnostmi, uvedenými výše. Následuj příklad načtení více hypotéz výsledku rozpoznávání: <property name="maxnbest" value="5" /> …
Příklad nejprve přiřadí proměnnou application.lastresult$ do vlastní kratší proměnné candidates. Následně je syntetizována zpráva s celkovým počtem nalezených kandidátů pomocí výrazu ECMAScript, vloženého do elementu value. Jádro příkladu je pak představování uvedením nového elementu foreach, který postupně vykonává vnořené elementy (v tomto případě syntézu textu) pro všechny prvky datového pole, zadaného atributem array s nalezenými kandidáty. V vnořených elementech (jmenovitě v elementu value) se lze odkázat na aktuálně zpracovávaného kandidáta pomocí proměnné, specifikované v elementu item. Uvedené informace jsou velice užitečné pro diagnostiky řečově aplikace a zkoumání výstup rozpoznávače může mnohé napovědět o potenciálních problémech, kdy se aplikace chová neočekávaně. Dle počtu kandidátů a jejich hodnoty confidence se lze během vykonání aplikace rozhodnout, zda a jak provést ověření výsledku rozpoznání.
38
Hodnota N by měla být rovna 5. Bylo zjištěno, že lidé si v krátkodobé paměti udrží 5 až 7 voleb. Vzhledem k tomu, že řeč je sekvenční médium uživatelé jsou spíše zvyklí na grafická rozhraní, je v tomto případě doporučeno zůstat na spodní hranici pěti voleb. Dalším důvodem je úspornost tónového výběru ve druhém kole, který by s větším počtem voleb trval příliš dlouho.
39
3.15 Načítání externího obsahu Během vykonávání VoiceXML služby je často nutné vyžádat si obsah z externího zdroje a jeho obsah syntetizovat uživateli. K tomu slouží element data, který přijímá URL s externím obsahem ve formátu XML dokumentu, který je nezávislý na programovacím jazyce či operačním systému. Předpokládejme řečovou službu, která uživateli na přání sdělí aktuální počasí na daném místě. Taková aplikace bude zřejmě propojena s online databází, obsahující všechna známá místa v zemi. Z důvodu rozsáhlosti databáze nemůže naše služba načítat všechny informace o počasí při generování VoiceXML dokumentu, a proto je zaslán požadavek pro dané místo až po volbě uživatele. V online prostřední se používá k výměně informací mezi službami značkovací jazyk XML, v případě počasí může mín např. následující strukturu: <pocasi> <místo nazev="Praha"> 15zataženo
Po načtení obsahu z externího XML dokumentu mohou být zajímavé informace syntetizovány uživatel pomoví elementů value, které jsou při syntéze nahrazeny aktuální hodnotou proměnné v ECMAScriptu. Načtený XML dokument je nutné parsovat, tj. získat obsah na základě dotazů na existující elementy a atributy načtěného dokumentu. K tomu slouží rozhraní Document Object Model (DOM), používané v mnoha programovacích jazycích. DOM je dostupná jako součást ECMAScriptu, následující kód uvádí příklad parsování XML dokumentu pomocí DOM: … <script>
40
Soubor může být generovaný webovou aplikací napsanou např, v jazyce Java, PHP nebo na platformě .NET. Může se jednat o vlastní či cizí aplikaci, např. pro zjištění aktuálního počasí, kurzu měn, nadcházejících koncertů a dalších. Řečová služba tak může snadno rozšířit již hotové webové aplikace.
41
3.16 Logování událostí při běhu programu Pro vývoj každého systému je nezbytné vědět, co se děje při jeho běhu. To zvláště platí pro řečové služby, pro něž vysoká míra neurčitosti ovládání, způsobená povahou rozpoznávání řeči, spolu se sekvenční povahou vnímání audia představuje ztížení hledání chyb. Logování tedy stejně jako v jiných systémech i zde slouží k zápisu informací o běhu pro pozdější analýzu. Elementy log je vhodné spolu s vypovídajícím obsahem textu k logování umisťovat do elementů catch, které zachycují chybu při rozpoznávání nebo vykonávání služby. … <prompt> Promiňte, došlo k vážné chybě. <exit />
Proměnné _event a _message jsou tzv. stínové, tedy za jejich definici zodpovídá VoiceXML interpret v situacích, kdy to standard vyžaduje. V tomto případě proměnná _event obsahuje identifikátor události a proměnná _message detailnější textový popis. Operátor + slouží ke zřetězení tří textových řetězců do jednoho, který je posléze VocieXML interpetrem doplněno datum, čas a identifikátor aplikace, aby finálně mohl být celý záznam uložen do na pevný disk serveru, na kterém je interpret nasazen. Dále – zejména během vývoje služby – je užitečné elementy log umístit na všechna místa s větvením či složitější logikou včetně výsledků úspěšného rozpoznávání. …
Logovací zprávy jsou obvykle zapisovány do souboru nebo databáze, umístěné na serveru s běžícím VoiceXML interpretem. Některá vývojová prostředí umožňují vidět záznamy logu, asociované s vyvíjenou službou: Příklad zobrazení logu událostí: [10/25/12 11:12:15:798 CET] Vyber kategorie: Zvřata [10/25/12 11:21:12:798 CET] Vyber kategorie: Škola [10/25/13 11:33:26:870 CET] error.noresource Server:006:error
43
-
MRCP
4 Distribuované nasazení řečových aplikací 4.1 Protokol MRCP Řečové aplikace v jazyce VoiceXML jsou v telekomunikačním prostředí nasazeny v podobě množiny distribuovaných koponent z důvodu efektnější správy, rozložení zátěže uživatelských požadavků a modulárního nasazení. Architektura s použitím MRCP protokolu je na obrázku níže.
Distribuovaná architektura
Kromě širokého přijetí je tak další výhodou modularita celého jádra řečových služeb, kdy díky protokolu MRCP lze provozovat Interpret, rozpoznávač a syntetizér od různých dodavatelů, a tím se vyhnout strategické závislosti na dodavateli jediném. Nevýhodou je pak složitost protokolu, a tedy složitost celé síťového režie na obou stranách.
VoiceXML Interpret Komponenta Interpreta přijímá přepojený hovor z Pobočkové ústředny, spouští řečovou aplikaci, definovanou v jazyce VoiceXML, a vykonává její logiku. Řečová služba se může skládat z jedné až několika propojených aplikací. Na Interpret je možno nahlížet jako na virtuální stroj, zajišťující přístup k výpočetně náročným technologiím rozpoznávání a syntézy řeči na pomocí standardizace, která dovoluje využívat obě technologie bez explicitních znalosti algoritmů a nutnosti spravovat akustické modely, používané při syntéze i rozpoznávání.
44
Syntetizér a rozpoznávač řeči Syntetizérem v kontextu této kapitoly rozumíme program, který komunikuje skrze síťové rozhraní s použitím níže popsaného MRCP protokolu a vystupuje v roli serveru, tedy od klienta v podobě Interpretu přijímá požadavky na poskytnutí služby převodu textu na řečový akustický signál. Stejně lze popsat i rozpoznávač s logickou výjimkou v inverzní povaze poskytované služby: převodu textu na text. V jiných nasazeních se lze samozřejmě setkat se syntetizéry i rozpoznávači, nepodporujícími síťová rozhraní - jedná se o knihovny, které lze přidat do vlastní aplikace.
45
4.2 Obsluha sestavení spojení Protokol MRCP je syntakticky podobný protokolu HTTP, rovněž se skládá z řádku s požadavkem, hlavičkami a tělem s obsahem. Na rozdíl od HTTP však MRCP dovoluje serveru, reprezentující rozpoznávač či syntetizér, zaslat kdykoliv zprávu klientovi, reprezentující VoiceXML interpret. Důvodem je asynchronní charakter zpracování požadavků klienta, jejichž odpověď je v případě syntézy k dispozici obvykle až po několika vteřinách, v případě rozpoznávání se může jednat až o přibližně deset vteřin. Povely protokolu MRCP jsou přenášeny v podobě textového obsahu těla protokolu Real Time Control Protocol (RTCP), který slouží k řízení přenosu stream médií v reálním čase. RTCP pracuje nad TCP/IP a definuje základní metody pro vytvoření spojení, ukončení a zaslání doplňujících informací mezi klientem a serverem. Význam RTCP je omezen na sestavení a ukončení spojení mezi klientem a serverem, a proto mu bude věnována jen okrajová pozornost. V počáteční fázi je zaslán požadavek od VocieXML interpretu k MRCP serveru pomocí metody SETUP. Součástí je popis kodeků, podporovaných interpretem společně s porty, na kterých interpret přijímá audio. Ke kódování audia je použitý standard Real Time Protocol (RTP), používaný k přenosu streamovaných médií nad IP/UDP i v jiných aplikacích. V následujícím příkladu zasílá VoiceXML interpret klientský požadavek na sestavení spojení s rozpoznávačem, který vystupuje jako MRCP server. SETUP rtsp://192.168.5.22/media/recognizer RTSP/1.0 cseq: 0 user-agent: WebSphere-VoiceEnabler 5.1.3 transport: rtp/avp;unicast;client_port=15082;mode=record;destination=192.168. 5.2
Hlavička transport informuje server o otevřeném UDP portu a IP adrese zařízení, které poskytuje audio k rozpoznání a přijímá audio se syntetizovanou řečí. Je nutné zdůraznit, že toto zařízení je nezávislí na VoiceXML interpretu, který vykonává logiku řečové aplikace, avšak nijak nepracuje s audio signálem. Klientským zařízením dle schématu architektury je typicky pobočková telefonní ústředna – Public Branch eXchange (PBX), která slouží jako brána mezi lokální IP sítí s jádrem řečové architektury a sítí Internet, přes kterou jsou připojeny uživatelské terminály. MRCP server následně odpoví potvrzením sestavení: RTSP/1.0 200 OK cseq: 0 date: Wed, 11 May 2011 07:56:59 GMT session: 1132.IBM.192.168.5.22 content-type: application/sdp content-length: 208 transport: rtp/avp;unicast;client_port=15082;mode=record;server_port=52266; destination=192.168.5.22 v=0
Server také zašle klientovi informace o svém portu, určeném ke komunikaci po sestavení spojení, a popisu podporovaných kodeků, pomocí kterých bude zakódován audio signál přenášený mezi ústřednou a serverem. V uvedeném případě bude použit bezztrátový kodek PCMU, který kóduje audio 64 kb/s pro vyšší kvalitu audio. Kvalitnější kodeky s vyššími nároky na přenesená data mají příznivý vliv na úspěšnost rozpoznávání.
47
4.3 Obsluha syntézy řeči Syntéza řeči je v protokolu MRCP realizována formou zaslání textu k syntéze v rámci MRCP metody SPEAK. Součástí textu mohou být i řídící metainformace o prozódii, případně dalších elementů jazyka VoiceXML, vztahujících se k syntéze. Syntetizér odpovídá okamžitě přijetím metody, avšak výsledek je obvykle znám až po řádově vteřinách. Příklad požadavku na syntézu řeči je uveden níže, kdy metoda SPEAK obsahuje ve svém těle část VoiceXML kódu s informacemi o rychlosti řeči. SPEAK 2143124 MRCP/1.0 kill-on-barge-in: false speech-language: cs-CZ logging-tag: [email protected] content-type: application/synthesis+ssml; charset=UTF-8 content-length: 468 <speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/10/synthesis http://www.w3.org/TR/speech-synthesis/synthesis.xsd" xml:lang="cs_CZ"> Kovboj vlítne do saloonu a zařve: <prosody rate="fast" volume="loud"> Kdo mi ukradl koně?! Ať se okamžitě přizná, nebo udělám to, co udělal můj strýc před padesáti lety!
Tělo metody SPEAK obsahuje část příkladu z kapitoly Syntéza řeči. VoiceXML interpret jednoduše zkopíruje část VoiceXML aplikace, doplní elementem speak s metainformacemi o standardu syntézy a použitém jazyku. Poté je tělo zabaleno do metody a doplněno potřebnými hlavičkami podobně, jako obsah přenášený protokolem HTTP. MRCP server odpoví ihned informací o probíhající syntéze: MRCP/1.0 2143124054100 200 IN-PROGRESS
Odpověď syntetizátoru vyjadřuje pouze úspěšné přijetí požadavku do fronty k vyřízení. Syntéza je obvykle hotova za několik vteřin a její výsledek v podobě audio signálu je odeslán pomocí protokolu RTP klientskému zařízení. MRCP server informuje interpret o úspěšném dokončení: SPEAK-COMPLETE 2143124054100 COMPLETE MRCP/1.0 Completion-Cause: 000 normal
Právě asynchronní povaha požadavků na MRCP server (rozpoznávač) je hlavním zajímavých rysem tohoto protokolu. V momentě, kdy je výsledek znám, např. syntéza řeči skončila, zašle syntetizér Intepretru VoiceXML tzv. EVENT, což je asynchronní informace o výsledku požadavku. Mechanismus zpracování je podobný jako při zaslání standardního požadavku, pouze interpret a syntetizér si
48
prohodí své role: interpret odpovídá jako server, kdy potvrdí přijetí zprávy EVENT, a syntetizér zasílá zprávu interpetru jako klient požadavek.
Nevýhodou protokolu MRCP je jeho složitost – množství příkazů pro syntézu a rozpoznávání, doplněné zprávami EVENT činí implementaci protokolu a jeho propojení s případným vlastním rozpoznávačem či syntetizérem obtížnou.
49
4.4 Obsluha rozpoznání řeči Komunikace mezi VoiceXML interpretem a rozpoznávačem na rozdíl od syntetizéru vyžaduje tzv. definici před započetím vlastního rozpoznávání. Řečové služby obvykle vyžadují velké množství složitých gramatik, které však nejdříve rozpoznávače převést do vlastní interní formy, závislé na vlastní implementaci. Standardní formát gramatik ve VoiceXML je sice snadno citovatelná lidmi a načítaný strojem, avšak nevhodný k rozpoznávání. Dalším důvodem zaslání gramatik předem je časová náročnost jejich převodu a riziko přítomné chyby. Přestože jsou základní pravidla tvorby gramatik jednoduchá, jejich kombinací společně s mnoha volbami mlže snadno dojít k chybě při vývoji. Gramatiky jsou tedy i proto ihned na začátku zkontrolovány bez nutnosti ručního testování procházením dialogů. Výpis níže obsahuje příklad zaslání gramatiky pomocí metody DEFINE-GRAMMAR. DEFINE-GRAMMAR 543257 MRCP/1.0 Content-Type:application/grammar+xml Content-Id:[email protected] Content-Length:254 ZvířataŠkolaMatematické
version="1.0"
mode="voice"
První řádek obsahuje typ požadavku na definici gramatiky, unikátní číslo zasílané gramatiky a verzi MRVP protokolu, následují tři řádky s hlavičkami s typem a délkou těla požadavku. Tělo samotné pak obsahuje definici gramatiky v jazyce VoiceXML. Zaslaná gramatika obsahuje chybu na řádku 3, kdy hlavní pravidlo se jmenuje jinak, než bylo definováno v elementu grammar. Rozpoznávač proto odpoví chybou: MRCP/1.0 543257 407 COMPLETE Completion-Cause: 005 gram-comp-failure
Detailnější informace nejsou skrze MRCP protokol poskytovány, pro detailní popis a nsáledné nalezení chyby je buď nutné podívat se do logu rozpoznávače (neplést s elementem log VoiceXML intepretru!) nebo použít gramatiku důkladně prostudovat. V případě opravení chyby a zaslání správné gramatiky pak rozpoznávač odpoví: MRCP/1.0 543257 200 COMPLETE Completion-Cause: 000 success
Gramatika je tedy připravena k provedení rozpoznávání.
50
4.5 Výsledek rozpoznání řeči Zahájení rozpoznávání a následné získání výsledků představuje pomyslný vrchol distribuované architektury řečových služeb. Po úspěšné definici všech gramatik je vykonávána logika aplikace, která obsahuje pokyny VoiceXML interpreta k zahájení rozpoznávání řeči. Výsledek, který je navrácen rozpoznávačem asynchronně řádově po vteřinách obsahuje informace, popsané v části Rozšířená práce s výsledky rozpoznání.
Přestože informace, vyměněné mezi MRCP serverem v podobě rozpoznávače a MRCP klientem v podobě VoiceXML interpretu jsou k dispozici ve vlastní VoiceXML aplikaci, možnost analyzovat komunikaci na úrovni MRCP protokolu je uživatelná v případě nekompatibilit mezi klientem a serverem, pocházejícím od různých výrobců. Dále protokolová analýza umožňuje lépe pochopit řízení a vykonání celého procesu rozpoznání, což je přínosné v případě vývoje a testování rozsáhlých nebo nestandardních řečových služeb. Následující příklad reálné MRCP komunikace představuje požadavek k rozpoznání v podobě metody RECOGNIZE, volané interpretem na rozpoznávači: RECOGNIZE 9 MRCP/1.0 content-type: text/uri-list; charset=UTF-8 speech-language: cs-CZ sensitivity-level: 50 speed-vs-accuracy: 50 n-best-list-length: 1 no-input-timeout: 10000 recognition-timeout: 10000 save-waveform: false speech-complete-timeout: 500 speech-incomplete-timeout: 1000 dtmf-interdigit-timeout: 5000 dtmf-term-char: # dtmf-term-timeout: 0 confidence-threshold: 50 accept-charset: UTF-8 recognizer-start-timers: true logging-tag: [email protected] content-length: 14 session:543257
Hlavička obsahuje název metody, následovaný unikátním číslem požadavku a verzí protokolu MRCP. Následuje velké množství hlaviček, které ovlivňují práci rozpoznávače. Bohužel jejich vyčerpávající popis je mimo rozsah tohoto kurzu. Obsahem těla je pak unikátní identifikátor použité gramatiky, přitom k požadavku na rozpoznání je možné přiřadit více gramatik. Po přijetí požadavku začne rozpoznávač aplikovat přiřazené gramatiky na audio signál, přicházející od klienta. Poté, co klient dokončí zadání svého povelu, ať už pomocí řeči nebo tónové volby, odešle rozpoznávač odpověď s výsledkem 51
interpretu v podobě tzv. inicializovaného serverem:
eventu,
tedy
požadavku
protokolu
MRCP
"medvedi" Zvířátka "matematicke" Škola
Odpověď je formátována dle standardu Natural Language Semantics Markup Language (NLSML), který je standardem organizace W3C. Element result slouží jako kontejner pro rozpoznané výsledky a obsahuje atribut x-model, který udává formát zápisu sémantické interpretace výsledků. V tomto případě je použit formát společnosti IBM, který vyžaduje použití uvozovek. Jak je uvedeno v části Rozšířená práce s výsledky rozpoznání, rozpoznávač může být nakonfigurován k vrácení několika kandidátů. K tomuto účelu slouží element interpretation, který zastupuje každého kandidáta a obsahuje detailní informace. Hodnota atributu confidence vyjadřuje relativní míru pravděpodobnosti na škále 0 až 100, že uživatel řekl právě tuto volbu. Vyšší hodnota označuje pravděpodobnějšího kandidáta. Element input obsahuje textovou transkripci volby, kterou uživatel skutečně řekl, zatímco element instance představuje sémantickou interpretaci této volby dle elementu tag, tedy hodnotu použitou dále v logice VoiceXML aplikace.
52
5 Závěr 5.1 Shrnutí Problematika řečových služeb zasahuje do mnoha oblastí včetně algoritmů pro zpracování řeči, návrhu, vývoje ve VoiceXML až k nasazení s použitím protokolu MRCP. Výhodami je alternativní ovládání služby pomocí řeči, která je vhodná např. do mobilních zařízení a všude tam, kde grafické rozhraní není možné, ať už z důvodu limitů klientského zařízení, zrakového či pohybového postižení uživatele. Další samostudium by mělo být směrováno k experimentálnímu ověření řečových služeb včetně robustnosti rozpoznávání řeči. K této látce je nezbytné vyvinout fungující řečovou služby a provést zhodnocení na základě vybrané gramatiky. Problematika nastřená v tomto materiálu se tak posouvá dále do analýzy dat, včetně např. práce v prostředí MATLAB. Experimenty je vhodné provádět v reálném venkovním prostředí pomocí mobilních telefonů na místech s různou kvalitou signály i úrovní hluku na pozadí.
53
6 Test 6.1 Test 1. K čenmu slouží element say-as? a) Pro správnou syntézu datumu, času a dalších údajů. b) Pro nastavení rychlosti a hlasitosti syntézy c) K definici výslovnosti položek gramatiky d) K definici hlasu při syntéze. správné řešení: a
2. Rozpoznávač ... a) Rozpoznává řeč b) Rozpoznává tónovou volbu c) Vrácí jediný výsledek rozpoznání d) Vrací výsledky až po explicitním dotatu interpetu správné řešení: a
3. Co je to Kuka? a) Algoritmus pro nastavení přirozeně znějící prozódie při syntéze b) Název interní formy gramatik v rozpoznávači c) Model popelářského vozu značky Praga d) Náhrada protokolu MRCP správné řešení: c
4. Externí obsah do běžící VoiceXML služby … a) Lze dodat elementem data b) Lze dodar elementem option c) Nelze, obsah musí být přítomen ve VoiceXML dokumentu d) Nelze, nutno uživatele přepojit na jinou službu správné řešení: a
54
5. K čemu slouží protokol MRCP? a) Komunikace s rozpoznávačem a syntetizérem b) Přenos audio signálu c) Načítání externího obsahu d) Komunikace s klientským zařízením správné řešení: a
6. Jak je VoiceXML interpret upozorněn na skončení syntézy? a) Událostí MRCP protokolu b) Vstupem uživatele c) Zahájením následného rozpoznávání d) Skokem do dalšího formuláře správné řešení: a
7. Z jakého důvodu jsou gramatiky registrovány v rozpoznávači ihned po sestavení spojení? a) Rychlé nalezení chyb b) Výpočetní náročnost c) Redukce pozdější síťové komunikace d) Nemožností rozponávače provést registraci později správné řešení: a, b
8. Lze získat statistické informace o výsledcích rozpoznání? a) Pomocí proměnné application.lastresult$ b) Z odpovědi rozpoznávače c) Nelze získat d) Lze získat jen při současném použití syntézy správné řešení: a, b
55
9. Na jaké chyby lze reagovat ve VocieXML? a) Nenalezena shoda s gramatikou b) Žádný vstup uživatele c) Chybné vykonání ECMAScriptu d) Nepodporvaný kodek klientského zařízení správné řešení: a, b, c
10. Jak se definují gramatiky v jazyce VoiceXML? a) Předem napsanými pravidly b) Opakováním c) Větvením d) Statistickým modelem správné řešení: a, b
11. Jakým způsobem se přechází mezi formuláři? a) Elementem goto b) Zpracováním výsledku rozpoznávání c) Elementem prompt d) Zpracováním výsledku syntézy správné řešení: a, b
12. Skrytý markovův model … a) Je statistický model pro rozpoznávání řeči b) Je statistický model pro syntézu řeči c) Pracuje se vstupními se vektory audio signálu d) Pracuje s trifóny správné řešení: a, c
56
13. Kterou pravděpodobnost lingvistický dekodér zná? a) Při zjištěné akustické informaci O bude detekována posloupnost slov W. b) Při vyřčení posloupnosti slov W bude zjištěna akustická informace O. c) Vyřčení posloupnosti slov W. d) Výskytu akustické informace O. správné řešení: a, c
14. Co je to N-Best-List? a) Seznam výsledků rozpoznání b) Seznam vhodných trifónů syntézy c) Seznam řazený dle pravděpodobnosti d) Pojem nesouvisí z řečovými službami správné řešení: a, c
15. Která informace je oříznuta při frekvenčním maskování? a) Neslyšitelné zvuky b) Vysoké frekvence následující po nízkých c) Vyskoké frekvence následující po vysokých d) Nízké frekvence následující po tichu správné řešení: a, b
16. Co je výstupem lingvistikého dekodéru? a) Posloupnost rozpoznaných slov b) Posloupnost fonému c) Nejpravděpodobnější posloupnost d) Výsledek Bayesova pravidla správné řešení: a, c, d
57
17. Co je to foném? a) Nejmenší rozlišitelný prvek řeči b) Reprezentace položky gramatiky c) Způsob výslovnosti jednoho až více písmen. d) Vstup rozpoznávače řeči. správné řešení: a, c
18. Která část nepatří do morfologicko syntaktického analyzátoru? a) Normalizace b) Morfologická analýza c) Fonémová optimalizace d) Kontrola syntaxe gramatiky správné řešení: c, d
19. Co spojuje konketační syntéza? a) Trifóny b) Prvky akustického modely c) Vektory akustického signálu uživatele d) Předem nahraná slova správné řešení: a, b
20. Jak lze měnit výslovnost řečii? a) Rychlost b) Mužský či ženský hlas c) Jazyk d) Melodie správné řešení: a, b, c