• No results found

Voice Portal with VoiceXML Platform

N/A
N/A
Protected

Academic year: 2021

Share "Voice Portal with VoiceXML Platform"

Copied!
106
0
0

Loading.... (view fulltext now)

Full text

(1)

Fakulta elektrotechniky a informatiky

Katedra informatiky

Hlasov ´y port ´al na platform ˇe

VoiceXML

Voice Portal with VoiceXML Platform

(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)

Diplomov´a pr´ace se zab ´yv´a n´avrhem a implementac´ı webov´eho a hlasov´eho port´alu na platformˇe VoiceXML.

Nejdˇr´ıve je pˇredstaven samotn ´y jazyk VoiceXML a vybran´e hlasov´e platformy. N´asleduje ´uvod do problematiky souvisej´ıc´ı s technologiemi pro synt´ezu ˇreˇci (TTS) a automatick´e rozpozn´av´an´ı ˇreˇci (ASR).

V pr´aci je d´ale pops´an n´avrh a implementace webov´eho a hlasov´eho rozhran´ı in-formaˇcn´ıho syst´emu pro rezervaci letenek. Nechyb´ı zde ani popis konfigurace hlasov´eho port´alu.

Souˇc´ast´ı pr´ace bylo tak´e proveden´ı z´atˇeˇzov ´ych test ˚u navrˇzen´eho hlasov´eho port´alu.

Kl´ıˇcov ´a slova: VoiceXML, VXML, hlasov ´y port´al, JSON, automatick´e rozpozn´av´an´ı ˇreˇci,

synt´eza ˇreˇci, JavaScript, Node.js, AngularJS, Asterisk, VoiceGlue, Voxeo Prophecy, SIP, ASR, TTS

Abstract

Master’s thesis deals with design and implementation of web and voice portal with VoiceXML platform.

There is an introduction to related technologies like speech synthesis (TTS) and auto-matic speech recognition (ASR) covered too.

First chapters are dedicated to introduction to VoiceXML language and voice platforms. Following chapters of this thesis describe design and implementaion of web and voice interface for ticket reservations information system. There is also a description of the configuration of the voice portal included in next chapter.

There were made some benchmark tests of designed voice portal too.

Keywords: VoiceXML, VXML, voice portal, JSON, automatic speech recognition, speech

synthesis, JavaScript, Node.js, AngularJS, Asterisk, VoiceGlue, Voxeo Prophecy, SIP, ASR, TTS

(10)
(11)

XML – Extensible Markup Language

IP – Internet Protocol

TCP/IP – Transmission Control Protocol/Internet Protocol

HTTP – Hypertext Transfer Protocol

W3C – World Wide Web Consortium

VoIP – Voice over Internet Protocol

SPA – Single Page Application

HTML – Hypertext Markup Language

AJAX – Asynchronous JavaScript and XML

JSON – JavaScript Object Notation

REST – Representational State Transfer

API – Application Programming Interface

URL – Uniform Resource Locator

TCP – Transmission Control Protocol

PDF – Portable Document Format

ASR – Automatic Speech Recognition

TTS – Text To Speech

DTMF – Dual-Tone Multi-Frequency signaling

IVR – Interactive Voice Response

MIME – Multipurpose Internet Mail Extensions

SMS – Short Message Service

CLI – Command Line Interface

AGI – Asterisk Gateway Interface

SIP – Session Initiation Protocol

CPU – Central Processing Unit

CSV – Comma-Separated Values

RHEL – Red Hat Enterprise Linux

MRCP – Media Resource Control Protocol

CCXML – Call Control eXtensible Markup Language

SRGS – Speech Recognition Grammar Specification

(12)
(13)

Obsah

1 Uvod´ 9

2 VoiceXML 11

2.1 Architektura . . . 11

2.2 Hlasov´e platformy VoiceXML . . . 12

2.2.1 Voxeo Prophecy . . . 12

2.2.2 VoiceGlue . . . 13

2.3 VoiceXML dokument . . . 15

2.3.1 Zpracov´an´ı VoiceXML dokumentu . . . 17

2.4 Z´aklady jazyka VoiceXML . . . 18

2.4.1 Navigace v hlasov´e aplikaci . . . 18

2.4.2 Z´ısk´an´ı vstupu od uˇzivatele . . . 19

3 Technologie Text to Speech 23 3.1 Textov´a anal ´yza . . . 23

3.2 Fonetick´a konverze a synt´eza ˇreˇci . . . 23

3.3 Vybran´a TTS ˇreˇsen´ı . . . 24

3.3.1 Festival Speech Synthesis System . . . 24

3.3.2 Flite . . . 24

3.3.3 Cepstral TTS . . . 25

4 Technologie Automatic Speech Recognition 27 4.1 Hlasov ´y vstup a jeho numerick´a reprezentace . . . 27

4.2 Fonetick´e mapov´an´ı a generov´an´ı v ´ystupu . . . 28

4.3 Vybran´a ASR ˇreˇsen´ı . . . 28

4.3.1 Loquendo . . . 28

4.3.2 Laboratoˇr poˇc´ıtaˇcov´eho zpracov´an´ı ˇreˇci TU Liberec . . . 29

5 N´avrh webov´eho port´alu 31 5.1 Uˇzivatelsk´e rozhran´ı . . . 32 5.2 Pouˇzit´e technologie . . . 35 5.2.1 JavaScript . . . 35 5.2.2 AngularJS . . . 35 5.2.3 Node.js . . . 35 5.2.4 Express.js . . . 37 5.2.5 MongoDB . . . 37 5.2.6 WebSockets . . . 37 5.2.7 Grunt . . . 38 5.2.8 Jade . . . 38

(14)

6.2 Implementace hlasov´eho port´alu . . . 41

6.2.1 Implementace pomocn´e knihovny . . . 41

6.2.2 Aplikaˇcn´ı rozhran´ı knihovny . . . 44

6.2.3 Popis implementace vybran ´ych ˇc´ast´ı hlasov´eho port´alu . . . 62

7 Konfigurace a zprovoznˇen´ı hlasov´eho port´alu 67 7.1 Aplikaˇcn´ı server . . . 67 7.2 Voxeo Prophecy . . . 68 7.2.1 Instalace . . . 68 7.2.2 Konfigurace . . . 69 7.3 VoiceGlue . . . 69 7.3.1 Instalace . . . 69 7.3.2 Konfigurace . . . 71

8 Z´atˇeˇzov´e testy port´alu 73 8.1 Sc´en´aˇr z´atˇeˇzov ´ych test ˚u . . . 73

8.2 Pouˇzit´e n´astroje . . . 74

8.2.1 SIPp . . . 76

8.2.2 top . . . 76

8.2.3 Automatizaˇcn´ı skript . . . 77

8.3 V ´ysledky mˇeˇren´ı . . . 78

8.3.1 Z´atˇeˇzov ´y test ˇc. 1 . . . 78

8.3.2 Z´atˇeˇzov ´y test ˇc. 2 . . . 81

8.3.3 Z´atˇeˇzov ´y test ˇc. 3 . . . 81

8.3.4 Obecn´e zhodnocen´ı . . . 81 9 Z´avˇer 87 10 Pouˇzit´e zdroje 89 Pˇr´ılohy 90 A Pˇr´ılohy 91 A.1 Obsah CD . . . 91

A.2 Diagramy jednotliv ´ych ˇc´ast´ı hlasov´eho port´alu . . . 91

A.2.1 V textu uveden´e diagramy . . . 91

(15)

Seznam tabulek

1 Hodnoty slouˇz´ıc´ı k urˇcen´ı datov´eho typu formul´aˇrov ´ych prvk ˚u . . . 20

2 Implementovan´e metody REST API . . . 33

3 Textov´e hodnoty pro definici pauzy a pˇridruˇzen ´ych d´elek pauzy . . . 59

4 Mapov´an´ı stisk ˚u kl´aves na znaky . . . 64

(16)
(17)

Seznam obr ´azk ˚

u

1 Architektura VoiceXML . . . 12

2 Architektura VoiceGlue . . . 14

3 Stromov´a struktura dokumentu VoiceXML . . . 16

4 Proces pˇrevodu textu na ˇreˇc . . . 24

5 Proces automatick´eho rozpozn´av´an´ı ˇreˇci . . . 28

6 Str´anka se seznamem let ˚u a filtrem . . . 34

7 Str´anka s formul´aˇrem pro editaci letu . . . 36

8 Hlavn´ı struktura hlasov´eho port´alu . . . 42

9 Struktura stavu getLoginData (GetLoginDataF low) . . . 43

10 Struktura komponenty pro zad´an´ı data . . . 63

11 Struktura komponenty pro zad´an´ı textov´eho vstupu . . . 64

12 Struktura komponenty pro zvolen´ı destinace . . . 65

13 Struktura stavu destinationSelection (DestinationSelectionF low) . . . . 66

14 Registrace nov´e VXML aplikace . . . 70

15 Sch´ema simulovan´eho hovoru . . . 75

16 Vyuˇzit´ı CPU pˇri spuˇstˇen´ı 5 soubˇeˇzn ´ych hovor ˚u, celkovˇe 5 hovor ˚u . . . 79

17 Vyuˇzit´ı pamˇeti RAM pˇri spuˇstˇen´ı 5 soubˇeˇzn ´ych hovor ˚u, celkovˇe 5 hovor ˚u 80 18 Vyuˇzit´ı CPU pˇri spuˇstˇen´ı 10 soubˇeˇzn ´ych hovor ˚u, celkovˇe 20 hovor ˚u . . . . 82

19 Vyuˇzit´ı pamˇeti RAM pˇri spuˇstˇen´ı 10 soubˇeˇzn ´ych hovor ˚u, celkovˇe 20 hovor ˚u 83 20 Vyuˇzit´ı CPU pˇri spuˇstˇen´ı 60 soubˇeˇzn ´ych hovor ˚u, celkovˇe 60 hovor ˚u . . . . 84

21 Vyuˇzit´ı pamˇeti RAM pˇri spuˇstˇen´ı 60 soubˇeˇzn ´ych hovor ˚u, celkovˇe 60 hovor ˚u 85 22 Struktura stavu createN ew (CreateN ewF low) . . . 92

23 Struktura stavu cancelActive (CancelActiveF low) . . . 93

24 Struktura stavu listActive (ListActiveF low) . . . 93

25 Struktura stavu f ilterByArrivalDate (F ilterByArrivalDateF low) . . . . 93

26 Struktura stavu f ilterByDepartureDate (F ilterByDepartureDateF low) 93 27 Struktura stavu reservationM enu (ReservationM enuF low) . . . 94

(18)
(19)

Seznam v ´ypis ˚

u zdrojov ´eho k ´

odu

1 VoiceXML dokument . . . 16

2 Vytvoˇren´ı menu pomoc´ı elementu <menu> . . . 18

3 Vytvoˇren´ı formul´aˇre pro z´ısk´an´ı uˇzivatelsk´e vstupu . . . 20

4 Definice pˇr´ıpustn ´ych hodnot uˇzivatelsk´eho vstupu pomoc´ı gramatiky . . 21

5 Zdrojov ´y k ´od uk´azkov´e aplikace . . . 44

6 Vytvoˇren´ı hlavn´ıho objektu aplikace . . . 46

7 Vytvoˇren´ı instance tˇr´ıdy Prompt . . . 50

8 Vytvoˇren´ı instance tˇr´ıdy Say . . . 51

9 K ´od vygenerovan ´y pro stav s hlasov ´ym modelem Say . . . 51

10 K ´od vygenerovan ´y pro stav s hlasov ´ym modelem Exit . . . 52

11 Vytvoˇren´ı stavu s hlasov ´ym modelem Record . . . 53

12 K ´od vygenerovan ´y pro stav s hlasov ´ym modelem Record . . . 54

