WOJSKOWA AKADEMIA TECHNICZNA
Laboratorium z przedmiotu „Systemy dialogowe”
Sprawozdanie z pracy laboratoryjnej nr3 i 4
Stopień, Imię i Nazwisko prowadzącego: dr inż. Andrzej Wiśniewski
Stopień, Imię i Nazwisko słuchacza: szer. pchor. Suchocki Mateusz
Grupa: I8G1S1
Data wykonania: 16.01.2011r.
Opis portalu głosowego www.CallFire.com
Ze względu na liczebność grupy znalezienie portalu głosowego było nie lada wyzwaniem. Portal głosowy obsługuje standard vxml i dostarcza dodatkowo własne funkcjonalności.
Kolejnym krokiem jest dołaczenie pliku na server.
Po dodaniu skryptu możemy go edytować i testować. Niestety jak już wspomniałem portal ten nie obsługuje telefonii z polski wiec nie możliwe jest jej przetestowanie. Również portal jest płatny, mianowicie chcąc korzystać z usług portalu należy wykupić u nich numer którym będzie się indetyfikowało. Jednocześnie mało jest dokumentacji odności vxml.
Portal ten posiada bardzo fajne narzędzia do tworzenia aplikacji glosowych. Przy pomocy bloczków graficznych możemy zamodelować całą aplikacje która jest automatyczne przetwarzana na skrypt xml. Jest tylko jeden problem chcąc pisać statycznie aplikacje należy się posługiwać stworzonym przez nich językiem. Skłądnia języka jest bardzo podobna i wzorowana na vxml i plus dla tego portalu , że posiada dobra dokumentacje na ten temat.
Podsumowując portal ten wręcz nie nadaje się do celów dydaktycznych ale jak już wspomniałem znalezienie odpowiedniego portalu było pewną trudnością ze względu na liczebność grupy. Portal ten posiada słabe narzędzia do edytowania i tworzenia skryptów vxml natomiast ma dobrze rozbudowany własny standard który jest dobrze opisany w dokumentacji.
Schemat strukturalny portalu głosowego
Opis działania portalu głosowego
Przeglądarka głosowa łączy się z serwerem i pobiera dokument VXML. Dzięki wbudowanym urządzeniom ASR, TTS i urządzeniu interpretującym język VXML prowadzi dialog z użytkownikiem, który łączy się z przeglądarką za pomocą urządzenia obsługującego mowę (np. telefon).
Przykładowa aplikacja napisana w standardzie VXML
<?xml version="1.0" encoding="UTF-8"?> <vxml xmlns="http://www.w3.org/2001/vxml" version="2.1"> <form> <field name="greeting"> <prompt> Please say hello </prompt> <grammar mode="voice" xml:lang="en-US" version="1.0" root="top"> <rule id="top"> <one-of> <item>hi</item> <item>hello</item> </one-of> </rule> </grammar> <filled> <prompt>Thank you. You said <value expr="greeting"/> </prompt></filled></field></form></vxml> |
<nagłówek- określenie wersji i kodowania> <form- kotener zawierający poddialog> <field-blok przechwytywania informacji od użytkowniaka> <prompt-komunikat głosowy generowany z tekstu> <grammar –określenie gramatyki> <rule-definiuje rozszerzenie gramatyki> <item- zdefiniowanie wyrazów rozpoznawalnych> <filled-blok umożliwiający pobranie informacji wprowadzonej przez użytkownika> <value expr=”greeting”/>powtórzenie przez system wprowadzonej informacji -zamykanie kolejnych bloków |
---|
Prosta aplikacja- informacja sportowa
Schemat blokowy aplikacji:
Przykładowy dialog
S: Witam w Suchy-Company! U nas dowiesz się wszystkich nowości sportowych z dyscyplin piłka nożna, koszykówka, piłka ręczna. Wybierz jedną z nich!
U: Piłka nożna.
S: Wybrałeś piłkę nożną...
S: Chcesz się dowiedzieć nowości sportowych z kraju czy ze świata?
U: Z kraju
S: Wybrałeś wiadomości z kraju... Proszę czekaj. Sprawdzam aktualności...Kategoria Piłka nożna! Piłkarze pogrążają się... Kolejny mecz przegrany przez nasza reprezentację.
S: Czy chcesz się dowiedzieć o nowościach sportowych z innej dyscypliny sportowej?
U: Nie
S: Dobrze. Dziękuje za telefon i do usłyszenia
Listening
<?xml version="1.0" ?>
<vxml version="2.0" xml:lang="pl-pl" xmlns="http://www.w3.org/2001/vxml">
<var name="sport" expr="'brak sportu'"/>
<form id="informacja">
<nomatch>
Przepraszam ale nie mogę przyjąć takiej odpowiedzi. Wybierz jedną z dyscyplin sportu: piłka nożna, koszykówka, piłka ręczna!
</nomatch>
<noinput>
Przepraszam nie słyszę Cię.Wybierz jedną z dyscyplin: piłka nożna, koszykówka, piłka ręczna!
</noinput>
<property name="input" value="voice"/>
<field name="usluga">
<prompt>Witam w Suchy-Company!<break time="1s"/>U nas dowiesz się wszystkich nowości sportowych z dyscyplin piłka nożna, koszykówka, piłka ręczna. Wybierz jedną z nich!</prompt>
<grammar mode="voice" root="Jakausluga">
<rule id="Jakausluga" scope="public">
<one-of>
<item>piłka nożna</item>
<item>koszykówka</item>
<item>piłka ręczna</item>
</one-of>
</rule>
</grammar>
<filled namelist="usluga">
<if cond="usluga == 'piłka nożna'">
<prompt>Wybrałeś piłkę nożną ...<break time="2s"/></prompt>
<assign name="sport" expr="'piłka nożna'"/>
<goto next="#jaki"/>
<elseif cond="usluga == 'koszykówka'"/>
<prompt>Wybrałeś koszykówkę ...<break time="2s"/></prompt>
<assign name="sport" expr="'koszykówka'"/>
<goto next="#jaki"/>
<elseif cond="usluga == 'piłka ręczna'"/>
<prompt>Wybrałeś piłkę ręczną...<break time="2s"/></prompt> <assign name="sport" expr="'piłka ręczna'"/>
<goto next="#jaki"/>
</if>
</filled>
</field>
</form>
<form id="jaki">
<nomatch>
Przepraszam nie zrozumiałam! Wybierz z kraju lub ze świata!
</nomatch>
<noinput>
Przepraszam nie usłyszałam Cię! Wybierz z kraju lub ze świata!
</noinput>
<property name="input" value="voice"/>
<field name="jakie_wiadamosci">
<prompt>Chcesz się dowiedzieć nowości sportowych z kraju czy ze świata?</prompt>
<grammar mode="voice" root="Jakausluga">
<rule id="Jakausluga" scope="public">
<one-of>
<item>z kraju</item>
<item>ze świata</item>
</one-of>
</rule>
</grammar>
<filled namelist="jakie_wiadamosci">
<if cond="jakie_wiadamosci == 'z kraju'">
<prompt>Wybrałeś wiadomości z kraju... <break time="1s"/>Proszę czekaj<break time="1s"/> Sprawdzam aktualności...<break time="1s"/>Kategoria</prompt>
<if cond="sport==='piłka nożna'">
<prompt><value expr="sport"/>! Piłkaże pogrążają się... Kolejny mecz przegrany przez nasza reprezentację.</prompt>
<elseif cond="sport=='koszykówka'"/>
<prompt><value expr="sport"/>! Marcin Gortat koszykarzem miesiąca...</prompt>
<elseif cond="sport=='piłka ręczna'"/>
<prompt><value expr="sport"/>! Karol Bielecki powraca na boisko w pięknym stylu... pogrąża bramkarza drużyny przeciwnej!</prompt>
</if>
<goto next="#koniec"/>
<elseif cond="jakie_wiadamosci== 'ze świata'"/>
<prompt>Wybrałeś ze świata...<break time="2s"/>Kategoria</prompt>
<if cond="sport==='piłka nożna'">
<prompt><value expr="sport"/>! Real Madryt awansuje na pierwsze miejsce w klasyfikacji FIFA</prompt>
<elseif cond="sport=='koszykówka'"/>
<prompt><value expr="sport"/>!Przepraszam nie posiadam na ten temat żadnych wiadomości!</prompt>
<elseif cond="sport=='piłka ręczna'"/>
<prompt><value expr="sport"/>!Szczypiorniści Niemieccy pokonali reprezentację Bułgarji trzy do zera</prompt>
</if>
<goto next="#koniec"/>
</if>
</filled>
</field>
</form>
<form id="koniec">
<nomatch>
Przepraszam nie rozumiem. Wybierz tak lub nie!
</nomatch>
<noinput>
Przepraszam nie usłyszałam. Wybierz tak lub nie!
</noinput>
<property name="inputmodes" value="voice"/>
<field name="koncowy">
<prompt><break time="2s"/>Czy chcesz się dowiedzieć o nowościach sportowych z innej dyscypliny sportowej?</prompt>
<grammar mode="voice" root="tak_nie">
<rule id="tak_nie" scope="public">
<one-of>
<item>tak</item>
<item>nie</item>
</one-of>
</rule>
</grammar>
<filled name="koncowy">
<if cond="koncowy == 'tak'">
<prompt>Dobrze. Proszę czekaj!.</prompt>
<goto next="#informacja"/>
<elseif cond="koncowy == 'nie'"/>
<prompt>Dobrze. Dziękuje za telefon i do usłyszenia</prompt>
</if>
</filled>
</field>
</form>
</vxml>
Opis działania aplikacji.
Tematem mojej aplikacji głosowej jest “informacja sportowa”. Aplikacja ma umożliwiać użytkownikowi wybór dyscypliny sportowej o której chciałby dostać aktualne wiadomości. Również użytkownik ma mieć możliwość ograniczenia zakresu z jakiego ma otrzymać wiadomości. Ze względu na ograniczenia czasowe jak i również temat laboratorium(prosta aplikacja) moja aplikacja umożliwia wybór jedynie 3 dyscyplin sportowych takich jak : piłka nożna, koszykówka, piłka ręczna. Również zakres wiadomości podzielony jest w mojej aplikacji jedynie na wiadomości z kraju i ze świata, pisząc większa aplikacje(bardziej rozbudowaną) można by było jeszcze podzielić te wiadomości na regiony kraju lub na poszczególne kraje. Po wysłuchaniu aktualności z danej dziedziny sportowej użytkownik ma również możliwość ponownego odsłuchania aplikacji od samego początku w celu wyboru innej dyscypliny lub tej samej (w przypadku gdy wiadomości na temat danej dyscypliny nie zostały zrozumiane).
Uruchomienie aplikacji głosowej za pomocą narzędzi platformy głosowej Voxeo
Chcąc korzystać z mojej aplikacji głosowej zarejestrowałem się na stronie http://evolution.voxeo.com/account/login.jsp . Co umożliwia mi korzystanie z aplikacji internetowej firmy Voxeo. Po otrzymaniu hasła zalogowałem się na stronę .
Następnym krokiem było umieszczenie na przydzielonym mi dysku napisanego przeze mnie skryptu.
Chcąc to wykonać przeszedłem do zakładki ACCOUNT-> File, Logs & Report. Po czym otworzył mi się menadżer plików przeszedłem do folderu WWW i zapisałem tam mój plik.
Następnie przechodzę do zakładki ACCOUNT -> Application Manage w celu utworzenia nowej aplikacji. Po naciśnieci przycisku Add Application pojawiła mi się formularz. Uzupełniam go wpisując nazwę, wybieram formę komunikacji, rodzaj głosowej aplikacji oraz ścieżka do plik. Po czym przyciskiem Create application ostatecznie tworze aplikację.
Po utworzeniu aplikacji przechodzę do zakładki Contact Methods gdzie są przedstawione numery pod jakimi jest dostępna moja aplikacja. Do celów dydaktycznych wykorzystałem numer Skype VoIP
+99000936 9991478384 .
Do komunikacji się z moją aplikacją posłużył mi program Skype.
Połączenie jest realizowane poprawnie oraz aplikacja działa poprawnie zgodnie z założeniami.
Teraz mogę się dowiedzieć aktualności dzięki mojej aplikacji.
Wnioski
Temat mojego projektu jest dość skromny uwarunkowane jest to czasem. Przypomina to automatyczna sekretarkę jaką udostępniają każde sieci komórkowe, różnica jest tylko w przyjmowaniu informacji przedstawiona sekretarka pobiera informacje poprzez wciśnięte guziki na klawiaturze telefonu natomiast moja aplikacja pobiera informacje bezpośrednio z mowy użytkownika, co moim zdaniem jest bardziej komfortowe. Zaleta tej aplikacji jest to że można się z nią połączyć przy pomocy darmowego programu jakim jest Skype. Realizując zadanie laboratoryjne miałem możliwość zapoznania się z językiem VXML i jego zastosowaniem. Dzięki czemu uświadomiłem sobie jak wielką przyszłość mają przed sobą aplikacje pisane w tym języku. Pozwoli to zautomatyzować obsługę klienta w firmach.
Nr Skype +99000936 9991478384