BUDOWA STRON INTERNETOWYCH SŁUŻĄCYCH DO ROZPOZNAWANIA MOWY ========================================================== UWAGI: - W poniższej dokumentacji pokazano przykłady opisu stron WWW w formacie HTML, które mogą być prawidłowo interpretowane również przez starsze wersje przeglądarek. Dlatego zapisywano np. wartości parametrów w podwójnych apostrofach, co w przypadku nowszych wersji HTML jest zbędne - W niektórych sytuacjach w dokumentach HTML, a bardzo często w treści funkcji zapisanych w JSCRIPT, stosowanie małych i dużych liter ma znaczenie: przykładowo w JSCRIPT funkcja o nazwie ABCD() nie byłaby tą samą funkcją co ABCd() PODSTAWOWE INFORMACJE O BUDOWIE STRON INTERNETOWYCH --------------------------------------------------- - Dokument HTML zaczyna się od znacznika a kończy na - W skład dokumentu mogą wchodzić dwie podstawowe części: nagłówek i część główna. W nagłówku może się znaleźć tytuł strony internetowej, a część główna zawiera opis elementów widocznych na tej stronie - Nagłówek zaczyna się od znacznika i kończy na - W nagłówku powinien być określony zestaw czcionek używanych w tekście (zależny od języka). W przypadku języka polskiego, realizowane jest to za pomocą zapisu: - Tytuł strony internetowej zaczyna się od znacznika a kończy na - Część główna dokumentu zaczyna się od znacznika a kończy na - Dowolny tekst zamieszczony w ramach głównego segmentu dokumentu HTML jest wyświetlany jako tekst na stronie internetowej, o ile nie znajdą się w nim jakieś znaczniki (czyli słowa kluczowe zamieszczone w nawiasach ostrych) - W ramach znaczników mogą być wyspecyfikowane tzw. atrybuty zawierające dodatkowe informacje o elemencie opisywanym za pomocą danego znacznika np. można określić kolor tła strony internetowej za pomocą atrybutu BGCOLOR: Przykład prostego dokumentu HTML: Web-based voice control of the robotized cell

Web-based voice control of the robotized cell