13 K ´od vygenerovan ´y pro stav s hlasov ´ym modelem Ask . . . 55

14 Vytvoˇren´ı hlasov´e gramatiky . . . 56

15 Vytvoˇren´ı kombinovan´e gramatiky Choices . . . 58

16 Vytvoˇren´ı instance tˇr´ıdy Audio . . . 58

17 Vytvoˇren´ı instance tˇr´ıdy Silence . . . 59

18 Vytvoˇren´ı instance tˇr´ıdy SayAs . . . 59

19 Pouˇzit´ı z´astupn´eho objektu Var . . . 60

20 Pouˇzit´ı z´astupn´eho objektu Var s funkˇcn´ım parametrem . . . 61

21 Konfigurace souboru /etc/asterisk/manager.conf . . . 71

22 Konfigurace souboru /etc/asterisk/sip.conf . . . 72

23 Konfigurace souboru /etc/asterisk/extensions.conf . . . 72

(20)
(21)

1

Uvod

´

T´ematem diplomov´e pr´ace je n´avrh a implementace webov´eho a hlasov´eho port´alu na platformˇe VoiceXML. V ´ybˇer t´ematu pr´ace byl motivov´an m ´ym z´ajmem navrhnout we-bov ´y informaˇcn´ı syst´em, kter ´y bude z´arove ˇn moˇzn´e ovl´adat i pomoc´ı samoobsluˇzn´eho hlasov´eho kan´alu a pˇrinese tak uˇzivatel ˚um flexibilnˇejˇs´ı moˇznosti ovl´ad´an´ı. V diplomov´e pr´aci je pops´an n´avrh webov´eho a hlasov´eho rozhran´ı informaˇcn´ıho syst´emu pro rezervaci letenek.

Druh´a aˇz ˇctvrt´a kapitola se zab ´yv´a teoretick ´ym ´uvodem do problematiky n´avrhu hlasov ´ych aplikac´ı postaven ´ych na platformˇe VoiceXML.

V druh´e kapitole je nejdˇr´ıve pˇredstaven jazyk VoiceXML a struktura VoiceXML doku-ment ˚u. Kapitola pokraˇcuje popisem vybran ´ych hlasov ´ych platforem, na kter ´ych je moˇzn´e hlasov´e aplikace provozovat. N´apln´ı z´avˇereˇcn´e ˇc´asti kapitoly je sezn´amen´ı s praktick ´ym n´avrhem aplikac´ı pomoc´ı jazyka VoiceXML.

Tˇret´ı kapitola pˇredstavuje problematiku technologie TTS, tedy technologie pˇrevodu textu na ˇreˇc.

ˇ

Ctvrt´a kapitola se zab ´yv´a problematikou automatick´eho rozpozn´av´an´ı ˇreˇci pomoc´ı technologie ASR.

Na zaˇc´atku p´at´e kapitoly je pˇredstavena navrhovan´a aplikace, tedy informaˇcn´ı syst´em pro rezervaci letenek. Zbytek kapitoly je vˇenov´an n´avrhu webov´eho port´alu a pouˇzit ´ym technologi´ım.

Na n´avrh webov´eho port´alu plynule navazuje kapitola ˇsest´a, kter´a nejdˇr´ıve pˇredstavuje vlastnosti hlasov´eho port´alu a pot´e popisuje jeho samotn ´y n´avrh. Pˇrev´aˇzn´a ˇc´ast kapi-toly je vˇenov´ana n´avrhu knihovny, kter´a slouˇz´ı k usnadnˇen´ı n´avrhu hlasov ´ych aplikac´ı postaven ´ych na platformˇe VoiceXML.

N´apln´ı sedm´e kapitoly je popis konfigurace vybran ´ych hlasov ´ych platforem a zprovoznˇen´ı navrˇzen´eho hlasov´eho port´alu.

Posledn´ı kapitola se zab ´yv´a proveden´ım z´atˇeˇzov ´ych test ˚u hlasov´eho port´alu, kde jsou prakticky zjiˇstˇeny hardwarov´e a softwarov´e poˇzadavky na provozn´ı prostˇred´ı hlasov´eho port´alu.

(22)
(23)

2

VoiceXML

VoiceXML je znaˇckovac´ı jazyk zaloˇzen ´y na jazyku XML. Tento jazyk slouˇz´ı k popisu hlasov ´ych dialog ˚u mezi ˇclovˇekem a poˇc´ıtaˇcem.

V ´yvoj jazyka zaˇcal v roce 1999. V tomto roce zaloˇzily spoleˇcnosti Motorola, IBM, AT&T a Lucent organizaci VoiceXML Forum. Tato organizace vznikla za ´uˇcelem sjednocen´ı propriet´arn´ıch ˇreˇsen´ı tˇechto firem a v ´ysledkem tohoto snaˇzen´ı vznikl standard VoiceXML. V srpnu roku 1999 organizace VoiceXML Forum uvolnila prvn´ı specifikaci standardu VoiceXML 0.9. Na jaˇre roku 2000 n´asledovalo zveˇrejnˇen´ı verze 1.0 [1].

Po vyd´an´ı verze 1.0 doˇslo k pˇred´an´ı standardu konsorciu W3C. Konzorcium W3C pot´e vydalo v bˇreznu 2004 verzi standardu VoiceXML 2.0 a po z´ısk´an´ı zpˇetn´e vazby od partner ˚u doˇslo k vyd´an´ı rozˇs´ıˇren´ı standardu prostˇrednictv´ım verze VoiceXML 2.1. Toto rozˇs´ıˇren´ı je zpˇetnˇe kompatibiln´ı s verz´ı 2.0.

Organizace VoiceXML Forum po pˇred´an´ı standardu VoiceXML konzorciu W3C nezanikla a st´ale podporuje v ´yvoj standardu.

2.1 Architektura

Architektura VoiceXML je velmi podobn´a architektuˇre webov ´ych aplikac´ı. U webov ´ych aplikac´ı jsou vˇsechny HTML dokumenty uloˇzeny na serveru. Kdyˇz uˇzivatel potˇrebuje st´ahnout nˇejak ´y dokument, tak prostˇrednictv´ım sv´eho prohl´ıˇzeˇce vyvol´a poˇzadavek. Prostˇrednictv´ım HTTP protokolu je tento dokument staˇzen ze serveru a prohl´ıˇzeˇc ho m ˚uˇze zpracovat. V ´ysledkem zpracov´an´ı je zobrazen ´y dokument, se kter ´ym m ˚uˇze uˇzivatel pracovat.

Ve VoiceXML aplikac´ıch jsou dokumenty tak´e uloˇzeny na webov´em serveru. Typicky jsou tyto dokumenty generov´any dynamicky aplikaˇcn´ım (webov ´ym) serverem. Vedle aplikaˇcn´ıho serveru, m ˚uˇze b ´yt souˇc´ast´ı architektury datab´azov ´y server, kter ´y slouˇz´ı jako zdroj dat.

Mimo aplikaˇcn´ı a datab´azov ´y server, architektura VoiceXML nav´ıc obsahuje hlasov ´y server. Souˇc´ast´ı hlasov´eho serveru je interpretr VoiceXML dokument ˚u, modul pro synt´ezu ˇreˇci (TTS) a modul pro rozpozn´av´an´ı ˇreˇci (ASR). Hlasov ´y server zast´av´a roli prohl´ıˇzeˇce, kter ´y je pouˇz´ıv´an u webov ´ych aplikac´ı. Generuje zvukov´e v ´yzvy a interpretuje hlasov´e volby od uˇzivatele.

Uˇzivatel se k hlasov´emu serveru pˇripojuje prostˇrednictv´ım telefonn´ıho zaˇr´ızen´ı. T´ımto zaˇr´ızen´ım m ˚uˇze b ´yt napˇr. pevn´a linka, kter´a je souˇc´ast´ı veˇrejn´e telefonn´ı s´ıtˇe nebo VoIP telefon, kter ´y je pˇripojen do VoIP s´ıtˇe. Tato zaˇr´ızen´ı jsou pot´e prostˇrednictv´ım telefonn´ı

´ustˇredny pˇripojena k hlasov´emu serveru.

Jednotliv´e servery spolu komunikuj´ı prostˇrednictv´ım protokolu TCP/IP. Pro pˇrenos dat je typicky zvolen HTTP protokol.

(24)

Obr´azek 1: Architektura VoiceXML

2.2 Hlasov ´e platformy VoiceXML

V t´eto ˇc´asti pˇredstav´ım dvˇe hlasov´e (IVR) platformy, nad kter ´ymi lze provozovat VoiceXML aplikace. U kaˇzd´e platformy pop´ıˇsi architekturu, uvedu pˇrehled dostupn ´ych funkc´ı a zm´ın´ım licenˇcn´ı podm´ınky, kter´e jsou spojeny s pouˇz´ıv´an´ım IVR platformy. V neposledn´ı ˇradˇe uvedu informaci o podporovan´e verzi jazyka VoiceXML.

Hlasov ´y port´al, jehoˇz n´avrh bude pops´an v kapitole 6, bude optimalizov´an pro provoz pr´avˇe nad tˇemito hlasov ´ymi platformami.

2.2.1 Voxeo Prophecy

Voxeo Prophecy je komerˇcn´ı IVR platforma. Kl´ıˇcovou vlastnost´ı t´eto platformy je jednoduch´a instalace a rychl´e uveden´ı hlasov´e aplikace do provozu. Souˇc´ast´ı distribuce platformy je modul pro synt´ezu ˇreˇci (TTS) a modul slouˇz´ıc´ı k rozpozn´av´an´ı ˇreˇci (ASR).

Platformu je moˇzn´e integrovat s veˇrejnou telefonn´ı s´ıt´ı. Aplikace provozovan´e nad touto platformou mohou b ´yt ovl´ad´any pomoc´ı DTMF volby nebo pomoc´ı automatick´eho rozpozn´av´an´ı ˇreˇci. Pˇrestoˇze je souˇc´ast´ı platformy JBoss server, nad kter ´ym lze provozovat aplikaˇcn´ı server, nen´ı tato platforma uzavˇrena v ˚uˇci dalˇs´ım technologi´ım (napˇr. Node.js, Python).

IVR Voxeo Prophecy je moˇzn´e provozovat na operaˇcn´ıch syst´emech Windows (32 i 64 bit ˚u), Mac OS X a na linuxov ´ych distribuc´ıch, kter´e jsou zaloˇzeny na RHEL (napˇr. CentOS). Pro produkˇcn´ı prostˇred´ı je vˇsak doporuˇcov´an operaˇcn´ı syst´em zaloˇzen ´y na linuxu.

Jak jiˇz bylo uvedeno, Voxeo Prophecy je komerˇcn´ı platformou. Provoz t´eto platformy je velmi limitov´an licenˇcn´ımi podm´ınkami. Voxeo Prophecy s podporou dvou soubˇeˇzn ´ych hovor ˚u je moˇzn´e st´ahnout zdarma. Aplikaci lze bez registrace provozovat pouze po dobu jednoho mˇes´ıce. M ˚uˇzeme vˇsak u Voxea podstoupit bezplatnou registraci a touto registrac´ı odstranit ˇcasov´e omezen´ı. Aplikaci lze pot´e provozovat po neomezenˇe dlouhou dobu, omezen´ı na dva soubˇeˇzn´e hovory vˇsak st´ale z ˚ust´av´a.

(25)

Po registraci m´ame moˇznost dokoupit si licenci na provozov´an´ı v´ıce soubˇeˇzn ´ych hovor ˚u (port ˚u) [24]. Poˇr´ızen´ı dalˇs´ıch port ˚u vˇsak nen´ı levnou z´aleˇzitost´ı. Na webu spoleˇcnosti Voxeo je moˇzn´e naj´ıt aktu´aln´ı cen´ık.

