Belföld

VoiceXML – a hang alapú web

A mai mobiltelefonokon és tenyérszámítógépeken már szinte bárhonnan megjeleníthető akármelyik webhely. De miért kellene hanggal “böngészni", ha egyszer ott az egyre többet tudó színes kijelző?

A hang alapú webet, ezt a mobilos technológiai utópiát persze főképp a mobilgyártók és -szolgáltatók szorgalmazzák. Lássuk be: egy mobiltelefon kijelzője még mindig nagyon pici, az összezsúfolt billentyűzet használhatósága a nullához közelít (kevés kivételtől eltekintve).


Beszélni mindig kényelmesebb, mint gépelni, de a beszéddel a szolgáltatói oldalon sok gond lehet: ügyfélszolgálatos munkatársakat kell fizetni, és ha 24 órás a szolgáltatás, akkor ezek a költségek is megháromszorozódnak. A megoldás az lenne tehát, ha az ügyfél digitális ügyintézőnek mondhatná el a mondandóját, és az szóban reagálna erre.

A VoiceXML pontosan erre a feladatra szolgál: egyszerűen, XML nyelven definiálhatjuk a digitális ügyintézőnek, hogy milyen kérdéseket tegyen fel, és milyen válaszokat várhat rájuk. Bár a VoiceXML nyelv nem túl bonyolult, a kiszolgáló infrastruktúra nyilvánvalóan az: szükség van egy különleges “telefonközpontra” (az fogadja a hívásokat és átadja őket a számítógépnek) és egy számítógépre, s azon olyan szoftvernek kell futnia, amely alkalmas jó minőségű szöveg-hang-szöveg átalakításra.