FORMULARZE ---------- W ramach głównego segmentu HTML mogą wystąpić tzw. formularze, służące do wprowadzania danych przez użytkownika. Wewnątrz formularzy znajdują się różnego rodzaju pola służące do wprowadzania danych, jak pola tekstowe, przyciski, pola wyboru itp. Przykłady znaczników stosowanych w związku z formularzami: - Początek formularza:
NAME oznacza nazwę formularza, ACTION oznacza np. plik HTML, który ma być wysłany przez serwer po otrzymaniu formularza, a METHOD - sposób przesyłania elementów formularza do serwera (wyróżnia się metodę GET oraz POST) - Przycisk powodujący wysłanie formularza: NAME oznacza nazwę nadaną elementowi, a VALUE - napis, który ma się pojawić na przycisku - Pole tekstowe: VALUE oznacza tekst, który ma się znaleźć w polu tekstowym (można pominąć ten parametr, jeśli pole ma być wstępnie puste), a SIZE - długość pola PODSTAWOWE INFORMACJE O SKRYPTACH JSCRIPT ----------------------------------------- Skrypty JSCRIPT są realizowane podczas wyświetlania strony internetowej. Początek i koniec skryptu jest oznaczony za pomocą znaczników : Powyższy skrypt powoduje wstawienie tekstu "Oto jest tekst" w pole tekstowe o nazwie "pole1" wchodzące w skład formularza o nazwie "f1" opisanego w danym pliku HTML. Podwójny ukośnik // oznacza komentarz w JSCRIPT i obowiązuje do końca danej linii. FUNKCJE: W ramach skryptu można definiować funkcje, których wywołanie może nastąpić albo automatycznie (programowo), albo poprzez jakieś działanie ze strony użytkownika np. przez "kliknięcie" myszką na określonym polu formularza. Opis funkcji składa się z nagłówka i następującego po nim ciągu instrukcji zapisanego w nawiasach klamrowych. Poszczególne instrukcje oddziela się od siebie średnikami. Nagłówek składa się ze słowa kluczowego "function",nazwy funkcji i wykazu jej parametrów zapisanego w nawiasach. Jeśli funkcja jest bezparametrowa, to nawiasy i tak muszą wystąpić. Przykład prostej funkcji: function Change(tekst,kolor) {f1.pole1.value=tekst; f1.pole1.style.color=kolor} Jeśli dla pewnego pola formularza zostanie ustawione tzw. zdarzenie "onClick", którego atrybutem jest nazwa funkcji, to w wyniku "kliknięcia" na to pole następuje wywołanie tej funkcji. np.: Aby uniknąć błędnej interpretacji treści skryptu przez przeglądarki nie obsługujące skryptów, treść tę zapisuje się pomiędzy znacznikami oznaczającymi komentarz w HTML np.: INSTRUKCJE WARUNKOWE W SKRYPTACH: Instrukcja warunkowa składa się ze słowa kluczowego IF, warunku logicznego zapisanego w nawiasach zwykłych, zapisanego w nawiasach klamrowych ciągu instrukcji realizowanych w przypadku spełnienia tego warunku, oraz - ewentualnie - słowa kluczowego ELSE i zapisanego w nawiasach klamrowych ciągu instrukcji realizowanych w przypadku niespełnienia warunku np.: if (f1.pole1.value==="koniec") {f1.przycisk1.click()} else {f1.przycisk2.click()} W wyniku realizacji powyższego fragmentu skryptu następuje automatyczne "kliknięcie" na przycisk o nazwie "przycisk1", jeśli zawartość pola tekstowego o nazwie "pole1" jest tekstem "koniec", natomiast w przeciwnym wypadku następuje automatyczne "kliknięcie" na przycisk o nazwie "przycisk2". PLIKI ZE SKRYPTAMI: Zamiast umieszczać skrypty w dokumencie HTML, można je zamieszczać także w osobnych plikach (z rozszerzeniem .JS). W nagłówku dokumetu HTML wystarczy wtedy umieścić odniesienie do takiego pliku, za pomocą znacznika W powyższym przykładzie znacznik FUNKCJE SŁUŻĄCE DO GENEROWANIA MOWY: Voice (nr) - wybranie głosu o podanym numerze (domyślnie ustawiony jest głos numer 1). Liczba możliwych głosów jest uzależniona od instalacji systemu SAPI na danym komputerze Przykład: Voice(2) Speak (tekst) - wypowiedzenie podanego tekstu aktualnie ustawionym głosem (w aktualnej wersji systemu możliwe są tylko wypowiedzi w języku angielskim) Przykład: Speak('Robot is ready') ROZPOZNAWANIE MOWY: Realizacja rozpoznawania mowy wymaga wcześniejszego zdefiniowania języka komend głosowych. Może to nastąpić poprzez zapisanie zestawu możliwych komend głosowych w ramach bezparametrowej funkcji (o dowolnej nazwie) umieszczonej w nagłówku dokumentu HTML, albo poprzez opisanie języka komend głosowych w formacie VCD w osobnym pliku tekstowym. Wariant 1: Zestaw komend w funkcji JSCRIPT ------------------------------------------ W przypadku podawania komend w funkcji JSCRIPT, w funkcji tej zapisuje się szereg wywołań funkcji "command", której parametrem jest treść pojedynczej komendy. W obecnej wersji systemu komendy muszą być zapisane w języku angielskim. Przykładowo, jeśli funkcja zawierająca wykaz komend nazywałaby się "WykazKomend", to jej postać mogłaby być następująca: function WykazKomend() {command('nest'); command('move to the left'); command('move to the right'); command('stop')} Ponadto w znaczniku dokumentu HTML musi się znaleźć polecenie inicjalizacji i zakończenia pracy aparatu rozpoznawania mowy (funkcje "Activate" i "Deactivate"). Nazwa funkcji zawierającej wykaz komend jest pierwszym parametrem funkcji "Activate": Parametry funkcji "Activate" będą szczegółowo omówione dalej. Wariant 2: Opis języka w formacie VCD w pliku tekstowym ------------------------------------------------------- W przypadku definiowania języka komend w formacie VCD w osobnym pliku tekstowym, nazwa tego pliku (bez rozszerzenia!) musi być drugim parametrem procedury "Activate" np. jeśli nazwa ta jest "komendy.vcd", to zapis w znaczniku może mieć następującą postać: Jeśli komendy są zapisane w języku polskim, to prawidłowe ich rozpoznanie jest uzależnione od spełnienia następujących dwóch warunków: - W opisie języka musi się znaleźć dyrektywa $language: Polish - Po znacznikach Odwołanie do pliku słownikowego XMV może być pominięte, gdy zamiast rzeczywistego zdalnego sterowania realizujemy symulację zdalnego sterowania za pomocą symulatora ROB_SYM, który odwołuje się do tego samego pliku VCD. Parametry funkcji "Activate" ---------------------------- 1) Nazwa funkcji zawierającej wykaz komend (czyli ciąg wywołań funkcji "command") 2) Nazwa pliku (bez rozszerzenia) zawierającego opis języka komend głosowych w formacie VCD 3) Nazwa funkcji wywoływanej, gdy aparat rozpoznawania mowy stawia hipotezę co do treści wypowiedzianej komendy 4) Nazwa funkcji wywoływanej w przypadku prawidłowego rozpoznania komendy 5) nazwa funkcji wywoływanej w przypadku błędnego rozpoznania komendy Funkcje, których nazwy są 3-im, 4-ym lub 5-ym parametrem funkcji "Activate" mają jeden parametr tekstowy, który stanowi treść rozpoznawanej komendy. Z wartości tego parametru można korzystać na różne sposoby np. wstawiać go do pola tekstowego strony internetowej w celu wyświetlenia aktualnej hipotezy, albo przeprowadzić analizę semantyczną rozpoznanej komendy. Poniższy przykład przedstawia dokument HTML, w którym wypowiadane komendy są zapisywane do pola tekstowego o nazwie "tekst", przy czym kolor czcionki jest niebieski w przypadku stawiania hipotezy, zaś czarny w przypadku ostatecznego rozpoznania komendy:
ANALIZA SEMANTYCZNA KOMEND GŁOSOWYCH W JSCRIPT ---------------------------------------------- Prosta analiza semantyczna rozpoznanej komendy głosowej może być zrealizowana z wykorzystaniem kodu w JSCRIPT (czyli po stronie klienta). Alternatywą jest wysłanie tekstu rozpoznanej komendy jako wartości (value) jednego z pól formularza do serwera, na którym przeprowadzona będzie analiza semantyczna (wtedy jest możliwa dużo bardziej złożona analiza, omówiona w osobnej dokumentacji). Natomiast prosta analiza semantyczna realizowana w JSCRIPT może polegać np. na sprawdzaniu, czy treść rozpoznanej komendy jest taka sama, jak konkretny ciąg znaków (za pomocą operatora "==="), bądź na sprawdzaniu (za pomocą funkcji "indexOf"), czy pewien ciąg znaków jest zawarty w rozpoznanej komendzie . UWAGA! Rozpoznane komendy są zawsze zapisane DUŻYMI LITERAMI, stąd porównywane ciągi znaków muszą też być zapisane dużymi literami PRZYKŁAD ANALIZY SEMANTYCZNEJ KOMENDY W JSCRIPT ----------------------------------------------- function rozpoznanie(komenda) {if (komenda.indexOf("ZATRZYMAJ")==0) {form.stop.click()}} W powyższym przykładzie jest sprawdzane, czy wypowiedziana komenda zaczyna się od ciągu znaków "ZATRZYMAJ". Jeśli tak, to następuje automatyczne "kliknięcie" na przycisk o nazwie "stop". Uwaga! Pozycja ciągu znaków zwracana przez funkcję "indexOf" jest liczona od zera.