Platforma Voxeo Prophecy sest´av´a ze ˇctyˇr server ˚u [2], jejichˇz spuˇstˇen´ı se dˇeje automat-icky po startu syst´emu:

• Voxeo Prophecy Server

• Voxeo Prophecy VoiceXML Browser • Voxeo Prophecy Management Console • Voxeo Prophecy Application Server

Voxeo Prophecy Server je tvoˇren dvˇemi ˇc´astmi. Jedna ˇc´ast slouˇz´ı ke zpracov´an´ı ˇr´ıd´ıc´ıch CCXML1informac´ı. Druh´a ˇc´ast je tvoˇrena MRCP serverem, kter ´y slouˇz´ı ke zpracov´av´an´ı m´edi´ı.

Voxeo Prophecy VoiceXML Browser je interpretr, kter ´y slouˇz´ı ke zpracov´an´ı VoiceXML dokument ˚u. Tento interpretr plnˇe podporuje specifikaci VoiceXML verze 2.1.

Voxeo Prophecy Management Console pˇredstavuje rozhran´ı pro spr´avu hlasov ´ych aplikac´ı.

Aplikaˇcn´ı server Voxeo Prophecy Application Sever umoˇz ˇnuje provozovat webov´e aplikace postaven´e na technologii Java.

Souˇc´ast´ı platformy Voxeo Prophecy je d´ale SIP klient s grafick ´ym rozhran´ım, kter´eho lze spouˇstˇet pˇr´ımo ve webov´em prohl´ıˇzeˇci. Prostˇrednictv´ım tohoto klienta je moˇzn´e, bez dalˇs´ı konfigurace, testovat vytv´aˇren´e aplikace.

Konfigurace hlasov ´ych aplikac´ı prob´ıh´a prostˇrednictv´ım webov´eho rozhran´ı, jehoˇz jedna str´anka je zobrazena na obr´azku 14.

Spoleˇcnost Voxeo je z´arove ˇn provozovatelem dom´eny vxml.org, kde je moˇzn´e nal´ezt dokumentaci k jazyku VoiceXML.

V ´yhodou t´eto platformy je velmi kvalitn´ı syntetiz´ator ˇreˇci (TTS) a podpora automat-ick´eho rozpozn´av´an´ı ˇreˇci (ASR). Tyto v ´yhody jsou ale vykoupeny licenˇcn´ımi podm´ınkami, kter´e n´am dovoluj´ı na platformˇe provozovat maxim´alnˇe dva soubˇeˇzn´e hovory.

V kapitole 7.2 je uveden podrobn ´y popis instalace a konfigurace platformy Voxeo Prophecy.

2.2.2 VoiceGlue

VoiceGlue samotn´e netvoˇr´ı hlasovou platformou. Jedn´a se o pˇr´ıdavn´e rozˇs´ıˇren´ı softwarov´e ´ustˇredny Asterisk.

Asterisk je platforma pro provozov´an´ı telekomunikaˇcn´ıch aplikac´ı. Asterisk je projekt s otevˇren ´ym zdrojov ´ym k ´odem, kter ´y je uvolnˇen pod licenc´ı GNU GPL. V ´yvoj Asterisku je sponzorov´an spoleˇcnost´ı Digium [3].

(26)

Obr´azek 2: Architektura VoiceGlue

Asterisk ve standardn´ı konfiguraci neposkytuje podporu VoiceXML aplikac´ı, ale d´ıky sv´e modul´arn´ı architektuˇre je moˇzn´e Asterisk o tuto podporu rozˇs´ıˇrit.

Asterisk je navrˇzen pro unixov´e operaˇcn´ı syst´emy (GNU/Linux, OpenBSD, FreeBSD, Mac OS X). K dispozici je i komunitn´ı verze portov´ana do prostˇred´ı operaˇcn´ıho syst´emu Windows.

VoiceGlue je projekt pˇrin´aˇsej´ıc´ı podporu VoiceXML aplikac´ı pro platformu Aster-isk. VoiceGlue je postaveno nad OpenVXI interpretrem [4]. V dobˇe psan´ı t´eto pr´ace je nejnovˇejˇs´ı verze 0.14 z listopadu 2011.

VoiceXML interpretr nab´ız´ı plnou podporu specifikace VoiceXML 2.0 a z´arove ˇn imple-mentuje nˇekter´e vlastnosti ze specifikace VoiceXML 2.1.

Aplikace provozovan´e na t´eto platformˇe je moˇzn´e ovl´adat pouze pomoc´ı DTMF volby. Souˇc´ast´ı VoiceGlue bohuˇzel nen´ı modul pro automatick´e rozpozn´av´an´ı ˇreˇci. VoiceGlue podporuje pˇrehr´av´an´ı nahran ´ych audio soubor ˚u ve form´atech, kter´e jsou podporov´any Asteriskem, d´ale podporuje nahr´av´an´ı vstupu ve form´atu ulaw.

Flexibilita Asterisku neomezuje provoz VoiceXML pouze na SIP telefonii, ale je moˇzn´e vyuˇz´ıt jak ´ykoliv jin ´y, Asteriskem podporovan ´y, telefonn´ı kan´al [5].

Do budoucna autoˇri VoiceGlue slibuj´ı integraci s ASR rozpozn´avaˇcem LumenVox, kvalitnˇejˇs´ı TTS syntetiz´ator a plnou podporu specifikace VoiceXML 2.1.

(27)

Souˇc´ast´ı VoiceGlue je hlasov ´y syntetiz´ator Flite (viz kapitola 3.3.2). Flite je moˇzn´e jednoduchou ´upravou konfiguraˇcn´ıho souboru VoiceGlue nahradit jin ´ym syntetiz´atorem.

Podle autor ˚u by nemˇelo b ´yt probl´em provozovat VoiceGlue na jak´emkoliv unixov´em operaˇcn´ım syst´emu.

Na obr´azku 2 je zn´azornˇena architektura VoiceGlue a propojen´ı s Asteriskem.

Propojen´ı Asterisku s VoiceGlue je ´ukolem mezivrstvy P honeGlue. Samotnou architek-turu VoiceGlue je moˇzn´e logicky rozdˇelit na tˇri hlavn´ı ˇc´asti.

• s´ıˇtov´e rozhran´ı

• ˇc´ast zpracov´avaj´ıc´ı VoiceXML dokumenty • rozhran´ı pro telefonii

S´ıˇtov´e rozhran´ı komunikuje s aplikaˇcn´ım (webov ´ym) serverem, kter ´y generuje VoiceXML dokumenty. Komunikace prob´ıh´a nad protokolem TCP/IP pomoc´ı protokolu HTTP.

ˇ

C´ast zpracov´avaj´ıc´ı VoiceXML dokumenty je tvoˇrena nˇekolika dalˇs´ımi ˇc´astmi. Jednou ˇc´ast´ı je OpenVXI interpretr. Dalˇs´ı ˇc´ast´ı je syntaktick ´y analyz´ator Xerces. O zpracov´an´ı pˇr´ıpadn ´ych skript ˚u jazyka ECMAScript se star´a engine SpiderMonkey.

Rozhran´ı pro telefonii je tvoˇreno dalˇs´ımi tˇremi ˇc´astmi. Prvn´ı ˇc´ast je pˇripravena pro implementaci rozpozn´av´an´ı hlasu pomoc´ı ASR rozpozn´avaˇce LumenVox (zat´ım nen´ı implementov´ana). Dalˇs´ı ˇc´ast tvoˇr´ı hlasov ´y syntetiz´ator Flite. Posledn´ı ˇc´ast m´a na starost komunikaci s mezivrstvou P honeGlue. [2]

Uveden´ı t´eto hlasov´e platformy do provozu nen´ı tak jednoduch´e jako v pˇr´ıpadˇe plat-formy Voxeo Prophecy. Nejdˇr´ıve je potˇreba nakonfigurovat Asterisk a pot´e doinstalovat a nakonfigurovat rozˇs´ıˇren´ı VoiceGlue. Podrobnˇeji je tento proces pops´an v kapitole 7.3.

Mezi hlavn´ı v ´yhody VoiceGlue je otevˇrenost zdrojov´eho k ´odu, resp. licence pod kterou je VoiceGlue uvolnˇeno. Na druhou stranu m´a toto ˇreˇsen´ı zat´ım dost nev ´yhod. Jako hlavn´ı nev ´yhody lze uv´est absenci modulu pro rozpozn´av´an´ı ˇreˇci, nekvalitn´ı syntetiz´ator ˇreˇci a chybˇej´ıc´ı ´uplnou podporu specifikace VoiceXML verze 2.1.

Vzhledem k tomu, ˇze posledn´ı aktivita autor ˚u VoiceGlue byla na jejich webu zazname-nan´a koncem roku 2011, nem ˚uˇzeme s urˇcitost´ı v bl´ızk´e dobˇe poˇc´ıtat s implementac´ı tˇechto chybˇej´ıc´ıch vlastnost´ı.

2.3 VoiceXML dokument

Jazyk VoiceXML vych´az´ı ze znaˇckovac´ıho jazyka XML a proto pro nˇej plat´ı veˇsker´a pravidla spojen´a s jazykem XML. Kaˇzd ´y VoiceXML dokument mus´ı spl ˇnovat n´asleduj´ıc´ı pravidla [6]:

• obsahuje pr´avˇe jeden koˇrenov ´y element

• nepr´azdn´e elementy mus´ı b ´yt ohraniˇceny startovac´ı a ukonˇcovac´ı znaˇckou • vˇsechny hodnoty atribut ˚u mus´ı b ´yt uzavˇreny v uvozovk´ach

(28)

Obr´azek 3: Stromov´a struktura dokumentu VoiceXML • elementy mohou b ´yt vnoˇreny, ale nemohou se pˇrekr ´yvat

Ve v ´ypise 1 je uvedena uk´azka jednoduch´eho VoiceXML dokumentu. Jednotliv´e elementy dokumentu tvoˇr´ı stromovou strukturu. Struktura tohoto VoiceXML dokumentu je zachycena na obr´azku 3.

VoiceXML dokument b ´yv´a typicky ˇclenˇen do nˇekolika dialog ˚u a subdialog ˚u. Jednotliv´e dialogy obsahuj´ı instrukce popisuj´ıc´ı interakce s uˇzivatelem aplikace. Kaˇzd ´y dialog m ˚uˇze z´arove ˇn obsahovat informaci o tom, do jak´eho dalˇs´ıho dialogu se m´a po dokonˇcen´ı zpracov´an´ı dialogu pokraˇcovat.

Subdialogy lze ch´apat jako pomocn´e funkce, kter´e jsou vol´any z rodiˇcovsk´eho dialogu a mohou prov´est nˇejakou akci a pot´e vr´atit v ´ysledek zpˇet rodiˇcovsk´emu dialogu.

Dialogy m ˚uˇzeme ve VoiceXML rozdˇelit na dva typy. Prvn´ım typem jsou formul´aˇre. Formul´aˇre popisuj´ı interakci vedouc´ı k z´ısk´an´ı uˇzivatelsk´eho vstupu a pomoc´ı gramatik definuj´ı pˇr´ıpustn´e hodnoty pro vstup. Druh ´ym typem jsou menu. Menu d´avaj´ı uˇzivateli na v ´ybˇer ze seznamu voleb a po proveden´ı v ´ybˇeru provedou urˇcenou akci (pˇresun do jin´eho dialogu).

1 <?xml version="1.0"?>

2 <vxml version="2.0">

3 <var name="msg" expr="’Hello world!’"/>

4

5 <form id="dialog1">

6 <block>

(29)

8 <value expr="msg"/>

9 </prompt>

10

11 <goto next="#dialog2"/>

12 </block> 13 </form> 14 15 <form id="dialog2"> 16 <block> 17 Second dialog. 18 </block> 19 </form> 20 </vxml>

V ´ypis 1: VoiceXML dokument