Egy egyszerű példa
Mondjuk, szeretnénk megtudni a tudakozótól egy ismerősünk telefonszámát. Két lehetőség közül választhatunk: vagy mobil weben át elérjük a tudakozó weboldalát, vagy felhívjuk a tudakozó ügyfélszolgálatát. A weboldal eléréséhez be kell gépelnünk a 10+2 (0-9, *, #) billentyűn a tudakozó URL-jét, majd ismerősünk nevét és címét. Ha felhívjuk az ügyfélszolgálatot, az három billentyűleütés (a 198-as kell beütni); azután bediktáljuk a nevet és a címet; erre a szolgáltató megadja a számot, vagy mindjárt kapcsolja is (így van ez akkor is, ha a vasúti menetrendre vagyunk kíváncsiak, mozijegyet rendelünk, vagy egyéb ügyfélszolgálatra támaszkodunk).

VoiceXML


A VoiceXML (VXML) a VoiceXML Forum által kifejlesztett és szabványosított XML alapú technológia. A szabványosításra nagy szükség is volt, mert a VoiceXML előtt is voltak már használható hang alapú webimplementációk (a Motorola VoXML-je és az IBM SpeechML-je), csak éppen nem voltak kompatibilisek egymással.


A VoiceXML Forumot olyan nagyvállalatok hozták létre (AT&T, Lucent Technologies, Motorola és IBM), amelyeknek közös érdekük volt egy egységes, hangvezérelt web kialakítása. A szabvány 1.0-s változatát 2000 márciusában mutatták be a W3C konzorciumnak, s ma már a 2.0-s, illetve a gyártók által némileg bővített 2.1-es változatnál tartunk.


Mint már láthattuk, a “digitális ügyintézők” platformja nagyon összetett, emiatt az esetek többségében igen drága is, ám – ahogyan azt a szoftverpiacon már megszokhattunk – mindennek megvan a maga ingyenes változata is: az OpenVXI megadja a teljes szoftverhátteret a VoiceXML platform létrehozásához, gyakorlatilag tehát csak a telefonvonalakat kezelő hardvert kell hozzá beszerezni.


Működés


Az egész ügymenet (session) azzal indul, hogy az ügyfél felhívja a VoiceXML platformot, s az betölti a szükséges dokumentumokat. A folyamat elindulásával az ügyfél az első párbeszédállapotba (dialog state) kerül, és voltaképpen mindvégig ezek között az állapotok között mozog (mintha a webböngészőjében egyik lapról átlépne a másikra).

A VoiceXML párbeszédeiben (dialog) menükkel (menu) és űrlapokkal (form) dolgozhatnak az ügyfelek. A menük voltaképpen a HTML-es kapcsoknak felelnek meg: az ügyfél rajtuk választhatja ki, hogy a rendszer melyik másik lapon folytassa a feldolgozást. Az űrlapon viszont mezőket (field) kell kitölteni; ezek a mezők lehetnek egyszerű választások (igen vagy nem), számok vagy tetszőleges szövegek is. Az űrlap kitöltés után – akárcsak a HTML-es űrlap – visszaküldhető a kiszolgálónak, hogy az dolgozza fel; ez a legtöbb esetben egy egyszerű HTTP-kérés.

Maga a VoiceXML-alkalmazás (application) egy közös gyökérdokumentumon (root document) osztozkodó VXML-dokumentumok együttese. Ha az alkalmazás valamelyik dokumentuma megnyílik, akkor automatikusan betöltődik a gyökérelem is, és a teljes ügymenet alatt a “gyereklapok” is elérnek róla minden adatot.

Az ügyfél által kitöltendő mezők értékeit nyelvtanok (grammar) felügyelik: ezek a nyelvtanok határozzák meg, hogy milyen legyen a beviteli (DTMF nyomógombos vagy szöveges) érték. A párbeszédek egyik fajtáját, az al-párbeszédet (subdialog) beágyazhatjuk más párbeszédekbe: általában sokszor ismétlődő kérdéseket foglalunk ilyen al-párbeszédbe, hogy a gép mindig ugyanúgy tehesse fel őket az ügyfélnek. A vezérlés és feldolgozás egyszerűsítésére változókat (variable) is definiálhatunk, s azok tetszőleges adatot tárolhatnak (leggyakrabban a felhasználó egy korábbi válaszát). A változókat más dokumentumokban is kiolvashatjuk, és például az értéküknek megfelelően tehetjük fel a következő kérdést.


A tesztelt VXML-állomány

Az XML-kód elég egyszerű, nem is kell hozzá különösebb magyarázat, egy apróságra azonban érdemes kitérni: azt gondolhatnánk, hogy az “option” felsorolást jelent, vagyis a gép végigmondja a választási lehetőségeket, holott nekünk kell bemondanunk, mit választunk; ez kis listáknál sajnálatos, de ha hosszú a felsorolás, akkor nagyon szerencsés. A kitöltés után (vagyis ha már azt is megválaszoltuk, hogy hányan utaznánk) a kiszolgálóoldalról gépelés hallatszik, mintha az ügyfélszolgálat munkatársa vadul dolgozna az adatok felvételén.
S végül ezt a HTTP GET alapú választ kaptuk az általunk megadott célkiszolgálón:
GET /?city=Edinburgh&travellers=3 HTTP/1.0

Teszt


A keretes szövegben látható mintát feltettük egy ingyenes VXML-kiszolgálóhoz (VoiceGenie), hogy kipróbáljuk, működik-e az elmélet a gyakorlatban. A VoiceGenie hangfeldolgozó kiszolgálója persze csak angolul beszél, de ezt nem róhatjuk fel neki (tudomásunk szerint nincs működő magyar VoiceXML-implementáció, bár a SZTAKI munkatársai dolgoznak rajta).

A VoiceGenie-regisztráció után kapunk egy telefonszámot, illetve egy melléket: ott érhetjük el a magunk hangvezérelt VXML-alkalmazását. Ez egy egyesült államokbeli telefonszám, s különös módon nagyjából ugyanannyiért léphetünk kapcsolatba vele (nekünk percenként csak nettó 80 fillérrel volt drágább), mint egy hazai mobilszámmal (ebből jól látszik a hazai mobilszolgáltatók roppant árrése).

VXML-állományunkat fel kell tennünk egy olyan helyre, ahol a VoiceGenie kiszolgálója egyszerűen hozzáférhet a weben át; az egyszerűség kedvéért saját webkiszolgálónkra tettük fel tehát, és a VoiceGenie beállításai között megadtuk ennek a webkiszolgálónak az URL-jét. Ezután csak felhívtuk a megadott telefonszámot, bediktáltuk a melléket, és indult is az alkalmazás: egy kellemes női hang felolvasta az első kérdést. Egy kicsit lehetett azért érezni, hogy gép szól hozzánk, de a tiszta, gépi hangot jobban lehetett érteni, mint ha egy anyanyelvi beszélgetőpartner olvasta volna fel ugyanazt a szöveget.

A hangfelismerés több mint kielégítő volt: ha a gép netán nem értette azt, amit mondtunk, akkor visszakérdezett, de ez az egész tesztben csak egyszer történt meg. Amikor végeztünk az űrlap kitöltésével, a szolgáltató szervere a HTTP GET metódussal elküldte az adatokat az általunk megjelölt kiszolgálónak, s azt mindjárt fel is dolgozhattuk volna (például PHP-val, ha egy ingyenes tárhelyszolgáltatónál tartjuk a VXML-állományokat).








Hasznos webhelyek
VoiceXML Forum 
OpenVXI 
VoiceGenie

Összegzés


A VoiceXML leírását olvasgatva az ember hajlamos azt gondolni, hogy ez csak egy újabb marketingfogás, de ez a benyomás mindjárt megváltozik, ha arra gondolunk, hogy milyen egyszerű feladat így 24 órás telefonos ügyfélszolgálatot felállítani. Tesztünk várakozáson felüli eredménnyel szolgált: minden azonnal működött, tökéletes volt a rendszer szintetizált hangja, és szinte mindig értette a mi magyar-amerikai kevert akcentusunkat is.

Tény, hogy a VoiceXML még nemigen terjedt el. De az biztos, hogy a következő néhány évben sok ügyfélszolgálat már ezt választja majd a sokszor körülményes mostani megoldások helyett.

Ajánlott videó

Nézd meg a legfrissebb cikkeinket a címlapon!
Olvasói sztorik