2.3.1 Zpracov ´an´ı VoiceXML dokumentu

VoiceXML dokument je zpracov´av´an interpretrem. Zpracov´an´ı dokumentu zaˇc´ın´a u koˇrenov´eho elementu a postupnˇe se pokraˇcuje k dceˇrin ´ym element ˚um.

Nyn´ı se vraˇtme k v ´ypisu 1 v nˇemˇz je uveden zdrojov ´y k ´od jednoduch´eho VoiceXML dokumentu.

Na prvn´ım ˇr´adku m ˚uˇzeme vidˇet definici verze XML dokumentu. Na dalˇs´ım ˇr´adku specifikujeme verzi VoiceXML dokumentu. Touto informac´ı sdˇelujeme interpretru verzi standardu VoiceXML, dle kter´e se bude dokument zpracov´avat.

Uvnitˇr elementu <vxml> je obsaˇzen k ´od popisuj´ıc´ı chov´an´ı hlasov´e aplikace. Na tˇret´ım ˇr´adku definujeme pomoc´ı elementu <var> promˇennou a z´arove ˇn j´ı nastavujeme hodnotu.

N´asleduje definice dvou dialog ˚u. Prvn´ı dialog uˇzivateli pˇrehraje zpr´avu uloˇzenou v promˇenn´e, kterou jsme definovali na tˇret´ım ˇr´adku. N´aslednˇe pˇrech´az´ı zpracov´an´ı dokumentu do dialogu s identifik´atorem ”dialog2”.

Tento pˇrechod zajiˇsˇtuje element <goto>. Nastaven´ım hodnoty atributu next ele-mentu lze specifikovat identifik´ator dialogu, do kter´eho se m´a pˇrej´ıt.

Druh ´y dialog uˇzivateli n´aslednˇe pˇrehraje definovanou zpr´avu.

Zpracov´an´ı tohoto dokumentu je moˇzn´e rozdˇelit do n´asleduj´ıc´ıch krok ˚u [1]: 1. voiceXML dokument je nahr´an do pamˇeti

2. je provedena kontrola, zda je dokument validn´ım XML dokumentem

3. provede se inicializace promˇenn ´ych (pokud jsou v dokumentu nˇejak´e definovan´e) 4. provede se naˇcten´ı prvn´ıho dialogu a je spuˇstˇen obsah elementu <block>.

(30)

6. druh ´y dialog je uvolnˇen z pamˇeti a zpracov´an´ı VoiceXML je ukonˇceno

2.4 Z ´aklady jazyka VoiceXML

V n´asleduj´ıc´ı sekci struˇcnˇe pop´ıˇsi z´akladn´ı postupy, kter ´ych b ´yv´a uˇzito pˇri n´avrhu hlasov ´ych aplikac´ı pomoc´ı jazyka VoiceXML.

2.4.1 Navigace v hlasov ´e aplikaci

VoiceXML n´am poskytuje nˇekolik element ˚u, pomoc´ı kter ´ych lze jednoduˇse navrhovat navigaˇcn´ı prvky mezi jednotliv ´ymi ˇc´astmi aplikace. My si zde bl´ıˇze pˇredstav´ıme pouze element <menu>.

Tento element umoˇz ˇnuje jednoduch ´ym zp ˚usobem sestavit interaktivn´ı menu, ve kter´em m ˚uˇze uˇzivatel prov´est volbu. Na z´akladˇe jeho volby doch´az´ı k pˇresunu do jin´e ˇc´asti aplikace.

Ve v ´ypise 2 je uveden zdrojov ´y k ´od [24], kter ´y demonstruje vytvoˇren´ı navigaˇcn´ıho menu pomoc´ı elementu <menu>.

1 <?xml version="1.0"?>

2 <vxml version="2.0">

3 <menu scope="dialog">

4 <prompt>

5 Please select one of the following options: ↩→ reservations info or account info. 6 </prompt>

7

8 <choice next="#reservations">

9 reservations info

10 </choice>

11 <choice next="#account">

12 account info 13 </choice> 14 15 <nomatch> 16 <reprompt/> 17 </nomatch> 18 </menu> 19 20 <form id="reservations"> 21 <block>

(31)

23 <exit/> 24 </block> 25 </form> 26 27 <form id="account"> 28 <block>

29 Account info dialog. 30 <exit/>

31 </block>

32 </form>

33 </vxml>

V ´ypis 2: Vytvoˇren´ı menu pomoc´ı elementu <menu>

Jednotliv´e poloˇzky menu jsou definov´any pomoc´ı elementu <choice>, pˇriˇcemˇz hod-notou atributu next specifikujeme do jak´eho dialogu se m´a, v pˇr´ıpadˇe v ´ybˇeru t´eto poloˇzky, pˇrej´ıt.

M ˚uˇzeme si vˇsimnout, ˇze element <menu> d´ale obsahuje element <nomatch>. T´ımto elementem je moˇzn´e specifikovat akci, kter´a se provede v pˇr´ıpadˇe, ˇze uˇzivatel provede nedefinovanou volbu. V naˇsem pˇr´ıpadˇe je tato situace obslouˇzena zopakov´an´ım poloˇzek menu (element <reprompt>). Na z´akladˇe v ´ybˇeru doch´az´ı k pˇresunu do dialogu ”reser-vations” nebo ”account”, kde je aplikace n´aslednˇe ukonˇcena.

2.4.2 Z´ısk ´an´ı vstupu od uˇzivatele

Jazyk VoiceXML n´am pro z´ısk´an´ı uˇzivatelsk´eho vstupu poskytuje podobn´e prostˇredky jako jazyk HTML. M´ame k dispozici elementy, prostˇrednictv´ım kter ´ych jsme schopni nadefinovat formul´aˇrov´e prvky. Do tˇechto prvk ˚u je uloˇzen vstup od uˇzivatele a n´aslednˇe odesl´an ke zpracov´an´ı na server napˇr. prostˇrednictv´ım elementu <submit>. Elementy pro definici formul´aˇrov ´ych prvk ˚u jsou, stejnˇe jako element <submit>, obsaˇzeny uvnitˇr elementu <form>. Zpracov´an´ım elementu <submit> doch´az´ı k odesl´an´ı vˇsech for-mul´aˇrov ´ych prvk ˚u, kter´e jsou ve formul´aˇri obsaˇzeny.

Formul´aˇrov´e prvky se definuj´ı pomoc´ı elementu <field>. Datov ´y typ formul´aˇrov´eho prvku je specifikov´an prostˇrednictv´ım hodnoty atributu type. V tabulce 1 je uveden v ´ybˇer hodnot, kter´e je moˇzn´e pouˇz´ıt [24].

Ve v ´ypise 3 je uveden zdrojov ´y k ´od aplikace, kter´a vytv´aˇr´ı tˇri formul´aˇrov´e prvky. Tyto formul´aˇrov´e prvky jsou uˇzivatelem vyplnˇeny a n´aslednˇe jsou vyplnˇen´e informace odesl´any ke zpracov´an´ı na server. M ˚uˇzeme si vˇsimnout, ˇze kaˇzd ´y formul´aˇrov ´y prvek je r ˚uzn´eho datov´eho typu.

Formul´aˇr d´ale obsahuje element <filled>. Tento element specifikuje akci, kter´a se provede v momentˇe, kdy jsou vˇsechny prvky formul´aˇre vyplnˇeny. Naˇs´ı akc´ı je odesl´an´ı z´ıskan ´ych dat na server.

Odesl´an´ı dat zajiˇsˇtuje element <submit>. U tohoto elementu je tˇreba uv´est hodnotu atribut ˚u next a namelist. Hodnotou atributu next specifikujeme URL adresu, na

(32)

date Datum zadan ´y ve form´atu yyyymmdd (napˇr. 20140421) digits C´ıseln´a hodnota (napˇr. 123)ˇ

currency Datov ´y pro naˇcten´ı mˇeny

phone Telefonn´ı ˇc´ısla (z´avisl´e na hlasov´e platformˇe a syst´emov´em nastaven´ı) Table 1: Hodnoty slouˇz´ıc´ı k urˇcen´ı datov´eho typu formul´aˇrov ´ych prvk ˚u

kterou se data odeˇslou. Hodnotou atributu namelist je seznam n´azv ˚u formul´aˇrov ´ych prvk ˚u, jejichˇz hodnoty se maj´ı odeslat. Jednotliv´e n´azvy jsou oddˇeleny mezerou.

1 <?xml version="1.0"?>

2 <vxml version="2.0">

3 <form>

4 <field name="age" type="number">

5 <prompt>

6 How old are you?

7 </prompt>

8 </field>

9

10 <field name="telephone" type="phone">

11 <prompt>

12 What is your telephone number?

13 </prompt>

14 </field>

15

16 <field name="birthday" type="date">

17 <prompt>

18 When is your birthday?

19 </prompt>

20 </field>

21

22 <filled>

23 <submit next="http://www.mujserver.cz/save-data"

↩→ namelist="age telephone birthday" />

24 </filled>

25 </form>

26 </vxml>

(33)

Hodnoty, kter´e je moˇzn´e do formul´aˇrov´eho prvku zadat, je moˇzn´e specifikovat jeˇstˇe jedn´ım zp ˚usobem. VoiceXML n´am prostˇrednictv´ım elementu <grammar> poskytuje moˇznost nadefinovat si gramatiku, kter´a definuje pˇr´ıpustn´e hodnoty pro vstup.

Z pohledu pouˇzit´e vstupn´ı metody m ˚uˇzeme gramatiky rozdˇelit na gramatiky, kter´e definuj´ı pˇr´ıpustnou DTMF volbu, nebo na gramatiky, kter´e definuj´ı pˇr´ıpustn´e hodnoty pro syst´em automatick´eho rozpozn´av´an´ı ˇreˇci (ASR). Takovou gramatiku je moˇzn´e specifikovat pro dan ´y element <field> nebo pro cel ´y formul´aˇr <form>.

Ve standardu VoiceXML 2.0 b ´yv´a gramatika nejˇcastˇeji pops´ana XML jazykem. Ve v ´ypise 4 je uveden zdrojov ´y k ´od dialogu, prostˇrednictv´ım kter´eho je uˇzivatel vyzv´an k vyˇrˇcen´ı obl´ıben´e barvy. V t´eto uk´azce je uk´az´ana pouze z´akladn´ı pr´ace s gramatikou.

1 <?xml version="1.0"?>

2 <vxml version="2.0">

3 <form>

4 <field name="colour">

5 <prompt>

6 What is your favorite colour?

7 </prompt>

8

9 <grammar>

10 <rule id="root" scope="public">

11 <one-of>

12 <item tag="red">red</item>

13 <item tag="blue">blue</item>

14 <item tag="green">green</item>

15 </one-of>

16 </rule>

17 </grammar>

18

19 <nomatch>

20 Sorry you have selected a wrong colour. 21 <reprompt/>

22 </nomatch>

23

24 <noinput>

25 I did not hear anything.

26 <reprompt/>

27 </noinput>

28 </field>

29

30 <filled>

31 Your favourte color is:

32 <value expr="colour"/>

(34)
(35)

3

Technologie Text to Speech

Text to Speech (TTS) je technologie slouˇz´ıc´ı k pˇrevodu textu napsan´eho bˇeˇzn ´ym jazykem na ˇreˇc. TTS modul je z´akladn´ım stavebn´ım kamenem kaˇzd´e hlasov´e platformy. Tento modul n´am totiˇz umoˇz ˇnuje vytvoˇrit uˇzivatelsk´e rozhran´ı mezi uˇzivatelem a hlasovou aplikac´ı. Proces pˇrevodu textu na ˇreˇc je sloˇzit ´y proces, kter ´y bude podrobnˇeji pops´an v n´asleduj´ıc´ım textu.

Existuj´ı dva z´akladn´ı pˇr´ıstupy, jak ´ym zp ˚usobem lze umˇelou ˇreˇc generovat [9]. Prvn´ı pˇr´ıstup spoˇc´ıv´a ve spojov´an´ı pˇredem nahran ´ych ´usek ˚u ˇreˇci. Tˇemito ´useky mohou b ´yt jednotliv´e hl´asky a dvojhl´asky nebo cel´a slova. Volba d´elky nahr´avan ´ych ´usek ˚u ovliv ˇnuje kvalitu reprodukce.

Druh ´y pˇr´ıstup je zaloˇzen na simulaci charakteristik lidsk´e ˇreˇci a umoˇz ˇnuje tak repro-dukovat skuteˇcnˇe umˇelou ˇreˇc.

Proces pˇrevodu textu na ˇreˇc je v jednoduchosti zn´azornˇen na obr´azku 4 a jednotliv´e f´aze tohoto pˇrevodu budou pops´any v n´asleduj´ıc´ıch odstavc´ıch.

3.1 Textov ´a anal ´yza

Textov´a anal ´yza se d´a rozdˇelit do dvou f´az´ı. V prvn´ı f´azi doch´az´ı k naˇcten´ı textov´eho vstupu a pˇreveden´ı do form´atu, se kter ´ym je syntetiz´ator schopen pracovat.

V druh´e f´azi doch´az´ı k normalizaci textu. Aby bylo moˇzn´e text d´ale zpracov´avat, doch´az´ı nejdˇr´ıve ke konverzi slov na tokeny (tokenizace). Vznikl´e tokeny se pot´e ex-panduj´ı do ortografick´eho tvaru. Doch´az´ı tak k expanzi zkratek a ˇc´ısel na slova. Napˇr. token ”28” je pˇreveden na slovo ”dvacetosm” a zkratka ”ˇc.” je pˇrevedena na slovo ”ˇc´ıslo”. Tato expanze m ˚uˇze b ´yt v nˇekter ´ych situac´ıch z´avisl´a na kontextu, ve kter´em je token pouˇzit. Je proto tedy nutn´e analyzovat i okol´ı expandovan´eho tokenu. Tato situace se d´a demonstrovat napˇr. na expanzi zkratky ”den.”. Bez znalosti okol´ı (kontextu) tokenu nev´ıme, zda m´a doj´ıt k expanzi na slovo ”dennˇe” nebo ”denn´ıho”. Dalˇs´ım pˇr´ıkladem m ˚uˇze b ´yt expanze textu ”1 lev lovil 1 zebru”. Prvn´ı v ´yskyt ˇc´ıslovky 1 chceme pˇrev´est na slovo ”jeden” a druh ´y v ´yskyt m´a b ´yt expandov´an na slovo ”jednu”.

Sloˇzitost algoritm ˚u, kter´e tento proces prov´adˇej´ı, je z´avisl´a na morfologii2

interpreto-van´eho jazyka.

3.2 Fonetick ´a konverze a synt ´eza ˇre ˇci

V momentˇe, kdy m´ame k dispozici normalizov´any text, nast´av´a f´aze uplatnˇen´ı fonetick ´ych pravidel. V t´eto f´azi doch´az´ı k pˇrevodu kaˇzd´eho slova na sv ˚uj fonetick ´y ekvivalent [8].

Bˇehem tohoto procesu je opˇet nutn´e porozumˇen´ı kontextu, ve kter´em se dan´e slovo vyskytuje. Kontextovou z´avislost je moˇzn´e demonstrovat na oznamovac´ı vˇetˇe ”Honzo, jdeˇs.” a na t´azac´ı vˇetˇe ”Honzo, jdeˇs?”. V textov´e podobˇe se tyto vˇety liˇs´ı pouze znam´enkem na konci vˇety. Pokud jsou ale tyto vˇety vysloveny, tak se liˇs´ı v intonaci. A pr´avˇe intonace d´av´a vˇet´am r ˚uzn ´y v ´yznam.

2

(36)

Obr´azek 4: Proces pˇrevodu textu na ˇreˇc

Dalˇs´ım pˇr´ıkladem z´avislosti fonetick´e konverze na kontextu m ˚uˇze b ´yt konverze jed-notliv ´ych hl´asek. Stejn´a hl´aska se nemus´ı vˇzdy konvertovat na stejnou fonetickou hl´asku. U nˇekter ´ych jazyk ˚u je dokonce ˇz´adouc´ı, aby se dan´a hl´aska nepˇrev´adˇela na ˇz´adnou fo-netickou hl´asku (neznˇel´e hl´asky). Napˇr. ve ˇspanˇelˇstinˇe se nevyslovuje souhl´aska ”h” na zaˇc´atku slov.

Posledn´ım krokem je synt´eza ˇreˇci, kter´a je provedena na z´akladˇe fonetick´e konverze.

3.3 Vybran ´a TTS ˇre ˇsen´ı

Na trhu se vykytuje nˇekolik TTS ˇreˇsen´ı. Nˇekter´a jsou k dispozici zdarma, v pˇr´ıpadˇe jin ´ych se jedn´a o komerˇcn´ı ˇreˇsen´ı.

3.3.1 Festival Speech Synthesis System

Festival je obecn ´y v´ıcejazyˇcn ´y syntetiz´ator ˇreˇci, kter ´y byl p ˚uvodnˇe vyvinut Alanem W. Blackem na edinburghsk´e univerzitˇe. Pozdˇeji se k v ´yvoji pˇripojila i univerzita Canergie Mellon University.

Festival podporuje nˇekolik jazyk ˚u. Jeho souˇc´ast´ı je podpora britsk´e a americk´e an-gliˇctiny, velˇstiny a ˇspanˇelˇstiny. Podporu dalˇs´ıch jazyk ˚u je moˇzn´e rozˇs´ıˇrit instalac´ı dalˇs´ıch bal´ıˇck ˚u. Touto formou jsou k dispozici napˇr. n´asleduj´ıc´ı jazyky: ˇceˇstina, finˇstina, italˇstina a polˇstina [11].

Program je naps´an v programovac´ım jazyce C++ a je ˇs´ıˇren jako svobodn ´y software, je k nˇemu tedy k dispozici i zdrojov ´y k ´od.

3.3.2 Flite

N´azev Flite je zkratka ze slovn´ıho spojen´ı f estival − lite. Jedn´a se o mal ´y a rychl ´y syntetiz´ator ˇreˇci, kter ´y lze provozovat jak na mal ´ych (mobiln´ıch) zaˇr´ızen´ıch, tak i na serverov ´ych stroj´ıch.

Flite je navrˇzen jako odlehˇcen´a alternativa k syntetiz´atoru Festival a z´arove ˇn je s t´ımto syntetiz´atorem kompatibiln´ı. Program je naps´an v programovac´ım jazyce C a to z d ˚uvodu velikosti v ´ysledn´eho souboru a moˇznosti portace na r ˚uzn´e platformy [10].

Za vznikem tohoto syntetiz´atoru stoj´ı univerzita Carnegie Mellon University. Program je ˇs´ıˇren pod licenc´ı X11 a je dostupn ´y zdarma.

(37)

3.3.3 Cepstral TTS

Spoleˇcnost Cepstral je poskytovatelem komerˇcn´ıho TTS ˇreˇsen´ı. Spoleˇcnost byla zaloˇzen v roce 2000 vˇedeck ´ymi pracovn´ıky z univerzity Carnegie Mellon University [12].

Cepstral pˇri v ´yvoji sv´eho TTS vyvinul nˇekolik nov ´ych technik, kter´e umoˇz ˇnuj´ı lepˇs´ı pˇrizp ˚usoben´ı hlasu dan´e aplikaci. Cepstral TTS je moˇzn´e provozovat na zaˇr´ızen´ıch s omezen ´ymi v ´ypoˇcetn´ımi zdroji, stejnˇe jako na high-end serverech [13]. Cepstral TTS je moˇzn´e integrovat se softwarovou ´ustˇrednou Asterisk (viz kapitola 2.2.2) a je moˇzn´e ho provozovat na operaˇcn´ıch syst´emech Windows i na Linuxu.

TTS ˇreˇsen´ı od Cepstralu nab´ız´ı nˇekolik r ˚uzn ´ych hlas ˚u, kter´e je moˇzn´e d´ale konfig-urovat. Jednotliv´e hlasy je moˇzn´e si vyzkouˇset na jejich webov ´ych str´ank´ach. Cepstral pod-poruje nˇekolik jazyk ˚u, konkr´etnˇe americkou a britskou angliˇctinu, americkou ˇspanˇelˇstinu, kanadskou francouzˇstinu, nˇemˇcinu a italˇstinu.

Pˇr´ımo na webov ´ych str´ank´ach spoleˇcnosti je moˇzn´e objednat si jednotliv´e hlasy nebo kompletn´ı ˇreˇsen´ı Cepstral Telephony Server. Cena jednotliv ´ych hlas ˚u pro osobn´ı vyuˇzit´ı se pohybuje zhruba v rozmez´ı 10-50 dolar ˚u. Cena Cepstral Telephony Serveru se odv´ıj´ı od poˇctu povolen ´ych port ˚u. Z´akladn´ı verze s podporou jednoho portu zaˇc´ın´a na 100 dolarech. Za kaˇzd ´y dalˇs´ı port je nutn´e si pˇriplatit dalˇs´ıch 100 dolar ˚u.

(38)
(39)

4

Technologie Automatic Speech Recognition

Technologie ASR, neboli technologie automatick´eho rozpozn´av´an´ı ˇreˇci, je dalˇs´ı d ˚uleˇzitou souˇc´ast´ı hlasov´e platformy. Uˇzivateli umoˇz ˇnuje ovl´adat hlasovou aplikaci pomoc´ı hlasov ´ych pokyn ˚u.

Dneˇsn´ı syst´emy pro automatick´e rozpozn´av´an´ı ˇreˇci dosahuj´ı pˇresnosti rozpozn´av´an´ı, kter´a se m ˚uˇze pohybovat aˇz kolem 70% [1]. K dispozici jsou i syst´emy, kter´e dok´aˇz´ı rozpozn´avat i komplexn´ı jazyky maj´ıc´ı ˇsirokou slovn´ı z´asobu a sloˇzitou strukturu, napˇr. ˇc´ınˇstinu nebo ˇceˇstinu.

ASR syst´emy m ˚uˇzeme rozdˇelit podle toho, zda jsou orientov´any na rozpozn´av´an´ı souvisl´e ˇreˇci nebo na rozpozn´av´an´ı izolovan ´ych slov. Rozpozn´av´an´ı souvisl´e ˇreˇci je, ve srovn´an´ı s rozpozn´av´an´ım izolovan ´ych slov, mnohem n´aroˇcnˇejˇs´ı proces. Pˇri rozpozn´av´an´ı souvisl´e ˇreˇci totiˇz doch´az´ı k neˇz´adouc´ım jev ˚um jako je napˇr. spodoba3slov nebo polyk´an´ı

hl´asek. Pˇri rozpozn´av´an´ı izolovan ´ych slov k tˇemto jev ˚um nedoch´az´ı a je proto rozpozn´av´an´ı v ´ypoˇcetnˇe i algoritmicky jednoduˇsˇs´ı.

Pro automatick´e rozpozn´av´an´ı ˇreˇci se pouˇz´ıv´a nˇekolik metod. Prvn´ı metodou je pouˇzit´ı algoritmu skryt´eho Markovova modelu. Jedn´a se o statistick ´y model, kter ´y obsahuje skryt´e stavy. V kombinaci s t´ımto algoritmem b ´yv´a pouˇzit Viterbiho algoritmus za ´uˇcelem nalezen´ı nejpravdˇepodobnˇejˇs´ı posloupnosti skryt ´ych stav ˚u. Tato metoda je vhodn´a pro rozpozn´av´an´ı plynul´e ˇreˇci [14].

Dalˇs´ı pouˇz´ıvanou metodou je metoda dynamick´eho borcen´ı ˇcasu. Tato metoda je vyuˇz´ıv´ana pro rozpozn´av´an´ı izolovan ´ych slov. Podstatou t´eto metody je mˇeˇren´ı podob-nosti mezi dvˇema nahr´avkami slov a snaha naj´ıt nejlepˇs´ı shodu.

ASR syst´emy m ˚uˇzeme rozdˇelit i podle z´avislosti, resp. nez´avislosti na mluvˇc´ım. Syst´emy, kter´e jsou z´avisl´e na konkr´etn´ım mluvˇc´ım dosahuj´ı pro tuto osobu lepˇs´ıch v ´ysledk ˚u. Nev ´yhodou tohoto typu syst´emu je, ˇze dan´a osoba mus´ı, pro ´uˇcely natr´enov´an´ı pouˇziteln´eho modelu, namluvit nˇekolik hodin nahr´avek.

Univerz´alnˇejˇs´ım typem ASR syst´emu jsou syst´emy nez´avisl´e na mluvˇc´ım. V tomto pˇr´ıpadˇe se model sestavuje z nahr´avek, kter´e jsou poˇr´ızen ´y r ˚uzn ´ymi osobami. Nev ´yhodou tˇechto syst´em ˚u je niˇzˇs´ı pˇresnost rozpozn´an´ı. Je proto nutn´e pouˇz´ıt dalˇs´ı metody, kter´e slouˇz´ı k adaptaci na konkr´etn´ıho mluvˇc´ıho.

Na obr´azku 5 je zachyceno sch´ema procesu automatick´eho rozpozn´av´an´ı ˇreˇci.

4.1 Hlasov ´y vstup a jeho numerick ´a reprezentace

Prvn´ı f´az´ı procesu rozpozn´av´an´ı ˇreˇci je digitalizace ˇreˇci, tedy zachycen´ı uˇzivatelsk´eho vstupu (ˇreˇci) a jeho pˇrevod do digit´aln´ı podoby (nahr´avky).

Druhou f´az´ı je transformace digit´aln´ıch dat do numerick´e modelu. Numerick ´y model zachycuje informace o v ´yˇsce hlasu v jednotliv ´ych ˇc´astech nahr´avky a dalˇs´ı d ˚uleˇzit´e informace potˇrebn´e pro dalˇs´ı zpracov´an´ı.

(40)

Obr´azek 5: Proces automatick´eho rozpozn´av´an´ı ˇreˇci

4.2 Fonetick ´e mapov ´an´ı a generov ´an´ı v ´ystupu

Tˇret´ı f´az´ı procesu rozpozn´av´an´ı ˇreˇci je fonetick´e mapov´an´ı. Tato f´aze je nejv´ıce komplexn´ı a od jej´ı pˇresnosti se odv´ıj´ı pˇresnost cel´eho syst´emu. V t´eto f´azi je provedena spektr´aln´ı anal ´yza numerick´eho modelu. Na z´akladˇe v ´ysledku spektr´aln´ı anal ´yzy jsou vybr´any pravdˇepodobnostnˇe nejvhodnˇejˇs´ı fon´emy4[1].

V ´ysledkem fonetick´eho mapov´an´ı je vygenerov´an´ı sady ˇretˇezc ˚u, kter´e vznikly poskl´ad´an´ım z jednotliv ´ych fon´em ˚u.

Kaˇzd´emu ˇretˇezci je pˇriˇrazeno sk ´ore, kter´e vyjadˇruje podobnost k pr´avˇe rozpozn´avan´emu slovu. Na z´akladˇe t´eto podobnosti a gramatiky, kter´a popisuje hodnoty pˇr´ıpustn´e pro vstup, doch´az´ı k vybr´an´ı nejvhodnˇejˇs´ı ˇretˇezce. Tento ˇretˇezec je pot´e posl´an na v ´ystup.

4.3 Vybran ´a ASR ˇre ˇsen´ı

Na trhu je k dispozici nˇekolik ASR ˇreˇsen´ı, kter´a jsou pˇrev´aˇznˇe komerˇcn´ıho charakteru. Najdeme mezi nimi ale i ˇreˇsen´ı, kter´a vznikla na p ˚udˇe univerzit a mohou b ´yt k dispozici zdarma. Takov´a ˇreˇsen´ı bohuˇzel vˇetˇsinou nedosahuj´ı takov ´ych kvalit jako ˇreˇsen´ı komerˇcn´ı.

4.3.1 Loquendo

Loquendo je ASR syst´em od spoleˇcnosti Nuance, kter ´y je moˇzn´e provozovat na zaˇr´ızen´ıch od kapesn´ıch zaˇr´ızen´ı po desktopov´e poˇc´ıtaˇce. Jedn´a se o syst´em, kter ´y je nez´avisl ´y na mluvˇc´ım a umoˇz ˇnuje rozpozn´av´an´ı plynul´e ˇreˇci nebo izolovan ´ych slov. Syst´em si dok´aˇze poradit i s rozpozn´av´an´ım ˇreˇci v hluˇcn´em prostˇred´ı [15].

Loquendo dok´aˇze pracovat s velmi ˇsirokou slovn´ı z´asobou (aˇz 1 milion slov). Syst´em dosahuje vysok´e pˇresnosti pouˇzit´ım neuronov ´ych s´ıt´ı a algoritmu skryt´eho Markovova modelu.

D´ıky sv´e podpoˇre standard ˚u pro popis gramatik (SRGS 1.0, SISR 1.0) je syst´em velmi dobˇre optimalizov´an pro vyuˇzit´ı ve VoiceXML aplikac´ıch.

Loquendo podporuje rozpozn´av´an´ı celkem 28 jazyk ˚u, mezi kter ´ymi nechyb´ı napˇr. britsk´a a americk´a angliˇctina, holandˇstina, d´anˇstina, ˇreˇctina a francouzˇstina. Loquendo bohuˇzel nepodporuje rozpozn´av´an´ı ˇceˇstiny [17].

4Fon´em je nejmenˇs´ı souˇc´ast zvukov´e str´anky ˇreˇci, kter´a jeˇstˇe m´a rozliˇsovac´ı funkci v syst´emu konkr´etn´ıho

(41)

Loquendo je moˇzn´e si vyzkouˇset vytoˇcen´ım telefonn´ıho ˇc´ısla (pˇredvolba USA), kde jsou pˇripraveny tˇri uk´azkov´e aplikace.

4.3.2 Laboratoˇr po ˇc´ıta ˇcov ´eho zpracov ´an´ı ˇre ˇci TU Liberec

Tato laboratoˇr patˇr´ı k vedouc´ım pracoviˇst´ım v oboru hlasov ´ych technologi´ı v ˇCesk´e repub-lice. Zaˇc´atkem devades´at ´ych se tato laboratoˇr zaˇcala vˇenovat problematice rozpozn´av´an´ı izolovan ´ych slov a fr´az´ı. Pozdˇeji se zaˇcala vˇenovat i rozpozn´av´an´ı plynul´e ˇreˇci s orientac´ı na ˇcesk ´y jazyk.

ASR syst´emy vyvinut´e touto laboratoˇr´ı zvl´adaj´ı rozpozn´av´an´ı izolovan ´ych slov z rozs´ahl ´ych slovn´ık ˚u, kter´e obsahuj´ı stovky tis´ıc slov. Syst´em rozpozn´av´an´ı je nez´avisl ´y na mluvˇc´ım a v re´aln´em ˇcase dok´aˇze rozpozn´avat s ´uspˇeˇsnost´ı 95%. ASR syst´emy lze provozovat i na mobiln´ıch zaˇr´ızen´ıch.

U syst´em ˚u pro rozpozn´av´an´ı plynul´e ˇreˇci se ´uspˇeˇsnost, s pouˇzit´ım slovn´ıku, kter ´y obsahuje 350 tis´ıc slov, pohybuje kolem 90%. V pˇr´ıpadˇe pˇrepisu televizn´ıch nebo rozh-lasov ´ych poˇrad ˚u se ´uspˇeˇsnost pohybuje aˇz kolem 95 - 97% [16].

Laboratoˇr vyvinula nˇekolik aplikac´ı, kter´e vyuˇz´ıvaj´ı schopnosti rozpozn´av´an´ı ˇreˇci. M ˚uˇzeme uv´est napˇr. aplikaci MobilDictate, kter´a slouˇz´ı k diktov´an´ı text ˚u do mobiln´ıho zaˇr´ızen´ı nebo aplikaci ATT (Audio Transcription Toolkit), kter´a slouˇz´ı k automatick´emu generov´an´ı titulk ˚u pro televizn´ı poˇrady.

(42)
(43)

5

N ´avrh webov ´eho port ´alu

Na zaˇc´atku t´eto kapitoly nejprve pˇredstav´ım referenˇcn´ı aplikaci, na kter´e budu pot´e ve zb ´yvaj´ıc´ım textu kapitoly demonstrovat proces jej´ıho n´avrhu a n´aslednou implementaci. Jako referenˇcn´ı aplikaci jsem zvolil rezervaˇcn´ı syst´em smyˇslen´e leteck´e spoleˇcnosti. Rezervaˇcn´ı syst´em obsahuje webov´e a hlasov´e rozhran´ı pro spr´avu rezervac´ı let ˚u. Rezer-vace lze tedy spravovat z prostˇred´ı webov´eho prohl´ıˇzeˇce nebo z prostˇred´ı samoobsluˇzn´e hlasov´e linky.

Pro pr´aci s rezervaˇcn´ım syst´emem je nutn´e se do syst´emu nejdˇr´ıve pˇrihl´asit. Kaˇzd ´y uˇzivatel se prokazuje kombinac´ı telefonn´ıho ˇc´ısla a hesla.

Do syst´emu se m ˚uˇzou pˇrihl´asit dva typy uˇzivatel ˚u. V z´avislosti na roli pˇrihl´aˇsen´eho uˇzivatele jsou uˇzivateli dovoleny akce, kter´e m ˚uˇze vykon´avat.

Prvn´ım typem uˇzivatele je uˇzivatel v roli z´akazn´ıka. Z´akazn´ıkovi je dovoleno vytvoˇren´ı nov´e rezervace nebo zruˇsen´ı jiˇz aktivn´ı rezervace, d´ale je z´akazn´ıkovi umoˇznˇeno vyh-led´av´an´ı let ˚u dle n´asleduj´ıc´ıch krit´eri´ı:

• m´ısta a data odletu • m´ısta a data pˇr´ıletu • ceny letu

• maxim´aln´ıho poˇctu pˇrestup ˚u • maxim´aln´ı d´elky letu

Druh ´ym typem uˇzivatele je uˇzivatel v roli administr´atora. Pro uˇzivatele s pr´avy administr´atora jsou dostupn´e stejn´e akce jako uˇzivateli v roli z´akazn´ıka, nav´ıc vˇsak administr´ator m ˚uˇze vykon´avat n´asleduj´ıc´ı akce:

• spr´ava datab´aze let ˚u (editace/vytvoˇren´ı) • spr´ava uˇzivatel ˚u (editace/vytvoˇren´ı)

• spr´ava pˇrepravn´ıch spoleˇcnost´ı (editace/vytvoˇren´ı)

Webov´e rozhran´ı rezervaˇcn´ıho syst´emu je v re´aln´em ˇcase synchronizov´ano s hlasov ´ym rozhran´ım pomoc´ı technologie WebSockets5 Toto v praxi znamen´a n´asleduj´ıc´ı. Pokud je uˇzivatel pˇrihl´aˇsen do webov´eho rozhran´ı a z´arove ˇn se nach´az´ı v interakci s hlasovou samoobsluhou, kde napˇr. zruˇs´ı svoji rezervaci, okamˇzitˇe dojde k reflektov´an´ı proveden´e akce do webov´eho rozhran´ı, aniˇz by uˇzivatel musel znovu prov´est naˇcten´ı zobrazen´e str´anky.

Webov´e rozhran´ı rezervaˇcn´ıho syst´emu nab´ız´ı uˇzivateli pohodln´e grafick´e rozhran´ı pro spr´avu rezervac´ı. Webov´a aplikace je navrˇzena jako jednostr´ankov´a aplikace6. Tento

5Webov´a technologie umoˇz ˇnuj´ıc´ı vytvoˇren´ı obousmˇern´eho komunikaˇcn´ıho kan´alu mezi klientem a

serverem nad HTTP protokolem. V´ıce informac´ı o t´eto technologii najdete v kapitole 5.2.

6Modern´ı zp ˚usob n´avrhu webov´e aplikace, kdy je aplikace reprezentov´ana jednou z´akladn´ı HTML

(44)

pˇrenesen ´ych dat se dosahuje vyuˇzit´ım AJAXov´eho naˇc´ıt´an´ı dat, kdy doch´az´ı k naˇcten´ı pouze tˇech dat, kter´a jsou aktu´alnˇe potˇrebn´a.

V aplikaci je implementovan´e REST API7, kter´e slouˇz´ı jako datov ´y zdroj. REST API implementuje pˇr´ıstup k dat ˚um, kter´a jsou uloˇzena v datab´azi. Vˇetˇsina metod REST API generuje notifikace pro ostatn´ı pˇripojen´e klienty. Notifikace slouˇz´ı k synchronizaci uˇzivatelsk ´ych rozhran´ı vˇsech pˇripojen ´ych klient ˚u.

Data se mezi klientem a serverovou ˇc´ast´ı aplikace (RESP API) pˇren´aˇs´ı ve form´atu JSON. Form´at JSON preferuji hlavnˇe z toho d ˚uvodu, ˇze pro zak ´odov´an´ı informace je potˇreba menˇs´ıho objemu dat neˇz napˇr. ve srovn´an´ı s form´atem XML.

Implementace REST API vˇsak volitelnˇe dovoluje pouˇz´ıt pro komunikaci napˇr. i form´at XML. Staˇc´ı jen o tom do HTTP poˇzadavku pˇridat informaci.

Moˇznost zvolit si form´at pˇren´aˇsen ´ych dat je umoˇznˇena d´ıky mal´e knihovnˇe, kter´a vznikla z´arove ˇn s touto prac´ı. Tato knihovna ˇreˇs´ı univerz´aln´ım zp ˚usobem pˇrevod jak´ehokoliv JSON objektu do XML form´atu.

V tabulce 2 se nach´az´ı popis implementovan ´ych metod REST API. API bˇeˇz´ı na z´akladn´ı URL adrese /api/v1/8 a to z toho d ˚uvodu, aby bylo moˇzn´e jednotliv´e verze API v budoucnosti pˇr´ıpadnˇe verzovat.

5.1 Uˇzivatelsk ´e rozhran´ı

Uˇzivatelsk´e rozhran´ı aplikace je rozdˇeleno do nˇekolika str´anek. Po pˇrihl´aˇsen´ı do aplikace je zobrazena hlavn´ı str´anka se seznamem vˇsech let ˚u (viz obr. 6). Jednotliv´e lety jsou zde zobrazeny v seznamu, kter ´y je str´ankovateln ´y a je zde moˇznost nastaven´ı poˇctu zobrazen ´ych poloˇzek na str´ance. Kaˇzd ´y ˇr´adek v seznamu reprezentuje jeden let. U kaˇzd´eho letu jsou uvedeny z´akladn´ı informace. Na konci kaˇzd´eho ˇr´adku se nach´az´ı tlaˇc´ıtka slouˇz´ıc´ı pro vytvoˇren´ı nebo zruˇsen´ı rezervace letu. ˇR´adek, kter ´y pˇredstavuje rezervovan ´y let je graficky odliˇsen jinou barvou pozad´ı. D´ale je zde k dispozici tlaˇc´ıtko pro zobrazen´ı detailn´ıch informac´ı o letu. Pokud je pˇrihl´aˇsen uˇzivatel s pr´avy administr´atora, tak m´a moˇznost informace o letu i upravovat. Posledn´ı tlaˇc´ıtko slouˇz´ı ke smaz´an´ı letu z datab´aze. Toto tlaˇc´ıtko se opˇet zobrazuje jen v pˇr´ıpadˇe, ˇze je pˇrihl´aˇsen uˇzivatel s pr´avy administr´atora.

Nad seznamem let ˚u se nach´az´ı formul´aˇr pro nastaven´ı vyhled´avac´ıch krit´eri´ı, dle kter ´ych lze pot´e seznam let ˚u vyfiltrovat.

V horn´ı ˇc´asti str´anky se nach´az´ı menu, kter´e je viditeln´e ze vˇsech str´anek webov´eho rozhran´ı. Menu obsahuje odkazy na dalˇs´ı str´anky aplikace jako je str´anka se seznamem uˇzivatel ˚u a str´anka se seznamem pˇrepravc ˚u. V prav´e ˇc´asti horn´ıho menu se nach´az´ı informace se jm´enem aktu´alnˇe pˇrihl´aˇsen´eho uˇzivatele a tlaˇc´ıtko, kter´e slouˇz´ı k odhl´aˇsen´ı uˇzivatele.

7REST API je architektura rozhran´ı navrˇzen´a pro distribuovan´e prostˇred´ı. REST je, na rozd´ıl od zn´amˇejˇs´ıch

XML-RPC ˇci SOAP, orientov´an datovˇe, nikoli procedur´alnˇe.

8URL zdroje pro z´ısk´an´ı informac´ı o jednom letu tedy vypad´a n´asledovnˇe

(45)

HTTP metoda URL adresa Popis metody

GET /flights Vrac´ı str´ankovan ´y seznam

(vyfil-trovan ´ych) let ˚u.

GET /flights/{id} Vrac´ı informace o letu.

GET /flights/{id}/make-reservation Prov´ad´ı rezervaci letu pro pr´avˇe pˇrihl´aˇsen´eho uˇzivatele.

GET /flights/{id}/cancel-reservation Ruˇs´ı rezervaci letu pro pr´avˇe

pˇrihl´aˇsen´eho uˇzivatele.

POST /flights Zakl´ad´a nov ´y let.

DELETE /flights/{id} Odstra ˇnuje let.

PUT /flights/{id} Aktualizuje informace o letu.

GET /users Vrac´ı str´ankovan ´y seznam

uˇzivatel ˚u.

GET /users/{id} Vrac´ı informace o uˇzivateli.

GET /users/{id}/list-reservations Vrac´ı seznam rezervac´ı pro dan´eho

uˇzivatele.

GET /users/check-login?login={login} Zjiˇsˇtuje, zda dan´e uˇzivatelsk´e jm´eno jiˇz existuje.

POST /users Zakl´ad´a nov´eho uˇzivatele.

DELETE /users/{id} Odstra ˇnuje uˇzivatele.

PUT /users/{id} Aktualizuje informace o uˇzivateli.

GET /carriers Vrac´ı str´ankovan ´y seznam

pˇrepravc ˚u.

GET /carriers/{id} Vrac´ı informaci o pˇrepravci.

POST /carriers Zakl´ad´a nov´eho pˇrepravce.

DELETE /carriers/{id} Odstra ˇnuje pˇrepravce.

PUT /carriers/{id} Aktualizuje informace o pˇrepravci.

GET /destinations?q={destination} Vrac´ı seznam vyfiltrovan ´ych

destinac´ı. Metoda slouˇz´ı pro naˇsept´avaˇc.

POST /security/login Pˇrihlaˇsuje uˇzivatele.

POST /security/logout Odhlaˇsuje uˇzivatele.

GET /security/current-user Vrac´ı data o aktu´alnˇe pˇrihl´aˇsen´em

uˇzivateli. Table 2: Implementovan´e metody REST API

(46)

Obr ´azek 6: Str ´anka se seznamem let ˚u a filtr em

(47)

Ostatn´ı str´anky aplikace maj´ı uˇzivatelsk´e rozhran´ı uspoˇr´adan´e obdobnˇe. Odkazy z horn´ıho menu vˇzdy vedou na str´anky se seznamov ´ym zobrazen´ım dan´e entity (lety, uˇzivatel´e, pˇrepravci). Z toho seznamu existuje moˇznost pˇrechodu na detail konkr´etn´ı entity. V z´avislosti na pr´avech pˇrihl´aˇsen´eho uˇzivatele je zde moˇzn´e entitu pˇr´ıpadnˇe editovat. Pro uk´azku uv´ad´ım jeˇstˇe obr´azek zobrazuj´ıc´ı formul´aˇr pro editaci letu7.

5.2 Pouˇzit ´e technologie

Klientsk´a i serverov´a ˇc´ast aplikace je naps´ana v JavaScriptu. V n´asleduj´ıc´ıch odstavc´ıch struˇcnˇe pop´ıˇsi pouˇzit´e technologie a d ˚uvod jejich pouˇzit´ı.

5.2.1 JavaScript

Je multiparadigmatick ´y skriptovac´ı jazyk ovlivnˇen ´y hlavnˇe jazyky Java, Perl a Smalltalk. Jedn´a se o ud´alostmi ˇr´ızen ´y programovac´ı jazyk.

Od klasick ´ych programovac´ıch jazyk ˚u se liˇs´ı hlavnˇe podporou prototypov´e dˇediˇcnosti a skuteˇcnost´ı, ˇze vˇse je objekt (dokonce i funkce). Tento jazyk byl vytvoˇren Brendanem Eichem v roce 1997. Prim´arn´ım d ˚uvodem vzniku tohoto jazyka byla potˇreba moˇznosti obohacen´ı statick ´ych webov ´ych str´anek. Jazyk proˇsel nˇekolika verzemi, kdy do nˇej byly postupnˇe pˇrid´av´any nov´e vlastnosti. V dobˇe psan´ı t´eto pr´ace (2014), je nejv´ıce rozˇs´ıˇren´a verze ECMAScript 5 a postupnˇe se zaˇc´ınaj´ı do jazyka implementovat vlastnosti z nadch´azej´ıc´ı specifikace ECMAScript 6.

D´ıky platformˇe Node.js jiˇz nen´ı JavaScript omezen jen na oblast klientsk´eho skrip-tov´an´ı, ale pronikl i na stranu serverov´eho programov´an´ı a umoˇz ˇnuje n´avrh vysoce ˇsk´alovateln ´ych s´ıˇtov ´ych aplikac´ı.

5.2.2 AngularJS

AngularJS je framework, kter ´y sv ´ymi unik´atn´ımi vlastnostmi ulehˇcuje n´avrh jednostr´ankov ´ych aplikac´ı v JavaScriptu. Mezi kl´ıˇcov´e vlastnosti frameworku patˇr´ı obousmˇern ´y databinding, neboli automatick´e prov´az´an´ı dat (modelu) s vizu´aln´ı reprezentac´ı (pohledem). Dalˇs´ı uˇziteˇcnou vlastnost´ı Angularu je ˇsablonovac´ı syst´em, kter ´y pomoc´ı direktiv umoˇz ˇnuje rozˇs´ıˇrit standardn´ı sadu HTML tag ˚u o nov´e specifick´e HTML tagy. V´ıce informac´ı o t´eto technologii najdete v dokumentaci frameworku[18].

Tento framework jsem pouˇzil k n´avrhu klientsk´e ˇc´asti aplikace a to pr´avˇe z v ´yˇse uveden ´ych d ˚uvod ˚u.

5.2.3 Node.js

Node.js[21] je technologie pˇrin´aˇsej´ıc´ı moˇznost ps´at serverov´e ˇc´asti webov ´ych aplikac´ı v JavaScriptu.

Platforma Node.js se skl´ad´a z bˇehov´eho prostˇred´ı, kter´e je postaveno nad JavaScript enginem V89a z knihovny funkc´ı. Mezi d ˚uleˇzit´e vlastnosti Node.js patˇr´ı jeho asynchronn´ı,

9

(48)

Obr ´azek 7: Str ´anka s formul ´aˇrem pr o editaci letu

(49)

ud´alostmi ˇr´ızen´a povaha, tedy veˇsker´e vstupnˇe/v ´ystupn´ı operace jsou zpracov´av´any asynchronnˇe. D´ıky tomuto chov´an´ı v praxi doch´az´ı k tomu, ˇze webov ´y server postaven ´y nad Node.js dok´aˇze zpracovat v´ıce soubˇeˇzn ´ych poˇzadavk ˚u10.

Technologii jsem zvolil hlavnˇe proto, ˇze mi umoˇz ˇnuje ps´at serverovou a klientskou ˇc´ast aplikace ve stejn´em programovac´ım jazyce, tedy v JavaScriptu.

5.2.4 Express.js

Jedn´a se o minimalistick ´y framework pro Node.js, kter ´y umoˇz ˇnuje snadn´e vytv´aˇren´ı webov ´ych aplikac´ı. Nab´ız´ı napˇr. funkce pro pr´aci s cookies, pr´aci s objektem pˇr´ıchoz´ıho poˇzadavku a z´apis do objektu odpovˇedi. Framework je jednoduˇse rozˇsiˇriteln ´y o dalˇs´ı funkce.

V´ıce informac´ı o tomto frameworku je moˇzn´e nal´ezt na ofici´aln´ım webu[22].

5.2.5 MongoDB

Pro ukl´ad´an´ı dat jsem zvolil datab´azi MongoDB. MongoDB je NoSQL datab´aze, coˇz znamen´a, ˇze principy pˇr´ıstupu k dat ˚um nejsou implementov´any na b´azi relac´ı jako jsme zvykl´ı u klasick ´ych relaˇcn´ıch datab´az´ı. MongoDB se ˇrad´ı mezi dokumentov´e datab´aze, kter´e nemaj´ı pevnˇe definovan´e sch´ema.

V´ıce informac´ı o MongoDB datab´azi lze nal´ezt na webu projektu[19].

V kombinaci s touto datab´az´ı jsem pouˇzil nadstavbu Mongoose[20], coˇz je vrstva pˇrid´avaj´ıc´ı moˇznost definovat pevn´e sch´ema dokument ˚u a pracovat s tˇemito dokumenty jako s datov ´ymi modely. Tato vrstva d´ale umoˇz ˇnuje napˇr. pˇrid´av´an´ı validaˇcn´ıch metod na jednotliv´e modely.

5.2.6 WebSockets

Je technologie pro tvorbu webov ´ych aplikac´ı, kter´e mezi sebou potˇrebuj´ı komunikovat v re´aln´em ˇcase. Technologie je souˇc´ast´ı standardu HTML5 a je jiˇz v modern´ıch prohl´ıˇzeˇc´ıch plnˇe implementov´ana. Technologie umoˇz ˇnuje vybudovat plnˇe duplexn´ı komunikaˇcn´ı kan´al mezi klientem serverem a t´ımto kan´alem si vz´ajemnˇe vymˇe ˇnovat data. Jedn´a se v podstatˇe o obdobu klasick´eho TCP spojen´ı pˇrenesen´eho do oblasti webov ´ych aplikac´ı. WebSockety komunikuj´ı nad standardn´ım HTTP protokolem, nemaj´ı proto probl´em s jak ´ymikoliv proxy servery a firewally na trase mezi klientem a serverem.

Tuto technologii v aplikaci pouˇz´ıv´am k synchronizaci vˇsech aktu´alnˇe otevˇren ´ych webov ´ych rozhran´ı, aby pˇrihl´aˇsen ´y uˇzivatel nemusel otevˇrenou str´anku ve webov´em prohl´ıˇzeˇci manu´alnˇe znovu naˇc´ıtat.

10Za pˇredpokladu, ˇze je aplikace orientovan´a na vstupnˇe/v ´ystupn´ı operace jako je napˇr. ˇcten´ı z datab´aze

(50)

Grunt je automatizaˇcn´ı n´astroj, kter ´y usnad ˇnuje workflow v ´yvoje (nejen) webov ´ych ap-likac´ı. Tento n´astroj nab´ız´ı aplikaˇcn´ı rozhran´ı pro definici ´ukol ˚u, kter´e se maj´ı automaticky prov´est v definovan ´y moment. Definice ´ukol ˚u se popisuje v jazyce JavaScript.

J´a jsem tento n´astroj pouˇzil napˇr. k validaci zdrojov´eho k ´odu napsan´eho v JavaScriptu nebo ke spouˇstˇen´ı webov´eho serveru. Tento n´astroj jsem dokonce vyuˇzil k automatizaci sazby t´eto pr´ace - po kaˇzd´em uloˇzen´ı zdrojov´eho LATEX souboru dojde k automatick´emu

vytvoˇren´ı v ´ystupn´ıho PDF souboru.

V´ıce informaci o tomto n´astroji je moˇzn´e nal´ezt na ofici´aln´ıch webov ´ych str´ank´ach[23].

5.2.8 Jade

Jedn´a se o ˇsablonovac´ı jazyk pouˇz´ıvan ´y na platformˇe Node.js. Jade sv ´ymi vlastnostmi urychluje z´apis HTML k ´odu. Napˇr. nen´ı potˇreba ps´at ukonˇcovac´ı znaˇcky HTML element ˚u a nen´ı potˇreba znaˇcky zapisovat v ´uhlov ´ych z´avork´ach. Zanoˇren´ı jednotliv ´ych element ˚u je vyj´adˇreno postupn ´ym odsazov´an´ım element ˚u. ˇSablonovac´ı syst´em je rozˇsiˇriteln ´y pomoc´ı mixin ˚u.

(51)

6

N ´avrh hlasov ´eho port ´alu

V t´eto ˇc´asti pr´ace se zamˇeˇr´ım na popis procesu n´avrhu a n´asledn´e implementace hlasov´eho port´alu rezervaˇcn´ıho syst´emu. Rezervaˇcn´ı syst´em byl podrobnˇeji pˇredstaven za zaˇc´atku kapitoly 5.

Hlasov ´y port´al umoˇz ˇnuje uˇzivateli spravovat sv´e rezervace prostˇrednictv´ım hlasov´e samoobsluhy, se kterou se spoj´ı vytoˇcen´ım telefonn´ıho ˇc´ısla napˇr. na sv´em mobiln´ım tele-fonu. Hlasov ´y port´al se od port´alu webov´eho liˇs´ı hlavnˇe ve zp ˚usobu interakce uˇzivatele se syst´emem a mnoˇzinou dostupn ´ych akc´ı, kter´e jsou uˇzivateli umoˇznˇeny.

Struˇcnˇe ˇreˇceno je uˇzivateli nab´ıdnuta podmnoˇzina akc´ı, kter´e jsou dostupn´e ve we-bov´em port´alu. Hlasov ´y port´al nab´ız´ı uˇzˇs´ı mnoˇzinu funkc´ı hlavnˇe z toho d ˚uvodu, ˇze ne vˇsechny funkce syst´emu lze z pohledu uˇzivatelsk´eho rozhran´ı komfortnˇe implementovat i v prostˇred´ı hlasov´eho syst´emu. Hlasov ´y port´al je tedy c´ılen pouze na uˇzivatele v roli z´akazn´ıka leteck´e spoleˇcnosti a nenab´ız´ı funkce uˇzivatel ˚um v roli administr´atora syst´emu, kter´e jim jsou dostupn´e prostˇrednictv´ım webov´eho port´alu (napˇr. pˇrid´an´ı nov´eho letu do datab´aze).

V n´asleduj´ıc´ım seznamu uv´ad´ım souhrn akc´ı, kter´e m ˚uˇze uˇzivatel prostˇrednictv´ım hlasov´eho port´alu vykon´avat:

• pˇrihl´aˇsen´ı do syst´emu • zaloˇzen´ı nov´e rezervace

• vylistov´an´ı seznamu aktivn´ıch rezervac´ı • zruˇsen´ı vˇsech aktivn´ıch rezervac´ı

• odhl´aˇsen´ı ze syst´emu

V n´asleduj´ıc´ım textu nejdˇr´ıve pop´ıˇsi odliˇsnosti v n´avrhu uˇzivatelsk´eho rozhran´ı hlasov´eho port´alu ve srovn´an´ı s n´avrhem uˇzivatelsk´eho rozhran´ı webov´eho port´alu a pot´e se zamˇeˇr´ım na popis n´avrhu hlasov´eho rozhran´ı rezervaˇcn´ıho syst´emu.

6.1 Uˇzivatelsk ´e rozhran´ı

Uˇzivatelsk´e rozhran´ı slouˇz´ıc´ı ke komunikaci mezi uˇzivatelem a hlasov ´ym port´alem je diametr´alnˇe odliˇsn´e od rozhran´ı, kter´e nab´ız´ı webov´e port´aly. Proto je nutn´e pˇri n´avrhu uˇzivatelsk´eho rozhran´ı hlasov´eho port´alu k tˇemto odliˇsnostem pˇrihl´ednout. Hlavn´ı rozd´ıl mezi uˇzivatelsk ´ym rozhran´ım webov ´ych a hlasov ´ych port´al ˚u je ve zp ˚usobu interakce. Zat´ımco webov´e port´aly nab´ız´ı uˇzivatelsk´a rozhran´ı zaloˇzen´a pˇrev´aˇznˇe na interakci pomoc´ı vizu´aln´ıch vjem ˚u uˇzivatele, pˇri n´avrhu uˇzivatelsk´eho rozhran´ı hlasov´eho port´alu nen´ı moˇzn´e interakci zaloˇzenou na vizu´aln´ıch vjemech aplikovat. Uˇzivatelsk´e rozhran´ı hlasov ´ych port´al ˚u je totiˇz zaloˇzeno pouze na zvukov ´ych vjemech a hlasov ´ych odezv´ach. Proto nen´ı vhodn´e navrhovat pˇr´ıliˇs komplexn´ı uˇzivatelsk´e rozhran´ı. Naopak, mus´ıme se snaˇzit uˇzivatelsk´e rozhran´ı ˇclenit co nejjednoduˇseji a pˇrehlednˇe tak, abychom uˇzivateli

References

Related documents

Campus Select classes will vary from .17-1.0 high school credits all depending on the amount of college credits earned for the course. If it is a 100 level course and above it will

The first part you define is the control arm. You begin by building its hardpoints. You can later modify these hardpoints to determine their effects on your vehicle. Next, you

事前テストと事後テストはそれぞれリーディング Part5 から Part7 に分かれており、TOEIC テストの出題形式と同じ形式で Part 5 短文穴埋め問題 13 問、Part 6 長文穴埋め問題 3

Moreover, in a globalized world, where English has become a contem- porary lingua franca for intercultural communication, the pronunciation norms of English as a Lingua Franca

As long as bicycle carriage of ‘complete’ bicycles is not the standard, all online timetable search engines should come with a bicycle carriage query function. Deutsche Bahn

Furthermore Winograd (1987) explains that for achieving language understanding, a computer that “as a language machine, manipulates symbols without respect to

Physician Greater Pittsburgh Neurosurgical Assocs UPMC 5115 Centre Avenue Third Floor Pittsburgh PA 15232 Allegheny Physician Greater Pittsburgh Neurosurgical Assocs UPMC 532

Distribution of distinct EGFr cysteine altering NOTCH3 mutations in ExAC compared to those reported in cerebral autosomal dominant arteriopathy with subcortical infarcts