Elektronická verze publikace ve formátu pdf

Transkript

Elektronická verze publikace ve formátu pdf
České vysoké učení technické v Praze
Fakulta elektrotechnická
Diplomová práce
WEBové rozhraní pro úlohy zpracování řečového signálu
Milan Václavík
Vedoucí práce: Doc. Ing. Petr Pollák, CSc
Studijní program: Elektrotechnika a informatika dobíhající magisterský
Obor: Informatika a výpočetní technika
únor 2008
ii
Poděkování
Děkuji všem, kteří měli se mnou trpělivost a umožnili mi dokončit tuto práci.
iii
iv
Prohlášení
Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady
uvedené v přiloženém seznamu.
Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 Zákona č. 121/2000
Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů
(autorský zákon).
V Praze dne 18. 1. 2008
.............................................................
v
vi
Abstrakt
Tato diplomová práce se zabývá demonstrací zvýrazňování a rozpoznávání řeči. Jedná se o multiplatformní aplikace typu klient – server, které jsou uživatelům dostupné s pomocí WWW
prohlížeče — jedná se o aplety. V první části práce je vytvořen klientský program, který umožňuje uživateli nahrát audiosignál, který je následně odeslán na server, kde se provádí zvolená
metoda zvýraznění řeči. Zvýraznění řeči je provedeno s pomocí externího programu CtuCopy
(univerzální nástroj pro zvýrazňování řeči a parametrizaci). Audiosignál se zvýrazněnou řečí je
poslán zpět klientovi, který provádí vizualizaci audiosignálu a to s pomocí časového průběhu
a spektrogramu nebo ho může přehrát. Ve druhé části diplomové práce se zabývám realizací
demonstrace rozpoznávání řeči na základě hlasového ovládání WWW stránek. Uživatel může
hlasem ovládat samotnou WWW stránku — posun stránky nahoru/dolu, aby si mohl zobrazit
skrytý text, může se posouvat v historii zobrazených WWW stránek směrem vřed/vzad a může
hlasem zobrazovat WWW stránky, na které ukazují hypertextové odkazy. Hlasové ovládání
WWW stránek je demonstrováno na simulaci hlasového vytáčení telefonního čísla a na hlasovém výběru osoby ze seznamu členů katedry, který umožní zobrazit kontaktní informace o dané
osobě. Simulace hlasového vytáčení telefonního čísla je založena na rozpoznávání souvislé sady
číslovek a dvou symbolů (#, *), oddělených krátkou pauzou. Výběr osob ze seznamu je založen na rozpoznání jména, příjmení, příjmení a jména, jména a příjmení. Součástí demonstrace
je vytvoření výkonového detektoru řeči, který zajišťuje, že je rozpoznávaná pouze platná řeč.
Vlastní rozpoznávání mluvené řeči je realizováno na straně serveru s pomocí sady nástrojů
HTK.
Summary
This diploma thesis deals with the demonstration of speech enhancement and speech recognition
tasks. The solution is based on multiplatform applications on the basis of WWW applets
using the architecture „client — server“. Within the initial part I have created the program
recording locally audio signal on client side and sending its then to the server where further
processing is realized. The first application deals with algorithms for speech enhancement based
on spectral subtraction which is implemented in external program „ctucopy“ (the more general
tool for speech enhancement and parameterization) running at the server side. The new audio
signal is sent back to the client which can observe it as waveform or spectrogram. It is also
possible to play original or enhanced speech signal on the client side. Secondly, I realized a
demonstration of speech recognition within a voice controlled WWW pages. User can control
by voice scrolling of WWW pages (up, down), browsing in the history of pages, or showing new
pages according to standard WWW links. Two simple task were chosen for this demonstrative
purposes: simulation of telephone number dialing and on department personnel list with brief
contact information. An important part of this application was the creation of energy based
detector of speech activity as only the signal containg a speech should be sent to the server side
for the recognition. Speech recognizer implemented at the server is based on standard HMM
modelling and external programs from HTK Toolkit were used for this purpose. Training of
HMM models was not a part of this work.
vii
viii
Obsah
Seznam obrázků
xiii
Seznam tabulek
xv
1 Úvod
1
2 Obecný popis problému
2.1 Zvýrazňování řeči . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Základní principy metod redukce šumů . . . . . . . . .
2.2 Detekce a rozpoznávání řeči . . . . . . . . . . . . . . . . . . .
2.2.1 Detekce řečové aktivity . . . . . . . . . . . . . . . . .
2.2.1.1 Deterministické metody detekce řeči . . . . .
2.2.1.2 Stochastické metody detekce řeči . . . . . . .
2.2.1.3 Návrh výkonového detektoru řeči . . . . . . .
2.2.2 Rozpoznávání řeči . . . . . . . . . . . . . . . . . . . .
2.2.2.1 Rozpoznávání řeči na základě porovnávání se
2.2.2.2 Statistické metody rozpoznávání řeči . . . . .
2.2.2.3 Princip rozpoznávače řeči . . . . . . . . . . .
2.3 Demonstrace zvýrazňování a rozpoznávání řeči v praxi . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
vzory
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Přenos řečového signálu po internetu
11
4 Aplikace (aplet) SEDemo — „zvýraznění řeči“
4.1 Architektura digitálního zpracování audiosignálu . . . . . . . . . .
4.2 Navržená zařízení . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1 Vstupní zařízení . . . . . . . . . . . . . . . . . . . . . . . .
4.2.2 Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.3 Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.4 Výstupní zařízení . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Vizualizace dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Zobrazení vstupního průběhu a vstupního spektrogramu . .
4.3.2 Zobrazení výstupního průběhu a výstupního spektrogramu
4.3.3 Zobrazení ostatních grafických průběhu . . . . . . . . . . .
4.3.4 Použití apletu na html stránce . . . . . . . . . . . . . . . .
4.3.5 Popis zdrojových kódů . . . . . . . . . . . . . . . . . . . . .
4.3.6 Nezbytné podpůrné balíčky . . . . . . . . . . . . . . . . . .
4.3.6.1 JavaHelp 2.0 02 . . . . . . . . . . . . . . . . . . .
4.3.6.2 Java Media Framework 2.1.1e . . . . . . . . . . .
4.4 Závěr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Aplet SCWP — „rozpoznávání řeči“
5.1 Aplet SR . . . . . . . . . . . . . . . .
5.1.1 Principiální popis apletu . . . .
5.1.1.1 Princip detektoru řeči
5.1.2 Popis vzhledu apletu . . . . . .
5.1.3 Použití apletu na html stránce
5.1.4 Popis zdrojových kódů . . . . .
5.2 Aplet CWP . . . . . . . . . . . . . . .
5.2.1 Principiální popis apletu . . . .
ix
5
5
5
6
6
6
7
7
8
8
9
9
10
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
13
14
14
15
15
15
15
15
16
17
17
17
17
17
17
18
.
.
.
.
.
.
.
.
19
20
20
21
23
23
24
25
25
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
26
27
27
27
27
28
28
28
29
6 Klient / Server SEDemo a SCWP
6.1 Princip fungování demonstrace zvýrazňování řeči
6.2 Princip fungování demonstrace rozpoznávání řeči
6.2.1 Získání akustického signálu . . . . . . . .
6.2.2 Vytvoření gramatiky . . . . . . . . . . . .
6.2.2.1 Gramatika — „intro“ . . . . . .
6.2.2.2 Gramatika — „people“ . . . . .
6.2.2.3 Gramatika — „telephone“ . . .
6.2.3 Vytvoření slovníku . . . . . . . . . . . . .
6.2.4 HMM modely elementární řeči . . . . . .
6.2.5 Rozpoznávání řeči . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
31
33
33
33
33
34
35
35
36
36
36
5.3
5.4
5.5
5.2.2 Popis vzhledu apletu . . . . . .
5.2.3 Použití apletu na html stránce
5.2.4 Popis zdrojových kódů . . . . .
Aplet TELEPHONE . . . . . . . . . .
5.3.1 Principiální popis apletu . . . .
5.3.2 Popis vzhledu apletu . . . . . .
5.3.3 Použití apletu na html stránce
5.3.4 Popis zdrojových kódů . . . . .
Server SCWP . . . . . . . . . . . . . .
Závěr . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7 Instalace programů na webový server
7.1 Instalace serveru . . . . . . . . . . . . . . . . . . . . .
7.2 Instalace klienta (apletu) . . . . . . . . . . . . . . . .
7.2.1 SEDemo . . . . . . . . . . . . . . . . . . . . . .
7.2.2 SCWP . . . . . . . . . . . . . . . . . . . . . . .
7.3 Nastavení práv apletu / aplikace . . . . . . . . . . . .
7.3.1 Model zabezpečení v Javě . . . . . . . . . . .
7.3.2 Soubory zásad zabezpečení . . . . . . . . . . .
7.3.2.1 Vytvoření vlastního souboru zásad . .
7.3.2.2 Popis nastavených zásad zabezpečení
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
39
39
41
41
42
43
43
44
44
44
8 Useability testování webové aplikace SEDemo a SCWP
8.1 Účel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2 Cíle testování . . . . . . . . . . . . . . . . . . . . . . . . .
8.3 Profil uživatele . . . . . . . . . . . . . . . . . . . . . . . .
8.3.1 Persony . . . . . . . . . . . . . . . . . . . . . . . .
8.4 Testy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4.1 Screener . . . . . . . . . . . . . . . . . . . . . . . .
8.4.1.1 Úvod . . . . . . . . . . . . . . . . . . . .
8.4.1.2 Kritéria . . . . . . . . . . . . . . . . . . .
8.4.1.3 Dotazník . . . . . . . . . . . . . . . . . .
8.4.2 Seznámení testera s testovanými programy . . . .
8.4.2.1 Program SEDemo . . . . . . . . . . . . .
8.4.2.2 Program SCWP . . . . . . . . . . . . . .
8.4.3 Seznam úkolů . . . . . . . . . . . . . . . . . . . . .
8.4.3.1 Seznam úkolů — SEDemo . . . . . . . .
8.4.3.2 Seznam úkolů — SCWP . . . . . . . . .
8.4.4 Post-test . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
47
47
47
47
47
48
48
48
48
49
50
50
50
51
51
51
52
x
.
.
.
.
.
.
.
.
.
8.5
8.6
8.7
8.4.4.1 Post-test — SEDemo
8.4.4.2 Post-test — SCWP .
Hardwarové vybavení . . . . . . . . . .
Vypracované testy . . . . . . . . . . .
Závěr . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
52
52
53
53
53
9 Závěr
55
10 Literatura
57
A Uživatelská příručka
A.1 SEDemo . . . . . . . . . . .
A.1.1 Nezbytné nastavení .
A.1.2 Popis ovládání . . .
A.2 SCWP . . . . . . . . . . . .
A.2.1 Nezbytné nastavení .
A.2.2 Popis ovládání . . .
B
C
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Vypracované useability testy
B.1 Vyplněné testy od 1. uživatele . . . . .
B.1.1 Dotazník . . . . . . . . . . . .
B.1.2 Post-test . . . . . . . . . . . . .
B.1.2.1 Post-test — SEDemo
B.1.2.2 Post-test — SCWP .
B.2 Vyplněné testy od 2. uživatele . . . . .
B.2.1 Dotazník . . . . . . . . . . . .
B.2.2 Post-test . . . . . . . . . . . . .
B.2.2.1 Post-test — SEDemo
B.2.2.2 Post-test — SCWP .
B.3 Vyplněné testy od 3. uživatele . . . . .
B.3.1 Dotazník . . . . . . . . . . . .
B.3.2 Post-test . . . . . . . . . . . . .
B.3.2.1 Post-test — SEDemo
B.3.2.2 Post-test — SCWP .
B.4 Vyplněné testy od 4. uživatele . . . . .
B.4.1 Dotazník . . . . . . . . . . . .
B.4.2 Post-test . . . . . . . . . . . . .
B.4.2.1 Post-test — SEDemo
B.4.2.2 Post-test — SCWP .
Obsah přiloženého CD
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
59
59
59
59
61
61
61
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
63
63
63
64
64
64
65
65
66
66
66
67
67
68
68
68
69
69
70
70
70
71
xi
xii
Seznam obrázků
1.1
Komunikační proces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2.1
2.2
Detekce a rozpoznávání řeči . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Parametry rozpoznávače řeči . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
9
4.1
4.2
4.3
Řetězec zařízení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zobrazení vstupního průběhu a vstupního spektrogramu . . . . . . . . . . . . .
Zobrazení výstupního průběhu a výstupního spektrogramu . . . . . . . . . . . .
13
16
16
5.1
5.2
5.3
5.4
Princip fungování programu SCWP . .
Princip výkonového detektoru řeči . .
Grafický vzhled apletu SR . . . . . . .
Grafický vzhled apletu TELEPHONE
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
21
23
27
6.1
6.2
6.3
6.4
6.5
Komunikace
Komunikace
Gramatika Gramatika Gramatika -
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
31
32
34
35
36
7.1
Úvodní html stránka SEDemo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
8.1
8.2
Useability test - nahrávání řeči . . . . . . . . . . . . . . . . . . . . . . . . . . .
Useability test - ovládací panel ikon . . . . . . . . . . . . . . . . . . . . . . . .
53
54
A.1 Program SEDemo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.2 Popis program SEDemo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
60
klienta . .
serveru .
intro . . .
people . .
telephone
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
xiii
xiv
Seznam tabulek
5.1
5.2
Stavy apletu hlasového vstupu . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hlasové ovládání WWW stránky . . . . . . . . . . . . . . . . . . . . . . . . . .
23
25
A.1 Hlasové ovládání WWW stránky . . . . . . . . . . . . . . . . . . . . . . . . . .
A.2 Stavy apletu hlasového vstupu . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
62
xv
xvi
KAPITOLA 1. ÚVOD
1
1 Úvod
Komunikace prostřednictvím mluvené řeči je základní a nejpřirozenější způsob přenosu informace mezi lidmi. V dnešní době s rostoucím vývojem výpočetní techniky vznikají projekty,
které se snaží, aby se plnohodnotným partnerem člověka v mluveném dialogu mohl stát i počítač. Tyto projekty jsou velmi perspektivní a po naplnění svých cílů vedou na přirozenou
komunikaci člověka a stroje (počítač).
Ačkoliv plnohodnotný dialogový režim člověka s počítačem prostřednictvím přirozené plynule promlouvané řeči bez jakýchkoli omezení je v současné době stále ještě nedostupný, tak se
postupně objevují úspěšná dílčí řešení. Tato řešení nacházejí uplatnění v průmyslové a společenské praxi. Ve většině aplikací jde o problémově orientovaná řešení, kdy komunikace je tématicky
omezená, rozpoznávaný slovník se týká určité konkrétní oblasti či systém pracuje v prostředí
s definovaným rušivým pozadím a podobně.
Standardní dialogové systémy jsou nasazovány v těch praktických úlohách, kdy jde o hlasovou komunikaci s databázovými systémy, a to zejména, je-li osoba vzdálena od systému a
může s ním komunikovat například pouze prostřednictvím telefonního spojení. Typickými příklady jsou: vzdálený přístup k informačním a rezervačním systémům, objednávka zboží po
telefonu, technická podpora produktu (počítač, modem, telefon, internetové připojení od providera, apod.). Výhodou uvedeného způsobu komunikace je to, že informace či služba mohou
být účastníkovi k dispozici nonstop a z jakéhokoliv místa.
Široce využívány jsou i dílčí komponenty hlasových dialogových systémů (moduly syntézy
a rozpoznávání řeči). Všeobecné využití například nacházejí různé systémy ovládání strojů
a zařízení hlasovými povely či automatický přepis diktátu (vhodné zejména jsou-li oči i ruce
člověka zaměstnány jinou činností nebo v případě využití tělesně handicapovanými lidmi). Další
užitečnou aplikací může být automatický telefonní operátor, který propojí hovor po vyslovení
jména volaného. Systémy automatického rozpoznávání lze s výhodou nasazovat i v takových
úlohách, kdy je třeba vyhledat informace v rozsáhlých řečových databázích (například v archívu
zaznamenaných schůzí a jednání, v archivu televizních a filmových dokumentů a podobně).
Sluchově handicapovaní lidé zase ocení automatické (on-line) titulkování televizních pořadů
(sportovní přenosy, diskuse, apod.), kde není předem k dispozici textová podoba dané promluvy.
Praktické využití se nachází i v oblasti automatického převodu psaného textu na mluvenou
řeč, které dosáhlo v poslední době již vysoké přirozenosti umělé řeči. Příkladem je předčítání
elektronicky uložených textů, mobilní operátoři nabízejí možnost čtení SMS zpráv, apod. Tyto
vlastnosti zejména ocení zrakově postižení lidé nebo lidé s poruchami řeči.
Rovněž se začíná pracovat i na aplikacích automatického překladu z jednoho jazyka do
druhého, které předpokládají řečový vstup v jednom jazyce, automatické rozpoznání promluvy,
automatický překlad do druhého jazyka s následnou syntézou přeložené věty.
Chceme-li, aby se partnerem člověka v mluveném dialogu stal počítač, musí se algoritmicky
a technicky vyřešit několik relativně komplikovaných úloh, které se týkají zejména zpracování
řečového signálu, počítačové syntézy a automatického rozpoznávání řeči a „strojového“ porozumění významu rozpoznávaných promluv.
Komunikační proces
Přenos mezi mluvčím a posluchačem bez podpory technických prostředků se považuje za analogový. Průběh akustického tlaku ve vzduchu je spojitý jak v čase, tak v okamžitých hodnotách.
Elektrický signál z mikrofonu je obrazem časového průběhu akustického tlaku a je taktéž analogový.
Pro analogové signály je významným parametrem přenosového média šířka frekvenčního
pásma, ve kterém je signál bez zkreslení přenesen. Lidský sluch je schopen slyšet zvuky ve
2
KAPITOLA 1. ÚVOD
frekvenčním intervalu 20 Hz až 16 kHz.
Analogové systémy hlasových technologií jsou v současné době na okraji zájmu technického
vývoje. Hlasové technologie stojí na číslicové technice a využití počítačů. Avšak znalosti z oblasti
analogových systémů jsou v řadě aplikací východiskem pro vývoj číslicových systémů.
Jeden z možných typických řetězců, digitálního přenosu, který zprostředkovává sdělení informace mezi dvěma osobami hlasem, ukazuje obrázek 1.1.
Obrázek 1.1: Komunikační proces
Hlasový signál vytvoří mikrofon, za kterým je obvykle zapojen zesilovač. Již na tomto
místě nás musejí zajímat nejen vlastnosti mikrofonu, ale i frekvenční vlastnosti a nelineární
zkreslení zesilovače. V praxi se můžeme setkat s tím, že analogový signál je nejen zesilován,
ale i komprimován ve svém rozkmitu. V algoritmech dalšího digitálního zpracování se taková
nelineární transformace musí brát v úvahu. Frekvenční vlastnosti zesilovače jsou významné
z hlediska následující diskretizace signálu v čase, tj. vzorkování.
V systémech, ve kterých se digitalizuje analogový signál frekvenčně omezený do telefonního
pásma, je běžné použití vzorkovací frekvence 8 kHz. V systémech, kde je požadován kvalitnější
hlasový signál (pro přenos, syntézu i rozpoznávání), zachycující identitu mluvčího, barvu hlasu,
jeho intonační rysy, a podobně, používáme analogového kanálu s širším frekvenčním pásmem
a tomu odpovídající vyšší vzorkovací frekvenci, typicky 16 kHz, objevují se však již systémy
KAPITOLA 1. ÚVOD
3
pracující s řečí vzorkovanou 48 resp. 44.1 kHz.
Vzorky hlasového signálu jsou vedeny do analogově-číslicového převodníku, který signál
kvantuje a digitalizuje. Proces digitalizace vede k narušení signálu kvantizačním šumem. Při
rekonstrukci hlasového signálu na přijímací straně je kvantizační šum činitelem zhoršujícím
jeho srozumitelnost.
Kvantizace a digitalizace jsou procesy, které mapují spojitý interval maximálního rozkmitu
analogového signálu na interval diskrétních číselných hodnot, jejichž počet závisí na počtu bitů,
kterými je digitalizovaný signál reprezentován.
Uvedené zpracování řečového signálu je považováno za bezeztrátové, což znamená, že lze
získat z digitálního signálu v D/A převodníku signál se stejným časovým průběhem, jaký měl
signál původní, jen s tím, že je narušen kvantizačním šumem.
Digitalizovaný hlasový signál je obrazem akustického tlaku, který zachytil mikrofon. Není
tedy reprezentantem ideální artikulace, ale nese řadu vad, které komunikaci v konkrétních
podmínkách provázejí. Za neodstranitelné považujeme vady způsobené samotným mluvčím
při artikulaci (nemoc, stres, opilost). Posluchač je obvykle schopen porozumět takto narušené
promluvě, avšak v automatických rozpoznávačích řeči se těmito problémy musíme zabývat. Jiné
narušení hlasového signálu může pocházet z prostředí, ve kterém je mikrofon umístěn. Patří
sem dozvuky a ozvěny v uzavřených prostorech, hluky a rušivé zvuky, například v jedoucím
automobilu, v kanceláři, výrobním provozu, na hlučné ulici či hlasy jiných mluvčích. V těchto
případech jde o narušení signálu, pro která jsou vyvíjeny algoritmy umožňující jejich redukci,
či úplné odstranění. Tyto věci řeší blok v obrázku „Zvýraznění“.
Blok „Kodér“ upravuje digitální data do podoby, která je vhodná pro digitální přenos.
Úkolem „Dekodéru“ je přivést do bloku rekonstruujícího hlasový signál potřebná digitální
data. Blok „D/A“ zahrnuje všechny algoritmy vedoucí z číselné reprezentace signálu k jeho
analogové podobě. Výstupem tohoto bloku je většinou schodovitý časový průběh napětí, jehož
obálka má tvar analogového časového průběhu hlasového signálu. Pro použití ve sluchátku nebo
reproduktoru musí být průběh napětí korigován vhodným analogovým filtrem.
4
KAPITOLA 1. ÚVOD
KAPITOLA 2. OBECNÝ POPIS PROBLÉMU
5
2 Obecný popis problému
Ve své diplomové práci se zaměřuji na demonstraci algoritmů „zvýraznění řeči“ (implementace
programu, který vizualizuje zvukové soubory u kterých došlo k zvýraznění řeči s pomocí vhodných algoritmu) a na demonstraci jednoduché úlohy „rozpoznávání řeči“ (převod řeči na text).
Obě demonstrační úlohy předpokládají hlasový vstup ze vzdáleného počítače, hlasový vstup je
snímán s pomocí apletů na WWW stránce.
S podrobnějším popisem zpracování řeči se lze seznámit v publikacích [1] a [2].
2.1
Zvýrazňování řeči
Pod pojmem zvýrazňování řeči si často představíme potlačování (redukci) šumů v řeči snímané
mikrofonem. Rozdíl mezi oběma úlohami ovšem existuje, neboť redukce šumů nemusí vést ke
zvýraznění řeči a naopak zvýrazněním řeči se nemusí dosáhnout redukce šumů. Například ostřením spektra používaným pro zvýrazňování řeči pro sluchově postižené dochází k zesílení řeči (a
zároveň šumu) v okolí formantových kmitočtů. Problém redukce šumů se vyskytuje při použití
telefonních přístrojů a rozpoznávačů řeči v hlučném prostředí, jakým může být kabina automobilu, hlučná ulice, konferenční místnost, . . . V tomto případě je řeč rušena (kontaminována)
šumy, které se přičítají, tedy aditivními šumy. Přenáší-li se řeč přenosovým kanálem (případ
telefonie), nebo je-li snímána v místnosti, kde jsou přítomny odrazy, dochází k jejímu zkreslení
konvolučními šumy. Konvoluční šumy jsou tedy způsobeny odrazy či přeslechy v přenosové
cestě, nebo změnami jejich parametrů. V závislosti na typu a množství šumů může kvalita řeči
výrazně kolísat. Potlačování aditivních a konvolučních šumů v řeči je nezbytným předpokladem
jejího dalšího kvalitního zpracování, neboť jak metody komprese a přenosu řeči, tak i metody
rozpoznávání jsou citlivé na přítomnost těchto šumů. Tuto citlivost v obou případech způsobují
metody parametrizace řeči.
2.1.1
Základní principy metod redukce šumů
Podívejme se nyní na možnosti redukce aditivních šumů, tedy zvýrazňování řeči kontaminované
aditivními šumy, které jsou nekorelované s řečovým signálem. Ve všech praktických situacích
lze očekávat, že přijímaná řeč obsahuje nějaký typ aditivního šumu. Typickými aplikacemi jsou
zpracování a přenos řeči z hlučných ulic a provozů, pilotních kabin, jakož i předzpracování řeči
pro sluchové protézy nebo implantáty.
Mezi základní charakteristiky používané při redukci šumů patří statistiky druhých řádů:
korelace, spektra a spektrální hustoty, koherence.
Pro odhady parametrů se používají metody odhadů založené na různých kritériích, nejčastěji
• metoda nejmenších čtverců a její modifikace (metoda nejmenší střední kvadratické chyby),
• metoda maximální věrohodnosti,
• metoda maximalizace aposteriorní pravděpodobnosti.
Pro redukci šumů se pak používají následující techniky:
• Filtrace v časové a frekvenční oblasti — v tomto případě filtr potlačuje šum, ale zároveň může i zkreslit řeč. Používá se Wienerova a Kalmanova filtrace, filtrace adaptivním
predikčním filtrem, adaptivním hřebenovým filtrem a podobně.
• Kompenzace v časové frekvenční oblasti — v tomto případě systém potlačuje šum při
může dojít ke zkreslení řeči.
6
KAPITOLA 2. OBECNÝ POPIS PROBLÉMU
• Modelování řeči — tento přístup provádí analýzu řeči se šumem s cílem získat její model, který je následně opraven. Pokud je požadována zvýrazněná řeč, je provedena její
syntéza. Oprava modelu je často prováděna iteračním algoritmem při použití omezujících
podmínek, jak v rámci jednoho segmentu, tak i mezi segmenty.
• Systémy s využitím prostorové informace, která umožňuje směrovat příjem k mluvčímu a
potlačit šum z jiných směrů. Systémy využívají pole mikrofonů a dokáží separovat signály
ze snímané směsi signálů, ovšem za dosti omezujících podmínek, které při zpracování řeči
nebývají často splněny.
Potlačování aditivních šumů není jednoduchou a rovněž ani uzavřenou záležitostí. Příčinou
je velká rozmanitost rušivých šumů vedoucí na relativně složité systémy s výpočetně náročnými algoritmy. Stále platí, že neexistuje univerzální metoda použitelná pro potlačování šumů
v celém spektru aplikací, která by byla snadno technicky realizovatelná. Z tohoto důvodu nelze
poskytnout obecný recept pro řešení úlohy zvýrazňování řeči rušené aditivními šumy. V každém
konkrétním případě je potřeba alespoň přibližně analyzovat charakter šumu (stacionaritu, korelační vlastnosti, jeho výkon vzhledem k úrovni výkonu řeči, počet zdrojů rušení a podobně). Na
základě provedené analýzy je možné provést první výběr nebo návrh struktury včetně algoritmu
a provést simulace. Konečná struktura obvykle tvoří kompromis mezi požadovanou efektivitou
a technickou realizovatelností.
2.2
Detekce a rozpoznávání řeči
Na zobrazeném obrázku 2.1 lze vidět princip detekce a rozpoznávání řeči — převod řeči na text.
Obrázek 2.1: Detekce a rozpoznávání řeči
2.2.1
Detekce řečové aktivity
Detekce řečové aktivity v analyzovaném signálu je často významnou částí mnoha aplikací zpracování řečového signálu. Nalezneme ji ve vstupních modulech systémů rozpoznávání řeči, kdy
detekujeme začátek a konec rozpoznávané promluvy, v mnoha algoritmech zvýrazňování řeči,
kdy v řečových pauzách odhadujeme měnící se charakteristiky šumového pozadí, v komunikačních systémech, kdy vyvstává požadavek na zakódování a přenesení pouze té části promluvy,
která obsahuje informaci. Existuje velké množství algoritmů detekce řečové aktivity (VAD Voice Activity Detection). Principiálně lze uvažovat dvě základní skupiny uvedených algoritmů:
deterministické a stochastické.
2.2.1.1
Deterministické metody detekce řeči
Deterministické algoritmy VAD jsou založeny na principech analýzy základních charakteristik
řečového signálu a z nich odvozené vhodné kriteriální funkce, na základě které je možné rozlišit
úseky signálu s řečovou aktivitou a řečové pauzy. Kriteriální funkce se pak obvykle srovnává
s prahem pro výsledné rozhodnutí o přítomnosti řeči v daném úseku signálu. Srovnávání kriteriální funkce s prahem definovaným pouze na základě analýzy zpracovávaného signálu je základní
charakteristikou této skupiny algoritmů.
KAPITOLA 2. OBECNÝ POPIS PROBLÉMU
7
Hlavní rozdíly mezi jednotlivými algoritmy této skupiny jsou dané volbou kritéria pro rozhodování o řečové aktivitě. Zjednodušeně lze konstatovat, že principiálně je nutné nalézt takový
průběh kriteriální funkce, která pak může být prahovatelná. Z tohoto hlediska se nejčastěji
používají následující algoritmy:
• výkonové (energetické) — rozhodují na základě nárůstu krátkodobého výkonu při přítomnosti řečové aktivity.
• kepstrální (spektrální) — rozhodují na základě rozdílu ve spektrálních charakteristikách
aktuálního segmentu a rušivého pozadí.
• koherenční — uvažují nárůst průměrné koherence při přítomnosti řečového signálu.
2.2.1.2
Stochastické metody detekce řeči
Stochastické algoritmy jsou založeny na stochastických metodách (HMM, GMM), principech
umělé inteligence (neuronové sítě), a podobně. Charakteristickým rysem uvedených algoritmů
je nutnost trénovací fáze na reprezentativním vzorku dat. Výslednou detekci řeči pak ovlivňují
nejenom charakteristiky aktuálně analyzovaného signálu, ale rovněž vnitřní parametry systému
nastavené na základě trénovací množiny signálů.
2.2.1.3
Návrh výkonového detektoru řeči
Ve své diplomové práci jsem realizoval výkonový detektor řeči, nejjednodušší detektor začátku
a konce promluvy použitelný v případech, kdy nepředpokládáme příliš vysokou úroveň rušivého
pozadí. Vychází se z jednoduchého předpokladu, že přítomnost řečové aktivity znamená nárůst
výkonu signálu.
Na druhou stranu lze jistě očekávat selhání tohoto algoritmu za přítomnosti silnějšího rušivého pozadí. V tomto případě budou slabší úseky signálu maskovány silnějším aditivním šumem
a nedojde k výraznějšímu nárůstu výkonu signálu. Zejména neznělé úseky řečového signálu jsou
v principu nízkoenergetické, a tak jsou v silnějším šumu jen obtížně detekovatelné na základě
výkonového kritéria. Za přítomnosti rušivého pozadí budou tedy při výkonové analýze často
detekovatelné pouze segmenty se silnějšími, převážně znělými, úseky řeči.
Odhad výkonu signálu obvykle realizujeme blokově, zejména s ohledem na další zpracování
řečového signálu, které je v naprosté většině případů realizováno na bázi krátkodobé analýzy
segmentovaného signálu, tj. při rozkladu na segmenty délky N posouvané po signálu s kokem
M, je i -tý analyzovaný segment signálu x[n] daný vztahem
xi [n] = x[i · M + n].
(2.1)
Krátkodobý výkon v i -tém segmentu se pak spočítá na základě elementárního vztahu
Pi =
−1
1 NX
x2 [n].
N n=0 i
(2.2)
Finální rozhodnutí o přítomnosti řeči se provádí po získání kriteriální funkce vhodným prahováním. Výběr vhodného algoritmu závisí na konkrétní aplikaci, rozhodovací kritéria mohou
být někdy i kombinací několika podmínek. V principu však jde v různých modifikacích o dva
základní přístupy: pevné nebo adaptivní prahování.
Konkrétní použitý algoritmus výkonového detektoru řečové aktivity popisuje obrázek 5.2
na stránce 21.
8
KAPITOLA 2. OBECNÝ POPIS PROBLÉMU
2.2.2
Rozpoznávání řeči
Ačkoliv byl na poli zpracování řečového signálu a jeho klasifikace učiněn obrovský pokrok, přesto
je zatím konstrukce zařízení, které by bylo schopno rozpoznat promluvu jakéhokoliv řečníka
užívajícího libovolná slova daného jazyka vzdálenou budoucností. Důvody, proč rozpoznávání
řeči je obtížné, souvisí jednak s variabilitou řečníka, s prostředím, ve kterém je rozpoznávaná
řeč pronášena, ale i se složitostí řešené úlohy:
• Hlas jedné osoby se liší od hlasu jiných osob. Je to způsobeno zejména odlišnými parametry hlasového ústrojí, ale i odlišným způsobem artikulace. To má za následek, že každý
člověk má obvykle jinou barvu hlasu, jiný přízvuk, odlišné tempo řeči a podobně. Systémy
rozpoznávání řeči lze proto dělit na systémy na řečníku závislé (jsou trénovány na hlas
konkrétního řečníka a nebo malé skupiny řečníků) a na systémy na řečníku nezávislé (jsou
trénovány na hlasy stovek i tisíců různých řečníků).
• Hlas jednoho člověka může být odlišný v různých situacích. Řečový signál se mění, když
člověk vysloví stejnou promluvu potichu, nahlas, šeptem, nebo když je nachlazen či rozčilen. Ve skutečnosti je v podstatě nemožné, aby jede člověk řekl ve dvou různých situacích
stejné slovo naprosto stejným způsobem. To je způsobeno především proměnlivostmi časování, tj. časové délky celého slova i poměrné délky jeho jednotlivých částí. V souvislé
promluvě navíc přistupuje známý jev koartikulace, který může pozměnit fonetické vlastnosti začátku a konce slova v závislosti na kontextu okolních slov.
• Měnící se akustické pozadí, tj. přítomnost okolního šumu a rušení přenosového kanálu,
může způsobovat značné problémy při rozpoznávání řeči. Vyšší úroveň šumu například
ztěžuje identifikaci začátku a konce slova.
• Na správnou funkci rozpoznávače řeči má značný vliv i složitost řešené úlohy. Je zřejmé,
že mnohem snazší je rozpoznávání izolovaných slov (například číslovek nebo povelů) z relativně malého slovníku, než rozpoznávání diskrétního diktátu (slova jsou vyslovována
izolovaně s krátkou mezislovní pauzou), kdy slovník čítá například tisíce slov. Nejobtížnější úlohou je rozpoznávání souvislé řeči, kdy řečník vybírá slova z rozsáhlého slovníku
(desítek tisíc slov). Významný vliv na správnou funkci systému má i to, zda promlouvaná
řeč je čtená řeč a nebo zda jde o spontánně pronášenou promluvu. U spontánně pronášené promluvy totiž řečník velmi často vkládá do proudu vyslovovaných slov mnoho tzv.
neřečových událostí (hlasité „váhání“, slyšitelné nádechy), řečník vysloví jen jednu nebo
několik prvních hlásek daného slova a začne vyslovovat stejné slovo znovu a nebo začne
mluvit zcela o něčem jiném.
Z hlediska aplikovaných metod rozpoznávání lze klasifikátory řeči dělit na ty, které pracují
na principu porovnávání se vzory a na klasifikátory pracující s využitím statistických metod.
2.2.2.1
Rozpoznávání řeči na základě porovnávání se vzory
Tato skupina metod byla aktuální v sedmdesátých a osmdesátých létech, kdy byla často aplikována zejména v klasifikátorech izolovaně vyslovených slov. Slovo je zde zpracováno jako celek,
přičemž je klasifikováno do té třídy (třídy jsou tvořeny jednotlivými slovy ve slovníku), k jejímuž
vzorovému obrazu (vzorovému slovu reprezentovanému posloupností příznakových vektorů) má
nejmenší vzdálenost. Klíčovou otázkou je zde určení vzdálenosti mezi dvěma obrazy slov. Tato
vzdálenost je obvykle určována na základě aplikace metody dynamického programování, při
které se hledá taková nelineární transformace časové osy jednoho z obrazů, při níž dojde k porovnávání obou obrazů s nejmenší výslednou vzdáleností. Tento algoritmus pracuje s efektem
nelineární časové normalizace, přičemž kolísání v časové ose je modelováno časově nelineární
KAPITOLA 2. OBECNÝ POPIS PROBLÉMU
9
„bortivou“ funkcí (DTW - Dynamic Time Warping) s přesně specifickými vlastnostmi. Časové
rozdíly mezi dvěma řečovými obrazy jsou přitom eliminovány „borcením“ jedné z časových os
takovým způsobem, že je dosaženo maximální shody s druhým obrazem.
2.2.2.2
Statistické metody rozpoznávání řeči
V této skupině je přístup ke klasifikaci založen na statistických metodách, ve kterých jsou slova a
celé promluvy modelovány pomocí tzv. skrytých Markovových modelů (HMM - Hidden Markov
Models). Jednotlivá slova přitom mohou být modelována jako celek jedním skrytým Markovým
modelem slova, a nebo jsou mnohem častěji konstruovány skryté Markovovy modely subslovních
jednotek (například slabik, fonémů, trifonů, apod.) a promluva je modelována zřetězením těchto
elementárních modelů. Pro každou elementární jednotku jsou pak v procesu trénování stanoveny
na základě trénovací množiny promluv parametry odpovídajícího Markova modelu a neznámá
promluva je rozpoznána na základě toho, jaká posloupnost slov tvořená řetězcem odpovídajících
modelů subslovních jednotek generuje promluvu s největší pravděpodobností.
2.2.2.3
Princip rozpoznávače řeči
Cílem mé diplomové práce nebyla realizace rozpoznávače řeči, ale jeho demonstrace, proto jsem
použil vytvořený rozpoznávač, který pracuje na principu statistických metod rozpoznávání řeči.
Tento rozpoznávač se nachází v sadě nástrojů HTK [3]. Sada nástrojů je standardním profesionálním prostředkem k detekci řeči, rozpoznávání řeči, trénování parametrů Markovových
modelů řeči, apod. HTK je k dispozici zdarma včetně zdrojového kódu a modely vytvořené
tímto nástrojem je možno použít i komerčně. Není ovšem možno dále distribuovat samotné
HTK.
Následující obrázek 2.2 zobrazuje nezbytné části, které jsem musel zajistit, aby použitý
rozpoznávač rozpoznával českou promluvu.
Obrázek 2.2: Parametry rozpoznávače řeči
Rozpoznávač - bližší popis parametrů rozpoznávače HVite ze sady nástrojů HTK je podrobně popsán v dokumentaci HTK [3].
Akustický signál - nahraná promluva, která má být rozpoznána.
10
KAPITOLA 2. OBECNÝ POPIS PROBLÉMU
Gramatika - definuje pořadí slov ze slovníku, které rozpoznávač využívá k rozpoznání řeči.
Rozpoznávač rozpozná pouze ta slova / krátká spojení řeči, která jsou uvedena v gramatice.
Slovník - definuje slova, která bude rozpoznávač schopen rozpoznat. Slovník se skládá z jednotlivých dvojic - textového přepisu a rozkladu daného slova na jednotlivé hlásky . Rozpoznávač nerozpoznává slova na základě textového popisu daného slova, ale na základě
hlásek.
HMM modely elementární řeči - obsahují statistické vlastnosti elementární řeči, vznikají
trénováním z velkých databází řeči. Tyto modely jsem převzal z diplomové práce [17].
2.3
Demonstrace zvýrazňování a rozpoznávání řeči v praxi
Cílem demonstrace zvýrazňování a rozpoznávání řeči je navrhnout takový systém, který by byl
použitelný na co nejvíce počítačích a dostupen co největšímu možnému okruhu uživatelů. Toto
kritérium nejlépe splňuje internet, proto bylo rozhodnuto, že demonstrační aplikace budou mít
hlasový vstup ze vzdáleného počítače a budou realizována s pomocí apletů.
Aplety jsou většinou kratší programy, které se používají na WWW stránkách, tj. dají se
včlenit do HTML kódu. To znamená, že se nespouštějí přímo jako aplikace, ale spustí se otevřením HTML dokumentu WWW prohlížečem, který umí s aplety pracovat. Aplety jsou psány
v jazyce Java, který umožňuje plnou přenositelnost programu na libovolnou platformu bez
nutnosti jejich překladu na této platformě.
Oba programy ke své činnosti potřebují programy třetí strany:
• Samotný rozpoznávač mluvené řeči (sada nástrojů HTK)
• Program ctucopy, který provádí zvýrazňování řeči.
Ve své práci jsem navrhl demonstraci na základě architektury klient — server, kde klientem je samotný aplet, který nahrává data z mikrofonu, posílá je na server, ze kterého přijímá
předzpracovaná data, která dále zpracuje. Server běží na webovém serveru, který poskytuje
dané aplety, server přijímá nahraná data, která zpracuje (zvýrazní řeč nebo rozpozná hlasový
povel) a následně klientovi vrací zpracovaná data.
KAPITOLA 3. PŘENOS ŘEČOVÉHO SIGNÁLU PO INTERNETU
11
3 Přenos řečového signálu po internetu
V první verzi prototypu programu SEDemo (demonstrace zvýrazňování řeči) jsem navrhl komunikaci mezi klientem a serverem s pomocí HTTP protokolu, kde se celý demonstrační program
skládal nejen z Java apletu, ale i z komponent html stránky (tlačítek a textových polí). Idea
byla taková, že pomocí apletu nahraji audiosignál, který uložím na disk. Poté s pomocí html
formuláře vyberu tento nahraný signál, odešlu ho na server, kde bude zpracován buď s pomocí
CGI skriptu a nebo PHP. Po provedení zvýraznění řeči by se pak zobrazilo dialogové okno,
které by umožnilo uložit (stáhnout) zpracovaný signál. Poté by se signál nahrál v apletu, který
by jej umožnil přehrávat či vizualizovat.
Toto řešení má některé podstatné výhody, ale bohužel nevýhody převládají a odsuzují tento
první návrh prototypu k nezdaru. Hlavní výhodou tohoto řešení je to, že veškerá komunikace
probíhá s pomocí HTTP protokolu, to znamená, že na daném serveru, může být nastavena silná
bezpečností politika ohledně síťového provozu. Dany server (webový) může tedy propouštět
pouze komunikaci na jednom portu, na kterém běží webový server. Pokud mezi klientem a
serverem se nachází nějaký firewall, který propouští pouze komunikaci mezi klientem a webovým
serverem, tak bude tento prototyp vždy fungovat správně, aniž by se musela snížit bezpečnostní
politika na serveru.
Hlavní nevýhodou tohoto řešení se přílišná složitost ovládání. Uživatel musí nejprve ručně
uložit nahraný signál, poté ho musí znovu vybrat a s pomocí odeslání formuláře odeslat na
server. Jakmile je vypočte nový soubor, tak uživatel je nucen ho uložit a pak ho musí opět
ručně načíst v apletu.
Ve druhém prototypu jsem se snažil zjednodušit počet operací, které musí uživatel udělat,
aby vizualizoval zvýrazněné signály. Napadlo mě, že by aplet mohl přímo sám odeslat nahraný
signál na server, kde by byl dál zpracován. Opět jsem se snažil, aby komunikace probíhala
s pomocí HTTP protokolu. Avšak tento prototyp také neuspěl. Nejprve jsem měl problémy, jak
s pomocí Java apletu posílat vlastní formuláře — jak realizovat načtení souboru a stisk tlačítka
na formuláři. Po usilovném hledání na internetu jsem nakonec našel řešení, které umožňovalo
přenést textovou zprávu z apletu na server. Když jsem se poté pokoušel přenést binární soubor,
tak jsem nebyl schopen ho na straně serveru s pomocí PHP sestavit do původní podoby. Tento
nedostatek jsem vyřešil později, když jsem objevil program bin64, který umí převést binární
soubor na textovou zprávu a naopak.
Tím jsem vyřešil problém, jak automaticky poslat data na server, kde se zpracovaly, ale
získání nových dat ze serveru byl neřešitelný problém. Uživatel musel čekat, než se zobrazil
dialog, aby mohl zpracovaná data uložit na disk a otevřít je v apletu — nebyl jsem schopen
poznat, kdy se dokončil výpočet na serveru, abych mohl nová data automaticky stáhnout.
Bohužel i tento prototyp byl odsouzen k nezdaru, i když by uživatel přetrpěl několikero klikání,
než by zobrazil grafický průběh signálu, přesto by byl tento způsob zcela nepoužitelný ve druhém
programu SCWP, kde se předpokládá pouze hlasové ovládání WWW stránky bez jakéhokoliv
ovládání s pomocí myši či klávesnice.
Naštěstí jsem byl úspěšný při realizaci třetího prototypu, kdy jsem se seznámil díky skriptům
[12] s novými technikami komunikace mezi klientem a serverem. Můj problém nejlépe vyřešila
technika komunikace s pomocí vytvoření soketového spojení mezi klientem a serverem, kde je
komunikace zajišťována s pomocí TCP protokolu. Můj nově vytvořený prototyp bez problému
uměl automaticky přenášet mezi klientem a serverem binární data. Tento úspěch má však menší
nevýhodu, danou způsobem komunikace. Aby tento způsob komunikace správně fungoval, musí
být na počítači, na kterém poběží server, otevřen port, přes který bude server komunikovat
s klienty. Otevření nového portu znamená snížení bezpečnostní politiky na „webovém serveru“,
protože neznámý útočník může zneužít tento port k napadení sytému. Samozřejmě, pokud se
mezi klientem a serverem nacházejí další „firewally“, tak musí být také nastaveny tak, aby
12
KAPITOLA 3. PŘENOS ŘEČOVÉHO SIGNÁLU PO INTERNETU
propouštěly komunikaci na daném novém portu.
Při realizaci třetího prototypu jsem si uvědomil, že bude třeba navrhnout server tak, aby
dokázal obsloužit několik klientů najednou. Způsob realizace paralelního serveru jsem vybíral
z následujícího seznamu:
Paralelní server s předpřipravenými procesy - je spuštěn určitý počet procesů, kdy každý
z procesů dokáže zpracovávat jeden požadavek. Výhodou je rychlá reakce na příchod požadavku.
Paralelní server se společným zpracováním - pokud lze obsluhovat více klientů v rámci
jednoho procesu, lze vytvořit server, který bude zpracovávat i více požadavků souběžně.
Výhodou tohoto typu serveru je rychlá reakce na příchod požadavku, volnost v počtu
obsluhovaných událostí. Avšak se musíme omezit na obsluhu krátkých požadavků od
jednotlivých klientů.
Paralelní server s dynamickým vytvářením procesů - při příchodu požadavku je spuštěn nový proces pro obsluhu požadavku. Výhodou je šetření zdrojů počítače, když nevíme,
kolik souběžných požadavků bude třeba obsloužit. Tímto způsobem lze obsluhovat i velmi
odlišné typy klientů. Problém je však zpoždění při vytváření nového procesu.
Paralelní server s předběžným dynamickým vytvářením procesů - tato technika kombinuje určitý počet předpřipravených procesů, který je postupně doplňován o další dynamicky vytvářené tak, aby při příchodu požadavku byl pokud možno k dispozici volný
proces.
Vzhledem k tomu, že mé programy jsou určeny k demonstracím tak nepředpokládám, že
budou spouštěny dennodenně od rána do večera, ale že se občas během dne párkrát spustí, proto
jsem realizoval paralelním server s dynamickým vytvářením procesů. S vlastní implementací
serveru mě pomohla kniha [13].
Aby se na počítači, na kterém poběží server zbytečně neotevírali dva porty — aplikace
SEDemoa SCWP by měly svůj vlastní port, čímž by se snížila bezpečnost, tak jsem vytvořil
server, který je pro oba programy stejný a ke své činnosti potřebuje mít povolen jeden port,
skrz který bude komunikovat s klienty. .
KAPITOLA 4. APLIKACE (APLET) SEDEMO — „ZVÝRAZNĚNÍ ŘEČI“
13
4 Aplikace (aplet) SEDemo — „zvýraznění řeči“
Program SEDemo vznikl za účelem demonstrace zvýraznění řeči. Program umožňuje načíst ze
souboru akustický signál nebo jej umí nahrát z mikrofonu. Tento akustický signál je posléze
odeslán na server, který na základě zvoleného algoritmu provede zvýraznění řeči. Nově vzniklý
akustický signál je odeslán zpět klientovi, který provede vizualizaci audiosignálu — zobrazí
časový průběh a spektrogram. Na základě zobrazení spektrogramů, lze zjistit, který z algoritmů
provádí lepší zvýraznění řeči na daném typu akustického signálu.
Při vytváření programu jsem se inspiroval knihou [14], která byla zaměřena na demonstrování algoritmů digitálního zpracování signálu (DSP - Digital Signal Processing). V této knize
byla popisována architektura digitálního zpracování audiosignálu, podle které jsem vytvořil
program SEDemo.
4.1
Architektura digitálního zpracování audiosignálu
Proces zpracování zvuků, můžeme rozdělit na jednotlivé části, které budou obsluhovány zařízeními. Tato zařízení mohou mezi sebou komunikovat a sdílet společné informace. Pod pojmem
zařízení, je myšlen softwarový modul, který pracuje s digitálními vzorky. Spojením těchto zařízení vznikne „řetězec zařízení“, který může být znázorněn jako série bloků v blokovém diagramu, kde vlevo vstupuji zvuková data, která jsou zpracovávaná jednotlivými bloky a končí
v nejpravějším bloku. Toto schéma je znázorněno na následujícím obrázku 4.1:
Obrázek 4.1: Řetězec zařízení
Každé zařízení můžeme pojmenovat a rozdělit podle typu operace, které provádí. V této
architektuře se rozlišují čtyři druhy zařízení:
1. Zdrojové zařízení — toto zařízení poskytuje zvuková data následujícím zařízením. Data
mohou byt například získána:
• ze zvukové karty
• z mikrofonu
• ze vstupního souboru (AU, WAV, . . .)
• LINE INPUT
V řetězci zařízení, se může najednou vyskytovat právě jedno vstupní zařízení a musí být
umístěno úplně vlevo.
2. Processor — toto zařízení zpracovává a různě modifikuje data na svém vstupu. Tato modifikovaná data poskytuje na svém výstupu. S pomocí tohoto typu zařízení lze například
vytvářet různé efekty v audiosignálu: echo, reverze, . . .
Libovolný počet těchto zařízení můžeme vložit na jakékoliv místo v řetězci.
3. Monitor — toto zařízení slouží pouze k zobrazování dat na svém vstupu, na svůj výstup
poskytuje nezměněná data. S pomocí toho zařízeni, lze zobrazovat: amplitudový průběh,
spektrogram, . . .
Tento typ zařízení, můžeme v libovolném počtu a kamkoliv umístit do řetězce.
14
KAPITOLA 4. APLIKACE (APLET) SEDEMO — „ZVÝRAZNĚNÍ ŘEČI“
4. Výstupní zařízení — toto zařízení pouze přijímá vstupní data. Přijatá data buď odešle
na výstup počítače (sluchátka, reproduktory) nebo je uloží do souboru (AU, WAV, . . .).
V řetězci zařízení, se může vyskytovat najednou právě jedno výstupní zařízení a musí být
umístěno úplně vpravo.
Ve výše uvedeném obrázku 4.1, bude tedy první zařízení „Zařízení 1“ vstupním zařízením.
„Zařízení 2“ až „Zařízení N-1“ jsou typu monitor nebo processor. Poslední zařízení „Zařízení N“
je výstupní zařízení.
Tato architektura se také někdy nazývá „pull architecture“, protože jednotlivé vzorky zvukových dat, jsou předávány mezi zařízeními. Na požadavek výstupního zařízení, začne vstupní
zařízení poskytovat zvuková data. Tato data si předávají ostatní zařízení (processor, monitor)
až nakonec skončí u výstupního zařízení.
Aby byla zajištěna kompatibilita mezi mezi různými zařízeními, tak všechna zařízení musejí
vycházet ze společného předka (zařízení) — musí implementovat jeho vlastnosti. Mezi nejdůležitější vlastnosti patří:
• Musí umět přijímat data a poskytovat je dále.
• Musí umět zjistit a nastavit počet kanálů.
• Musí umět zjistit a nastavit hodnotu sampling rate.
4.2
Navržená zařízení
V následují části jsou popsána implementovaná zařízení v programu SEDemo. Všechna zařízení
jsou omezena těmito požadavky:
• Počet kanálů je maximálně 2 (mono, stereo). (V aktuální verzi programu se pracuje pouze
s jedním kanálem — přijde-li na vstup stereo signál, tak je vzápětí automaticky zkonvertován na signál s jedním kanálem.).
• Hodnota sampling rate je v intervalu 8000 Hz – 44100 Hz
• Vzorky dat, jsou uloženy v datovém typu: 16-bit znaménkový integer. Vzorky tedy
mohou nabývat hodnot v intervalu: −32768 až +32767.
4.2.1
Vstupní zařízení
V programu jsou definovány tato „vstupní zařízení“:
• WAV — Načítá data ze vstupního souboru typu *.wav ve formátu: PCM (typ 1), 8-bit
mu law G.711 (typ 7).
• AU — Načítá data ze vstupního souboru typu *.au ve formátu: 8-bit mu law G.711 (typ
1), 8-bit linear PCM (typ 2), 16-bit linear PCM (typ 3).
• BIN — Načítá data ze vstupního souboru typu *.bin ve formátu: 16-bit linear PCM.
• SPEC — Načítá data ze vstupního souboru typu *.spec pro zobrazení spektrogramu.
Data jsou uložena ve formátu HTK.
• MIC — Získává data přímo z mikrofonu.
KAPITOLA 4. APLIKACE (APLET) SEDEMO — „ZVÝRAZNĚNÍ ŘEČI“
4.2.2
15
Monitor
V programu jsou definovány tyto „monitory“:
• Scope — Zobrazí časový průběh signálu v samostatném okně.
• ScopeSpectrogram — V jednom okně zobrazí časový průběh signálu a jeho spektrogram.
• Spectrogram — Zobrazí spektrogram signálu v samostatném okně.
4.2.3
Processor
Tato zařízení se skládají z klientské a serverové části. Klientská část posílá data na vzdálený server, kde je provedeno zvýraznění řeči nebo je proveden výpočet dat pro zobrazení spektrogramu.
Server po skončení svého výpočtu odešle nová data zpět klientovi, který je dále zpracuje —
zobrazí grafické průběhy, přehraje je apod. Popis činnosti klientské a serverové části se nachází
v kapitole 6.
• Zvýraznění řeči — provede zvýraznění řeči v daném signále.
• Výpočet spektrogramu — z daného signálu vypočte data pro zobrazení spektrogramu.
4.2.4
Výstupní zařízení
V programu jsou definovány tato „výstupní zařízení“:
• AU — Ukládá data do souboru ve formátu *.au
• WAV — Ukládá data do souboru ve formátu *.wav
• BIN — Ukládá data do souboru ve formátu *.bin — 16 bit liner PCM.
• PLAYER — Vstupní data zahazuje, umožňuje pohyb dat v řetězci zařízení.
• PCM PLAYER — Přehrává zvuková data.
4.3
Vizualizace dat
Na základě volby zobrazení grafického průběhu v hlavním menu programu — položka Zobraz
jsou nabídnuty tyto grafické průběhy: zobraz vstupní signál a vstupní spektrogram, vstupní
signál a výstupní signál, vstupní spektrogram a výstupní spektrogram, výstupní signál a výstupní
spektrogram, vstupní/výstupní signál, vstupní/výstupní spektrogram.
Tyto grafické výstupy jsou zobrazeny s pomocí následujících vytvořených „řetězců zařízení“.
4.3.1
Zobrazení vstupního průběhu a vstupního spektrogramu
• První blok v řetězci 4.2 představuje vstupní zařízení, které načítá data ze vstupního
audiosignálu.
• Druhý blok v řetězci představuje monitor, který zobrazí pouze jeden grafický průběh, na
data druhého průběhu musí počkat.
• Prostřední velký blok představuje processor, který zajišťuje výpočet dat pro zobrazení
spektrogramu.
• V předposledním bloku už má monitor data i pro zobrazení spektrogramu.
• Poslední výstupní zařízení spouští „proudění“ dat v řetězci a přijatá data zahazuje.
16
KAPITOLA 4. APLIKACE (APLET) SEDEMO — „ZVÝRAZNĚNÍ ŘEČI“
Obrázek 4.2: Zobrazení vstupního průběhu a vstupního spektrogramu
4.3.2
Zobrazení výstupního průběhu a výstupního spektrogramu
Obrázek 4.3: Zobrazení výstupního průběhu a výstupního spektrogramu
• První blok v řetězci 4.3 představuje vstupní zařízení, které načítá data ze vstupního
audiosignálu.
• Druhý blok v řetězci představuje processor, který zajistí zvýraznění řeči v audiosignálu.
• Třetí blok v řetězci představuje monitor, který zobrazí pouze grafický průběh výstupního
signálu (nově získaný audiosignál), na data druhého průběhu musí počkat.
KAPITOLA 4. APLIKACE (APLET) SEDEMO — „ZVÝRAZNĚNÍ ŘEČI“
17
• Čtvrtý blok představuje další processor, který zajišťuje výpočet dat pro zobrazení výstupního spektrogramu.
• V předposledním bloku už má monitor data i pro zobrazení spektrogramu.
• Poslední výstupní zařízení spouští „proudění“ dat v řetězci a přijatá data zahazuje.
4.3.3
Zobrazení ostatních grafických průběhu
Zbývající grafické průběhy se získají kombinací předchozích obrázků 4.2 a 4.3. Ve skutečnosti,
se dané průběhy zobrazí trochu jinak — použije se optimalizace. Jakmile se už jednou vypočítají data pro zobrazení daného audiosignálu, tak se uloží do paměti. V okamžiku, kdy budu
tato data potřebná, tak se rovnou přečtou z paměti, čímž dojde k urychlení výpočtů — zobrazení grafických průběhu. Pokud by se tato optimalizace neprovedla, tak by se nejen zbytečně
přetěžoval server, který by stále znovu počítal stejná data, ale také by samotné zobrazování
dat trvalo příliš dlouho.
4.3.4
Použití apletu na html stránce
Postup použití apletu na html stránce je uveden v kapitole 7.2.1
4.3.5
Popis zdrojových kódů
Zdrojové kódy tohoto apletu se nacházejí na přiloženém CD v adresáři:
sedemo/src/.
Popis jednotlivých souborů je uveden v příloze C.
Podrobný popis fungování apletu SEDemo je popsán ve zdrojovém kódu a v přiložené
dokumentaci na CD [6].
4.3.6
Nezbytné podpůrné balíčky
Program SEDemo používá ke své činnosti baličky *.jar, které rozšiřují jeho vlastnosti. Tyto
balíčky obsahují přeložené *.class soubory a další všechny potřebné zdroje, jako jsou obrázky,
pomocné soubory,. . .
Tyto balíčky jsou nezbytnou součástí programu, bez kterých nelze úspěšně přeložit zdrojové
soubory a také bez nich nelze úspěšně spustit aplikaci (applet).
4.3.6.1
JavaHelp 2.0 02
Tento balíček slouží k vytváření integraci uživatelské nápovědy do aplikací nebo appletů a
je zdarma k dispozici na WWW stránkách [15], kde je také popsán způsob instalace. Následující uvedená publikace [4] popisuje používání systému JavaHelp. Stažený archív JavaHelpu
obsahuje několik knihoven (balíčků *.jar), program SEDemo z nich pouze vyžaduje javahelp/lib/jhall.jar — soubor obsahuje všechny třídy vztahující se k systému nápovědy JavaHelp, včetně těch, které jsou nezbytné k tvorbě katalogu indexovaných slov.
4.3.6.2
Java Media Framework 2.1.1e
Tento balíček slouží jako programové rozhraní (API) pro aplikace a applety, které manipulují
se zvukovými a video daty na profesionální úrovni.
JMF 1.0 API (Java Media Player API) umožňuje programátorům vyvíjet Java programy
pro přehrávání zvukových dat (time-based media). JMF 2.0 API rozšiřuje rozhraní o podporu
záznamu a ukládaní dat, řízení zpracování dat během přehrávání, uživatelská rozhraní pro
18
KAPITOLA 4. APLIKACE (APLET) SEDEMO — „ZVÝRAZNĚNÍ ŘEČI“
práci se streamovými daty. Dále definuje pluginy API, které umožňují pokročilým vývojářům
snadněji vyvíjet uživatelské rozšíření funkcí JMF.
Tento balíček lze stáhnout na WWW stránkách [16], kde je také popsán způsob instalace.
4.4
Závěr
Demonstrace zvýrazňování řeči je realizována programem SEDemo, jehož hlavní náplní je umožnit uživateli nahrát krátkou řečovou promluvu nebo načíst nějaký audiosignál. Druhou hlavní
částí programu je výběr algoritmu zvýraznění řeči, která se provede na straně serveru. Efektivita jednotlivých algoritmů se nejlépe porovnává na zobrazených spektrogramech vstupního
(původního) signálu a výstupního (upraveného — zvýrazněného) signálu. Princip celého programu je založen na vytváření „audio řetězce“, do kterého se vkládají různá zařízení (vstupní,
výstupní, monitor, filtr), která postupně upravují vstupní signál — například první zařízení
v řetězci umí nahrát nebo načíst vstupní signál, druhé zařízení může zobrazit vstupní signál,
třetí zařízení může signál různě modifikovat, ve čtvrtém zařízení můžeme zobrazit tento nový
upravený signál či ho může pouze přehrát v reproduktorech či uložit do souboru. Tento modulární systém umožňuje rozšířit vlastnosti celého programu SEDemo pouhým přidáním nového
modulu — zařízení.
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
19
5 Aplet SCWP — „rozpoznávání řeči“
Program SCWP je sada navzájem spolupracujících apletů, které umožňují hlasové ovládání
WWW stránek. Aplety mezi sebou komunikují s pomocí předávání zpráv. Na následujícím
obrázku 5.1 je vidět princip fungování programu SCWP.
Obrázek 5.1: Princip fungování programu SCWP
Jméno programu SCWP vzniklo složením počátečních písmen anglického názvu Speech
Controlled Web Pages (hlasové ovládání WWW stránek).
První aplet na obrázku se jmenuje SR (Speech Recognizer). Pokud tento aplet detekuje
řeč, tak nahraje hlasový povel, který vzápětí pošle na server. Na serveru dojde k rozpoznání
hlasového povelu na textový povel, který je vrácen zpět apletu SR. Jakmile aplet SR obdrží
textový povel, tak ho předá svému sousedovi — apletu CWP a pak opět čeká, zda-li nedošlo
k detekci řeči, aby mohl nahrát hlasový povel — celý cyklus se poté opakuje znovu.
20
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
Druhý aplet na obrázku se jmenuje CWP (Control Web Page). Tento aplet se stará o ovládání samotné WWW stránky. Na základě rozpoznání přijatého textového povelu provádí tyto
činnosti:
• Zobrazí novou WWW stránku, která odpovídá vybrání hypertextového odkazu.
• Posouvá WWW stránku nahoru nebo dolu, aby bylo možné číst skryté části dokumentu
• Provádí posun vpřed / vzad v historii zobrazených WWW stránek.
Neznámý povel, který neumí zpracovat pošle svému následujícímu sousedovi — apletu TELEPHONE.
Předposlední aplet TELEPHONE se stará o zobrazení telefonu s digitálním číselníkem.
Na základě přijatého povelu zobrazuje „vytočené číslo“. Pokud tento aplet nerozpozná textový
povel, tak ho pošle dál svému sousedovi.
Poslední aplet představuje možnost přidání další apletů, které budou dále zpracovávat „neznámý“ povel.
Pokud aplet nemá žádného svého souseda, tak neznámý povel, který neumí zpracovat zahodí
a čeká na nový povel.
5.1
Aplet SR
Tento aplet SR má na starosti nahrání hlasového povelu, jeho následné odeslání na server
a příjem zpracovaného hlasového povelu, který obdrží jako textovou zprávu. Tento textový
hlasový povel odešle svému registrovanému sousedovi. Zjednodušeně lze říci, že má na starosti
rozpoznání hlasového příkazu.
5.1.1
Principiální popis apletu
Tento aplet se principiálně skládá ze tří hlavních částí:
• První část má na starosti pouze neustálé nahrávání dat z mikrofonu, jakmile je aplet
zobrazen na WWW stránce. Nahraná data posílá druhé části — detektoru řeči.
• Detektor řeči analyzuje nahraná data a rozhoduje, zda-li nahraná data obsahují platnou
řeč nebo „dlouhou pauzu“. Pouze tehdy, je-li detekována platná řeč dochází k ukládání
řeči na lokální počítač. Jakmile je detekován konec řeči, tak na řadu přijde třetí hlavní
část — rozpoznávač řeči. Přesáhne-li doba detekování souvislé řeči 10 sekund, tak detektor
řeči automaticky ukončí nahrávání hlasového povelu. Tím se ošetří možná chybná detekce
konce řeči, kdy je „šum na pozadí“ detekován jako platná řeč.
• Třetí poslední důležitou částí je rozpoznání řeči. Tento aplet se navenek chová jako rozpoznávač řeči — nahraje řeč a vrátí textový přepis mluveného slova, ale ve skutečnosti
o rozpoznání mluveného slova požádá server, který provede vlastní rozpoznání. Princip
skutečného rozpoznávače je popsán v kapitole 6.2.
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
5.1.1.1
21
Princip detektoru řeči
Detektor řeči je založen na principu výkonového detektoru (viz. kapitola 2.2.1.3), kde se vychází
z jednoduchého předpokladu, že přítomnost řečové aktivity znamená nárůst výkonu signálu.
Schéma výkonového detektoru řeči zobrazuje následný vývojový diagram 5.2
Obrázek 5.2: Princip výkonového detektoru řeči
Detektor řeči neustále dostává na svůj vstup nahraná data z mikrofonu, tyto data ukládá
do několika bufferů, se kterými dále pracuje. Cyklus detektoru řeči se skládá z několika fází:
1. Z fáze inicializace. V této fázi detektor nastaví práh kriteriální funkce, která bude
určovat, zda-li došlo k detekci řeči nebo dlouhé pauzy. Hodnota kriteriální funkce se
nastaví na základě nahraného šumu z okolí mikrofonu. V této fázi se nesmí mluvit do
mikrofonu, jinak by se nastavila příliš vysoká mez. Inicializace trvá 2 sekundy, po tuto
dobu se ukládají data z mikrofonu do bufferu, ze kterého se pak vypočítá prahová hodnota
— Prahový výkon.
Prahový výkon se spočítá podle vzorce
Pprah = Ps + 3 · Pstd ,
(5.1)
22
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
kde Ps je střední hodnota okamžitého výkonu
Ps =
−1
1 NX
·
Pi
N i=0
(5.2)
Pstd je standardní odchylka okamžitého výkonu
Pstd =
v
u NP
u −1
u
(P − Ps )2
t i=0 i
N −1
,
(5.3)
a Pi je okamžitý výkon, který se počítá ze vzorků analyzovaného segmentu délky N, tj.
Pi =
N
−1
X
s2n
(5.4)
n=0
Velikost bufferu pro výpočet okamžitého výkonu odpovídá součinu vzorkovací frekvence
nahraného signálu mikrofonem a zvolenou dobou pro výpočet segmentu okamžitého výkonu, což v mém případě je 10 ms. Délka bufferu ve vzorcích je pak dána
N = 10ms · fs = 0.01s · 16000Hz = 160
(5.5)
2. Fáze detekce elementární řeči. Jakmile proběhne inicializace a je vypočten prahový
výkon, tak se v cyklu začne vypočítávat pouze okamžitý výkon (aktuální výkon), který se
bude porovnávat s vypočtenou hodnotou prahového výkonu. Je-li okamžitý výkon větší
než prahový výkon, tak byla detekována elementární řeč (detektor vrací hodnotu 1), jinak
je detekována elementární pauza (detektor vrací hodnotu 0).
3. Fáze detekce řeči. Díky předchozí fázi jsme získali sadu číslic — 0 nebo 1, které určují,
zda-li byla detekována elementární řeč v segmentu řeči o velikosti 10ms. Tyto hodnoty obsahují elementární detekci řečové aktivity, která obsahuje mnoho krátkodobých chybných
rozhodnutí neboť lidský hlas je velice dynamický. Jednotlivé hlásky se vyslovují různě
rychle a jsou mezi nimi různě krátké prodlevy, také krátkodobá rušení jsou detekována
jako řeč, apod.
Abychom byly schopni skutečně rozlišit řeč, která se skládá ze slov a krátkých pauz,
mezi jednotlivými slovy, musíme ještě rozdělit detekovanou elementární řeč na jednotlivé
segmenty, ze kterých zjistíme, zda-li byla detekována řeč nebo dlouhá pauza.
Tato primitivní detekce řeči se sleduje v segmentech délky 0.5 sekund. Obsahuje-li tento
segment více než 20% řečové aktivity tak předpokládáme přítomnost řeči a dochází k ukládání snímaného signálu na lokální počítač. Pokud detektor od této chvíle zjistí, že ve
čtyřech segmentech za sebou nebyla detekována řeč, tak ukončí svou činnost — přestane
nahrávat data z mikrofonu a nahranou řeč pošle rozpoznávači, který převede řeči v akustickém signálu na text.
Jakmile je detektor aktivován, tak se celý cyklus znovu opakuje.
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
5.1.2
23
Popis vzhledu apletu
Navržený aplet je vidět na WWW stránce a skládá se ze tří částí, které můžeme vidět na
obrázku 5.3.
Obrázek 5.3: Grafický vzhled apletu SR
Pod první částí se skrývá tlačítko, které umožňuje manuální vypnutí / zapnutí rozpoznávání
řeči. Jakmile je zobrazen tento aplet, tak automaticky dojde ke spuštění rozpoznávání řeči.
Popisek tlačítka má různé barvy pozadí a textu, v závislosti na tom, v jaké stavu se nachází
rozpoznávač hlasového povelu. Rozpoznávač řeči se může nacházet v různých stavech, které
jsou uvedeny v následující tabulce 5.1.
Popis
Rozpoznávač vypnut
Inicializace
Barva
Modrá
Červená
Očekávám příkaz
Detekována řeč
Rozpoznávám příkaz
Zelená
Zelená
Červená
Význam
Rozpoznávač je vypnut — hlasové ovládání nefunguje.
Inicializace rozpoznávače, nastavuje se práh citlivosti.
Tento práh určuje od jaké intenzity hlasitosti nahraného signálu bude detektor řeči indikovat platnou řeč
nebo ticho (pauzu).
Detektor řeči nezaznamenal žádnou řeč.
Detektor řeči zaznamenal řeč.
Rozpoznávač rozpoznává hlasový povel, po rozpoznání
příkazu provede odpovídající činnost. V této fázi je
nahrávání z mikrofonu vypnuto
Tabulka 5.1: Stavy apletu hlasového vstupu
Jednotlivé změny stavu rozpoznávače řeči se neprovádí okamžitě, ale s menší prodlevou.
Druhá část obsahuje textový popis Poslední přijatý příkaz: a nakonec v poslední části se
zobrazuje poslední přijatý příkaz.
5.1.3
Použití apletu na html stránce
Je velmi vhodné umístit tento aplet na html stránku tak, aby byl stále vidět, i když posouváme
stránkou nahoru / dolu, aby jsme viděli zbytek skrytého textu na obrazovka. Aplet je třeba stále
vidět proto, aby jsme věděli, v jaké fázi se zrovna nachází rozpoznávač — aby jsem zadávali
hlasový povel ve správnou dobu — ve fázi Očekávám příkaz.
Pevné umístění na html stránce se docílí pomocí kaskádových stylů (CSS), konkrétně s pomocí atributu position:fixed. Bohužel, ne všechny WWW prohlížeče implementují celý standard
kaskádových stylů, takže se musí tento atribut obcházet s pomocí různých „hacků“, které však
v pozdějších verzích prohlížeče nemusejí fungovat, jakmile napraví své chyby. Tento problém se
v současné době týká WWW prohlížeče Internet Explorer verze nižší než 7. Prohlížeče Mozilla
Firefox a Internet Explorer 7 tuto vlastnost CSS stylu podporují.
Aplet nelze vložit do rámce, protože musí být schopen komunikovat s ostatními aplety,
které se vyskytují na stránce podle toho, o jakou html stránku jde. Sice na oficiálních WWW
24
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
stránkách [5] píší ze to sice lze, ale tato vlastnost není podporována přímo „Java API“ a ne
každý WWW prohlížeč tuto vlastnost podporuje.
Aplet se vloží na html stránku s pomocí této značky html jazyka s těmito povinnými parametry:
.....
<applet codebase="classes"
code="cz/cvut/fel/mihlon/scwp/sr/SpeechRecognizer.class"
width="166" height="50" name="srpa" recognize="intro"
receiver="cwp" mayscript>
</applet>
.....
codebase obsahuje relativní nebo absolutní URL adresu, kde se bude hledat soubory tříd
přeloženého apletu.
code obsahuje jméno hlavní třídy přeloženého apletu.
width určuje šířku apletu na html stránce.
height určuje výšku apletu na html stránce.
name obsahuje jméno apletu
recognize určuje název slovníku, který se použije pro rozpoznání hlasového příkazu (viz. kapitola 6.2
receiver jméno apletu, kterému aplet pošle neznámý (nezpracovaný) textový příkaz.
mayscript Umožní apletu spouštět příkazy JavaScriptu.
5.1.4
Popis zdrojových kódů
Zdrojové kódy tohoto apletu se nacházejí na přiloženém CD v adresáři:
scwp/src/cz/cvut/fel/mihlon/scwp/sr:
AlarmClock.java Tato třída zajistí, že se bude nahrávat řeč pouze po omezenou dobu. Ideální
doba je okolo 10s.
FormatControls.java Obsahuje a nastavuje parametry Audioformátu, který slouží k nastavení vlastností pro nahrávání či přehrávání audiosignálu.
Mic.java Zajišťuje nahrávání z mikrofonu.
SendDataDialog.java Posílá data na server, který je zpracuje a vrátí zpět. Během komunikace se serverem zobrazí dialog, který informuje o průběhu komunikace a nedovoluje
cokoliv dělat. Až komunikace skončí, tak ukončí dialog.
SpeechDetector.java Detekuje řeč při nahrávání z mikrofonu.
SpeechRecognizer.java Nahrávání příkazu z mikrofonu, následně odešle příkaz (audio) na
server, příjem dekódovaného povelu (text) a odeslání příkazu (text) registrovanému appletu.
SpeechRecognizerProxy.java Simuluje nahrávání příkazu z mikrofonu, následné odeslání
příkazu (audio) na server, dekódování příkazu na serveru, příjem dekódovaného povelu
(text). Příkaz odešle registrovanému appletu.
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
25
Podrobný popis fungování apletu SR je popsán ve zdrojovém kódu a v přiložené dokumentaci
na CD [7].
5.2
Aplet CWP
Tento aplet CWP má na starosti ovládání samotné WWW stránky.
5.2.1
Principiální popis apletu
Na základě rozpoznání přijatého textového povelu, uvedeného v tabulce 5.2 provádí tyto činnosti:
Hlasový příkaz
dolu
nahoru
vpřed
zpět
hypertextový odkaz
Akce
Posun WWW stránky nahoru.
Posun WWW stránky dolu.
Posun vpřed v historii zobrazených WWW stránek.
Posun vzad v historii zobrazených WWW stránek.
Zobrazí WWW stránku, na kterou ukazuje hypertextový odkaz.
Tabulka 5.2: Hlasové ovládání WWW stránky
1. Zobrazí novou WWW stránku, která odpovídá vybrání hypertextového odkazu. Jakmile je
tento aplet aktivní, tak si stáhne aktuálně zobrazenou stránku. Tuto stránku postupně
analyzuje — hledá v ní definice hypertextových odkazů. Jakmile nějaký hypertextový
odkaz nalezne, tak z něj vybere „název hypertextového odkazu“, který je zobrazen na
html stránce a samotnou „adresu hypertextového odkazu“. Tyto dvě hodnoty uloží do
asociativního pole, kde je klíčem název a hodnotou je adresa.
Klíčem je buď přesný název hypertextového odkazu a nebo jeho kombinace. Pokud nový
vkládaný „klíč“ už existuje v daném poli, tak se do pole vloží (přidá) pouze „hodnota“,
takže lze s pomocí jednoho „klíče“ získat více hodnot. Zda-li se má do asociativního pole
vkládat pouze přesný název hypertextového odkazu či jeho kombinace, určuje parametr
apletu exactlinks v html stránce.
V okamžiku, kdy se má zobrazit nová stránka, která je určena hypertextovým odkazem,
se zjistí, že daný klíč odpovídá více stránkám, tak se zobrazí html stránka, která informuje
o této shodě. Na stránce se objeví seznam všech hypertextových odkazů, které odpovídají
danému klíči a uživatel je upozorněn, že má blíže specifikovat, kterou stránku chce vlastně
zobrazit.
Tato situace nastane, když chce uživatel na demonstrační stránce zjistit kontaktní informace o členu Katedry teorie obvodů. Na úvodní stránce je zobrazen seznam všech členů
— je tam uvedeno jméno a příjmení, které slouží jako hypertextový odkaz html stránku
s kontaktními údaji. Aplet CWP získá tyto hypertextové odkazy a vytvoří dva klíče na
samotný odkaz: jméno a příjmení. Shoda nastane při výběru některých odkazů, kde se
shodují jména osob. Uživatel je na tuto shodu upozorněn a musí vybrat danou osobu
s pomocí jména a příjmení, příjmení a jména nebo s pomocí příjmení.
2. Posouvá WWW stránku nahoru nebo dolu, aby bylo možné číst skryté části dokumentu.
Posun stránky je zajištěn s pomocí volání příkazů (funkcí) JavaScriptu.
3. Provádí posun vpřed / vzad v historii zobrazených WWW stránek. Zobrazování stránek
v historii je prováděno s pomocí volání příkazů (funkcí) JavaScriptu.
26
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
4. Pokud aplet zjistí, že přijatý příkaz neodpovídá žádnému hypertextovému odkazu a ani
příkazu pro ovládání WWW stránky, tak tento příkaz pošle svému registrovanému apletu,
který tento příkaz dále zpracuje. Pokud u tohoto apletu není registrován žádný aplet, který
by zpracoval tento příkaz, tak zahodí neznámý příkaz a požádá aplet SR, aby nahrál nový
příkaz.
5.2.2
Popis vzhledu apletu
Tento aplet nemá žádný grafický výstup.
5.2.3
Použití apletu na html stránce
Vzhledem k tomu, ze aplet nemá žádný grafický výstup, lze jeho define v html stránce umístit
kdekoliv. Jelikož tento aplet přímo volá funkce JavaScriptu, je třeba, aby měl tento aplet povolené spouštění funkcí JavaScriptu. Vlastní těla funkcí JavaScriptu jsou uložena v samostatném
souboru. Jméno tohoto souboru musí být uvedeno v těle html stránky.
Html stránka musí obsahovat tyto řádky: Aplet se vloží na html stránku s pomocí této
značky html jazyka s těmito povinnými parametry:
.....
<head>
.....
<script language="JavaScript" type="text/javascript" src="scwp.js">
</script>
.....
</head>
.....
<applet codebase="classes"
code="cz/cvut/fel/mihlon/scwp/cwp/ControllWebPages.class"
width="1" height="1" name="cwp" exactlinks="true"
receiver="telephone" mayscript>
</applet>
.....
src=”scwp.js” definice cesty k souboru, obsahující funkce JavaScriptu, které jsou volány
z apletu.
codebase obsahuje relativní nebo absolutní URL adresu, kde se bude hledat soubory tříd
přeloženého apletu.
code obsahuje jméno hlavní třídy přeloženého apletu.
width určuje šířku apletu na html stránce.
height určuje výšku apletu na html stránce.
name obsahuje jméno apletu
exactlinks určuje, podle jakých pravidel se zobrazí html stránka na základě hypertextového
odkazu. Platné hodnoty toho parametru jsou:
• true — Html stránka se zobrazí na základě přesného názvu hypertextového odkazu.
• false — Html stránka se zobrazí na základě kombinace hypertextového odkazu.
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
27
receiver jméno apletu, kterému aplet pošle neznámý (nezpracovaný) textový příkaz. Pokud
tento parametr není uveden, tak aplet neznámé povely ignoruje.
mayscript Umožní apletu spouštět příkazy JavaScriptu.
5.2.4
Popis zdrojových kódů
Zdrojové kódy tohoto apletu se nacházejí na přiloženém CD v adresáři:
scwp/src/cz/cvut/fel/mihlon/scwp/cwp:
ControllWebPages.java Ovládá webové stránky: zobrazuje nové stránky, provádí historii
příkazu: krok vpřed, vzad; posun textu v html stránce: nahoru, dolu; nasleduje hypertextové odkazy.
SetProxyDialog.java Zobrazí dialog, který umožní nastavit proxy nastaveni pro přístup
k html stránkám.
Podrobný popis fungování apletu CWP je popsán ve zdrojovém kódu a v přiložené dokumentaci na CD [7].
5.3
Aplet TELEPHONE
Tento aplet TELEPHONE se stará o zobrazení telefonu s digitálním displejem a demonstruje
hlasové vytáčení telefonního čísla, které se pak zobrazí na displeji.
5.3.1
Principiální popis apletu
Aplet demonstruje hlasové vytáčení telefonního čísla, které musí být řečeno po jednotlivých číslicích. Na telefonním displeji se zobrazuje maximálně 12 místní číslo, pokud se řekne více číslic,
tak jsou zbylá číslice ignorována. Každé nově zadané telefonní číslo vždy přemaže předchozí
zadané číslo.
5.3.2
Popis vzhledu apletu
Na 5.4 uvedeném obrázku je zobrazen vzhled apletu — digitální telefon s displejem.
Obrázek 5.4: Grafický vzhled apletu TELEPHONE
28
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
Telefonní číselník se skládá nejen z číslovek, ale i ze dvou speciálních znaků, jejich výslovnost
je tato:
• # - hash, mřížka
• * - hvězdička
5.3.3
Použití apletu na html stránce
Tento aplet se může v html stránce umístit kdekoliv, kde je třeba, aby byl vidět.
.....
<applet codebase="classes"
code="cz/cvut/fel/mihlon/scwp/telephone/Telephone.class"
width="350" height="200" name="telephone" mayscript>
</applet>
.....
codebase obsahuje relativní nebo absolutní URL adresu, kde se bude hledat soubory tříd
přeloženého apletu.
code obsahuje jméno hlavní třídy přeloženého apletu.
width určuje šířku apletu na html stránce.
height určuje výšku apletu na html stránce.
name obsahuje jméno apletu
receiver jméno apletu, kterému aplet pošle neznámý (nezpracovaný) textový příkaz. Pokud
tento parametr není uveden, tak aplet neznámé povely ignoruje.
mayscript Umožní apletu spouštět příkazy JavaScriptu.
5.3.4
Popis zdrojových kódů
Zdrojové kódy tohoto apletu se nacházejí na přiloženém CD v adresáři:
scwp/src/cz/cvut/fel/mihlon/scwp/telephone:
Telephone.java Zobrazí telefon ovládaný hlasem.
Podrobný popis fungování apletu TELEPHONE je popsán ve zdrojovém kódu a v přiložené
dokumentaci na CD [7].
5.4
Server SCWP
Vzhledem k tomu, že programy SCWP a SEDemo používají stejného klienta pro odesílání a
příjem dat ze vzdáleného serveru, který je také pro oba programy stejný, bude princip klienta
serveru popsán v kapitole 6.
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
5.5
29
Závěr
Demonstraci rozpoznávání řeči jsem realizoval s pomocí programu SCWP, který demonstruje
hlasové ovládání WWW stránek (posun html stránky nahoru/dolu, aby se zobrazil skrytý text,
pohyb v historii zobrazených stránek směrem vřed/vzad a především demonstruje zobrazování
nových WWW stránek na základě hlasového výběru hypertextového odkazu). Demonstrace je
realizována na simulaci hlasového vytáčení telefonního čísla, kde se rozpoznává sada jednotlivých číslovek a dvou symbolů (#, *) oddělených krátkou pauzou. Druhou částí je zobrazení
kontaktních informací o dané osobě na seznamu člunů katedry, kdy je výběr založen na rozpoznání jména, příjmení, jména a příjmení, příjmení a jména dotyčné osoby.
Tyto demonstrační WWW stránky se ovládají pouze hlasem. Proto jsem musel nejprve implementovat detektor řečové aktivity — použil jsem výkonový detektor, který detekuje řeč na
základě nárůstu krátkodobého výkonu při přítomnosti řečové aktivity. Během realizace a praktického testování detektoru řeči jsem zjistil, že úspěšnost správné detekce řeči nezávisí pouze
na nastavení vhodné kriteriální funkce, ale také na počátečním nastavení nahrávacích parametrů mikrofonu. Pokud je citlivost mikrofonu příliš nízká či moc vysoká, tak detektor špatně
reaguje — buď musíme do mikrofonu hodně křičet nebo detektor detekuje řeč při výskytu výraznějšího šumu na pozadí. Tento detektor je vhodný používat v relativně klidném prostředí
(kancelář), kdy detektor není moc ovlivňován okolním šumem. Detektor není vhodný k používání ve venkovním prostředí, protože toto prostředí je obklopeno dynamickým šumem (hluk
aut, procházející lidé, apod.), který by ovlivňoval funkčnost detektoru — byla by detekována
falešná řeč. Tyto nevýhody by se daly částečně odstranit přidáním dalších kriteriálních funkcí.
Vlastní rozpoznání mluvené řeči je realizováno s pomocí sady nástrojů HTK. Abych mohl
rozpoznávat česká slova, tak jsem musel zajistit vytvoření českého slovníku, gramatiky a získání
českého HMM modelu elementární řeči. Během uživatelského testování demonstrace hlasového
ovládání WWW stránek, jsem si ověřil, že úspěšnost rozpoznávání řeči je velice závislé na
vytvořeném slovníku a gramatice. Úspěšnost rozpoznání je tím větší, pokud se slovník skládá
ze slov, které se mezi sebou výrazně liší. V mé demonstraci hlasového vytáčení telefonního čísla,
se vyskytují souběžně dva velice podobné příkazy — číslovka 5 (pět) a zpět (posun v historii
WWW stránek). Tyto dvě slova se liší pouze v prvním písmenu — „z“. Proto většina testovaný
osob měla problémy, když chtěli použít příkaz zpět — místo toho se na displeji telefonu zobrazila
číslovka 5. Proto je vhodné v další verzi programu SCWP změnit příkaz zpět na jiný název,
třeba dozadu.
Další parametr který výrazně ovlivňuje úspěšnost rozpoznání řeči je vytvoření vhodné gramatiky. Čím gramatika obsahuje méně pravidel, tím se lépe rozpoznávač trefí do správného
slova, protože vychází ze statistických informací. Program SCWP by se mohl v další fázi vývoje
rozšířit tak, aby docházelo k dynamickému generování gramatiky — gramatika by obsahovala
pouze ta slova, ze kterých uživatel aktuálně vybírá. Například na stránce, kde je zobraz seznam
členů katedry, nejprve uživatel vybírá osobu na základě 20 jmen a 20 příjmení + 4 příkazy pro
ovládání WWW stránky. Když uživatel vybere osobu podle jména, tak gramatika pracuje se 44
slovy ze slovníku. Pokud uživatel vybere jméno, které patří více osobám, například Jan, tak ze
zobrazí WWW stránka, která upozorňuje uživatele, že došlo ke shodě a nabídne nový seznam
osob, kteří se jmenují Jan. Uživatel teď volí osobu z 5 Janů (1 Jan + 5 příjmení + 4 příkazy).
Proto nově vygenerovaná gramatika by měla skládat pouze z 10 slov.
Dalším nezanedbatelným parametrem je i vhodná volba HMM modelů elementární řeči.
Tento model ovlivňuje správnost rozpoznání na nákladě natrénování fonémů — rozpoznávač
může dobře reagovat na rychlou, pomalou řeč, na řeč, která se vyskytuje v hlučném prostředí
apod.
30
KAPITOLA 5. APLET SCWP — „ROZPOZNÁVÁNÍ ŘEČI“
KAPITOLA 6. KLIENT / SERVER SEDEMO A SCWP
31
6 Klient / Server SEDemo a SCWP
Následující popisované části jsou stejné pro oba programy SEDemo a SCWP.
Klienti obou programů, komunikuji se vzdáleným serverem s pomocí tohoto zobrazeného
schématu 6.1:
Obrázek 6.1: Komunikace klienta
V první fázi klient navazuje se serverem spojení. Je-li spojení úspěšně navázáno, tak mu
odešle číslo ID akce, kterou má server provést. V další části klient odešle hodnotu sample
rate nahraného audiosignálu a samozřejmě i samotný audiosignál. Jakmile server získá celý
audiosignál od klienta, tak provede vlastní výpočet s přijatým audiosignálem na základě přijaté
hodnoty ID. Pokud server rozpoznává hlasový příkaz, tak ke své činnosti nepotřebuje znát
hodnotu sample rate nahraného audiosignálu, klient může poslat libovolnou hodnotu. Tato
hodnota je důležitá pouze tehdy, má-li se provést zvýraznění řeči. Pokud výpočet na straně
serveru proběhl úspěšně, tak server o tom informuje klienta, kterému pak vzápětí pošle upravený
audiosignál a komunikace mezi klientem a serverem skončí. Zjistí-li však server, že došlo k chybě
během zpracovávání audiosignálu, tak to oznámí klientovi, který ihned ukončí komunikaci se
serverem.
Činnost serveru je velice podobná klientovi, což můžeme vidět na následujícím schématu
6.2:
32
KAPITOLA 6. KLIENT / SERVER SEDEMO A SCWP
Obrázek 6.2: Komunikace serveru
Server stále čeká na spojení od klienta. Jakmile se klient spojí se serverem, tak server vytvoří
nový proces, který bude obsluhovat právě připojeného klienta. Po vytvoření nového procesu,
server čeká na nové spojení od dalšího klienta — navržený server umí pracovat s několika
klienty najednou. Nově vytvořený proces přijme od klienta číslo ID, hodnotu sample rate audiosignálu a samotný audiosignál. Proces na základe přijatého ID provede určenou akci s přijatým
audiosignálem. Provede jednu činnost z těchto akcí:
• Vypočte data pro zobrazení spektrogramu.
• Provede zvýraznění řeči v audiosignálu.
• Rozpozná hlasový příkaz v audiosignálu — převede mluvenou řeč do textové podoby.
Požadované výpočty proces provádí s pomocí spouštění externích programu ctucopy a nástrojů sady HTK. Po skončení výpočtů pošle proces klientovi návratový kód externích programů.
Pokud výpočty proběhly bez žádných problémů, vrací hodnotu 0 a výsledný zpracovaný soubor
(audiosignál nebo textový příkaz), jinak vrací chybový kód. V posledním kroku proces ukončí
komunikaci s klientem.
Server po celou dobu komunikace s klientem vytváří logovací soubory — standardní a chybový výstup externích programů. Z těchto záznamů se dá zjistit, jaký klient komunikuje se ser-
KAPITOLA 6. KLIENT / SERVER SEDEMO A SCWP
33
verem, zda-li výpočet proběhl správně a nebo slouží k hledání chyb, pokud dochází ke špatné
komunikaci mezi klientem a serverem.
Vytvoření těchto logovacích souborů nebylo triviální záležitostí, protože je musel vytvářet
samotný server a ne externí programy. Realizaci vytvoření logovacího systému jsem se inspiroval
článkem [8]
V následující části budu popisovat, jaké kroky provádí server, aby se mohla realizovat demonstrace:
• zvýrazňování řeči — server provádí zpracování audiosignálu, výsledek se poté vizualizuje
v programu SEDemo.
• rozpoznávání řeči — server provádí rozpoznávání mluvené řeči, kterou uloží do textového
souboru. Tato uložená řeč pak slouží k hlasovému ovládání WWW stránek.
6.1
Princip fungování demonstrace zvýrazňování řeči
Server provádí zvýrazňování řeči a výpočet dat pro zobrazení spektrogramu na základě spouštění externího programu ctucopy [10] ([11]). Server na základě přijatého ID zjistí, zda-li má
z přijatého audiosignálu počítat data pro zobrazení spektrogramu a nebo má-li provést zvýraznění řeči — výběr algoritmu zvýraznění řeči je také dán hodnotou přijatého ID. Dalším
nezbytným parametrem pro spouštění programu ctucopy je přijatá hodnota sample rate audiosignálu.
6.2
Princip fungování demonstrace rozpoznávání řeči
V předchozí kapitole 2.2.2 jsem se zabýval teorií rozpoznávání řeči. V této části budu popisovat,
co je vše třeba udělat, aby mohl server rozpoznávat mluvenou řeč. Server rozpoznává řeč na
základě spouštění externích programů, které jsou součástí sady nástrojů HTK. Tyto nástroje
rozpoznávají řeč na základě statistických informací.
Když si připomeneme obrázek 2.2, tak aby rozpoznávač rozpoznával česká slova, musíme
především zajistit tyto vstupní data:
• akustický signál
• gramatiku
• slovník
• HMM modely elementární řeči
6.2.1
Získání akustického signálu
Akustický signál je nahrán s pomocí klientského programu SCWP a je uložen do audio formátu
WAV. Tento nahraný signál je klientem odeslán na server.
6.2.2
Vytvoření gramatiky
Gramatika definuje pořadí slov ze slovníku, které rozpoznávač využívá k rozpoznání řeči. Rozpoznávač rozpozná pouze ta slova / krátká spojení řeči, která jsou uvedena v gramatice. Vzhledem k tomu, že je rozpoznávač založen na základě statistických metod, tak je velice nevhodné,
aby rozpoznávač pracoval pouze s jednou velkou gramatikou slov. Pokud by byla gramatika
příliš veliká, rozpoznávač by se často mýlil, čím bude gramatika menší, tím snadněji se bude
rozhodovat, které slovo / krátké spojení řeči bylo řečeno.
34
KAPITOLA 6. KLIENT / SERVER SEDEMO A SCWP
Na základě vytvoření slovníku všech slov, na které reaguje hlasové ovládání WWW stránky
a na charakteru demonstrace, jsem vytvořil tři různé gramatiky, které se používají na různých
demonstračních html stránkách.
Gramatika se definuje v textovém souboru, ale rozpoznávač nepracuje přímo s tímto souborem, ale nejprve ji musí převést do svého formátu, kterému rozumí. Tato konverze se provádí
s pomocí nástroje HTK - HParse:
HParse gramatika wdnet
Výstupní soubor wdnet představuje vygenerovanou vnitřní formu gramatiky, se kterou pracuje
rozpoznávač.
Způsob vytvoření gramatiky je popsán v dokumentaci [3]. V následující části zobrazuji
vytvořené gramatiky. Všechny tři gramatiky mají společnou větev pro ovládání samotné WWW
stránky.
6.2.2.1
Gramatika — „intro“
Tato gramatika slouží k vybrání html stránky, na které je podrobněji demonstrováno hlasové
rozpoznání. Následující obrázek 6.3 zobrazuje grafické znázornění navržené gramatiky. Z obrázku lze vidět, že na začátku a na konci akustického signálu se může nebo nemusí nacházet
dlouhá pauza (symbol #SIL#). Podle gramatiky může rozpoznávač v jednom kroku reagovat
buď na povel nebo na výběr stránky.
Obrázek 6.3: Gramatika - intro
Vlastní soubor s gramatikou vypadá takto:
$povely = dolu | nahoru | vpřed | zpět;
$vyber_stranku = Katedra_teorie_obvodů | Vytáčení_čísla;
([#SIL#] ( $povely | $vyber_stranku ) [#SIL#] )
KAPITOLA 6. KLIENT / SERVER SEDEMO A SCWP
6.2.2.2
35
Gramatika — „people“
Tato gramatika slouží k výběru osob, u kterých se má zobrazit kontaktní informace. Následující
obrázek 6.4 zobrazuje grafické znázornění navržené gramatiky. Z obrázku lze vidět, že na začátku
a na konci akustického signálu se může nebo nemusí nacházet dlouhá pauza (symbol #SIL#).
Podle gramatiky může rozpoznávač v jednom kroku reagovat buď na povel nebo na výběr osoby
podle jména a příjmení, příjmení a jména, příjmení nebo jen podle jména.
Obrázek 6.4: Gramatika - people
Vlastní soubor s gramatikou vypadá takto:
$lide = Bergl_Petr | Bičák_Jan | Bolom_Václav |
Boreš_Petr | Bortel_Radoslav | Bártů_Marek | Chaloupka_Zdenek |
........
$jmena = Antonín | Gabriela | Ivan | Ivana | Iveta |
........
$povely = dolu | nahoru | nápověda | vpřed | zpět;
([#SIL#] ( $povely | $lide | $jmena ) [#SIL#] )
6.2.2.3
Gramatika — „telephone“
Tato gramatika slouží k simulaci hlasového vytáčení telefonního čísla. Následující obrázek 6.5
zobrazuje grafické znázornění navržené gramatiky. Z obrázku lze vidět, že na začátku a na
konci akustického signálu se může nebo nemusí nacházet dlouhá pauza (symbol #SIL#). Podle
gramatiky může rozpoznávač v jednom kroku reagovat buď na povel nebo na sadu jednotlivých
číslic oddělených krátkou pauzou (symbol #SP#).
Vlastní soubor s gramatikou vypadá takto:
$cisla = devět | dvě | hash | hvězdička | jedna |
nula | osum | pět | sedm | tři | šest | čtyři;
$povely = dolu | nahoru | vpřed | zpět;
([#SIL#] ( $povely | <$cisla #SP#> ) [#SIL#] )
36
KAPITOLA 6. KLIENT / SERVER SEDEMO A SCWP
Obrázek 6.5: Gramatika - telephone
6.2.3
Vytvoření slovníku
Slovník definuje slova, která bude rozpoznávač schopen rozpoznat. Slovník se skládá z jednotlivých dvojic - textového přepisu a rozkladu daného slova na jednotlivé fonémy. Rozpoznávač
nerozpoznává slova na základě textového popisu daného slova, ale na základě fonémů. Rozklad
slova a jeho jazykových variant na jednotlivé fonémy jsem provedl s pomocí programu lexfig.
Pro správnou činnost rozpoznávače stačí vytvořit jeden veliký slovník, protože rozpoznávač
bude rozpoznávat pouze ta slova, která má uvedena v gramatice.
Jednotlivé řádky ve slovníku se nemusejí skládat pouze z jednoho slova, ale mohou se skládat
z více různých slov, které jsou mezi sebou odděleny znakem krátké pauzy (#SP#). Navenek se
tyto slova chovají, jako jedno slovo. Díky této vlastnosti si mohu ušetřit práci s vyhodnocováním
rozpoznaných slov a s tvorbou gramatiky.
Když chci na html stránce obsahující členy Katedry teorie obvodů vybrat nějakou osobu,
abych o ní získal nějaké informace, tak nemusím provádět výběr osoby na základě extra přijatého
jména a extra přijatého příjmení (po té bych musel na základě obou kombinaci prohledávat
všechny hypertextové odkazy, než bych nalezl shodu, což by bylo časově náročné), ale provedu
výběr osoby na základě jednoho přijatého slova (díky tomu, že slovo bude jedinečné, tak na
základě jednoho kroku naleznu příslušný hypertextový odkaz v asociativním poli).
Například, pokud budu chtít získat informace o osobě — Bergl Petr, tak vytvořím tento
záznam ve slovníku:
Bergl_Petr
Bergl_Petr
Bergl_Petr
Petr p e t
b e r g l
b e r g l sp p e t r
p e t r sp b e r g l
r
Danou osobu mohu vybrat na základě: jména, příjmení, jména a příjmení, příjmení a
jména. „Klíč“ Bergl Petr je v celém slovníku jedinečný a vznikl sloučením názvu hypertextového
odkazu.
6.2.4
HMM modely elementární řeči
HMM modely obsahují statistické vlastnosti elementární řeči, vznikají trénováním z velkých
databází řeči. Tyto modely jsem získal od Katedry teorie obvodů. K těmto HMM modelům
jsem také získal seznam všech fonémů, které jsou obsaženy v HMM modelech.
6.2.5
Rozpoznávání řeči
Server na základě přijatého ID zjistí, že má provést rozpoznání řeči a také, jakou má k tomu
použít gramatiku. Poté volá příslušný skript, který provede rozpoznání mluvené řeči na text.
V následující části popíši skript, který provede rozpoznání řeči. Tento skript je principiálně
KAPITOLA 6. KLIENT / SERVER SEDEMO A SCWP
37
stejný pro všechny tři gramatiky, liší se jen obsahem gramatiky a místem uložení spouštěcího
skriptu.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
CESTA_HTK="/home/milase/MilaSE/bin"
CESTA_NASTAVENI="/home/milase/MilaSE/rozpoznavac/people"
if [ $# != 1 ]
then
echo "Spatny pocet parametru !"
echo "Pouziti: recognize.sh vstupni_soubor_s_prikazem"
echo ""
exit 1
fi
echo "$1 $1.mfc" > ${CESTA_NASTAVENI}/codetr.scp
echo "$1.mfc" > ${CESTA_NASTAVENI}/test.scp
${CESTA_HTK}/HCopy -A -T 7 -C ${CESTA_NASTAVENI}/config \
-S ${CESTA_NASTAVENI}/codetr.scp
${CESTA_HTK}/HVite -C ${CESTA_NASTAVENI}/config2 \
-o ST -A -T 7 -H ${CESTA_NASTAVENI}/macros \
-H ${CESTA_NASTAVENI}/hmmdefs \
-S ${CESTA_NASTAVENI}/test.scp -l "*" \
-i ${CESTA_NASTAVENI}/recout.mlf \
-w ${CESTA_NASTAVENI}/wdnet -p 0.0 -s 5.0 \
${CESTA_NASTAVENI}/slovnik \
${CESTA_NASTAVENI}/monophones1
sed -f ${CESTA_NASTAVENI}/sed.rules \
${CESTA_NASTAVENI}/recout.mlf > "$1.command"
echo "$1.command"
• Zobrazený skript se spouští s jedním parametrem, který určuje umístění a jméno souboru,
který obsahuje nahraný audiosignál. Audiosignál musí být uložen v audio formátu WAV.
Hodnota parametru je uložena v proměnné $1.
• Proměnná CESTA HTK určuje adresář, který obsahuje programy se sady nástrojů HTK.
• Proměnná CESTA NASTAVENI určuje adresář, který obsahuje konfigurační soubory pro
samotný rozpoznávač.
• Na řádcích 6 – 12 se provádí test, zda-li je skript spuštěn se správným počtem parametrů.
• na řádcích 14 a 15 se dynamicky vytvářejí konfigurační soubory
• Příkaz HCopy na řádku 17 provede předzpracování audiosignálu.
• Příkaz HVite na řádku 20 provede vlastní rozpoznání řeči. Výsledek uloží do souboru
recout.mlf
38
KAPITOLA 6. KLIENT / SERVER SEDEMO A SCWP
• Význam jednotlivých parametrů příkazů HCopy a HVite je popsán v dokumentaci HTK
[3].
• Příkaz sed na řádku 29 provede filtraci výsledku: ze souboru odstraní komentář a nedůležité řádky, takže získá pouze požadovaný příkaz. Vzhledem k tomu, že nástroje HTK
neumí přímo pracovat s českou diakritikou, jsou česká písmena zaprána v Unicode kódování. Program sed také provádí konverzi Unicode znaků na české znaky (ISO8859-2).
Výsledné české slovo je uloženo do souboru $1.command
• Poslední příkaz na řádku 32 pouze vypíše získané slovo na standardní výstup, čímž se
zapíše do logovacího souboru serveru.
KAPITOLA 7. INSTALACE PROGRAMŮ NA WEBOVÝ SERVER
39
7 Instalace programů na webový server
V následující části popisuji instalaci obou programů (SEDemo a SCWP) na webový server.
7.1
Instalace serveru
V této části se bude popisovat instalace serveru, který je společný pro oba programy SEDemo
a SCWP, na počítač, na kterém je nainstalovaný Linux a webový server. Spolu s uvedeným
popisem zobrazuji i konkrétní příklady postupů, u kterých předpokládám, že je bude provádět
Linuxový administrátor, který daným příkazů rozumí a proto je nebudu podrobně popisovat. Všechna nastavení v konfiguračních souborech odpovídají nastavením, která jsou uvedená
v příkladech. Pokud se bude server instalovat do jiných adresářů, je třeba upravit i konfigurační
soubory serveru !
1. Nejprve se musí v daném operačním systému vytvořit nějaký uživatel, pod kterým se
bude spouštět server spolu s programy třetích stran.
linux#> useradd -m milase
2. V domovském adresáři nového uživatele je třeba vytvořit nějaký adresář, do kterého se
nahrají data „serveru“.
linux#> cd /home/milase
linux#> mkdir MilaSE
3. Z přiloženého CD zkopírovat obsah adresáře server/ do nově vytvořeného adresáře. Zkopírován bude archív sedemo scwp-server.tar.bz2, který je třeba rozbalit.
linux#>
linux#>
linux#>
linux#>
linux#>
mount /mnt/cdrom
cd /mnt/cdrom/server/
cp sedemo_scwp-server.tar.bz2 /home/milase/MilaSE/
cd /home/milase/MilaSE
tar -xvjf sedemo_scwp-server.tar.bz2
Tento archív obsahuje tyto data — další adresáře: bin/, ctucopy, cz/, htk-bin/, htk-src/,
log/, rc/, rozpoznavac/, tmp/
bin Adresář obsahuje spustitelné soubory programů třetích stran.
ctucopy Adresář pro obsahuje zdrojové a binární kódy programu ctucopy.
cz Přeložené kódy vlastního serveru
htk-bin Adresář pro binární data sady programu HTK.
htk-src Adresář pro zdrojová data sady programu HTK.
log Adresář pro záznam logovacích informaci od serveru
rc Adresář obsahuje spouštěcí rc-skript, který automaticky spouští server po zapnutí
nebo restartování počítače.
rozpoznavac Adresář obsahující konfigurační soubory rozpoznávače
40
KAPITOLA 7. INSTALACE PROGRAMŮ NA WEBOVÝ SERVER
tmp Adresář pro ukládání dočasných dat.
4. Z internetové adresy [9] stáhnout zdrojové kódy HTK tools: HTK-3.4.tar.gz a rozbalit
je do adresáře htk-src. Podle instalačního návodu uvnitř archívu HTK tools je třeba
nástroje HTK přeložit a nainstalovat do adresáře htk-bin. Po instalaci nástrojů HTK je
třeba vytvořit symbolické linky na tyto spouštěcí programy: HParse, HVite, HCopy do
adresáře bin.
linux#>
linux#>
linux#>
linux#>
cd
ln
ln
ln
/home/milase/MilaSE/bin
-s ../htk-bin/bin/HParse .
-s ../htk-bin/bin/HVite .
-s ../htk-bin/bin/HCopy .
5. Z internetové adresy [10] stáhnout zdrojové kódy programu ctucopy: CtuCopy_3.0.11.tar.bz2
a rozbalit je do adresáře ctucopy. Podle instalačního návodu uvnitř archívu je třeba
program přeložit. Po instalaci programu ctucopy je třeba vytvořit symbolický odkaz na
spouštěcí program: ctucopy do adresáře bin.
linux#> cd /home/milase/MilaSE/bin
linux#> ln -s ../ctucopy/CtuCopy_3.0.10/Release/ctucopy .
6. Zkopírovat rc-skript SEDemoSCWPserver z adresáře rc do systému a vytvořit příslušné odkazy v init levelech, aby se server vždy automaticky spustil po zapnutí nebo
restartování počítače. Tento rc-skript je psán pro Linux Fedora Core, pokud v daném
počítači je nainstalována jiná verze Linuxu, je třeba tento skript přepsat podle možností
daného operačního systému !
linux#>
linux#>
linux#>
linux#>
linux#>
linux#>
linux#>
linux#>
linux#>
linux#>
linux#>
linux#>
linux#>
linux#>
linux#>
linux#>
cd
cp
cd
ln
cd
ln
cd
ln
cd
ln
cd
ln
cd
ln
cd
ln
/home/milase/MilaSE/rc
SEDemoSCWPserver /etc/init.d/
/etc/rc0.d
-s ../init.d/SEDemoSCWPserver
/etc/rc1.d
-s ../init.d/SEDemoSCWPserver
/etc/rc2.d
-s ../init.d/SEDemoSCWPserver
/etc/rc3.d
-s ../init.d/SEDemoSCWPserver
/etc/rc4.d
-s ../init.d/SEDemoSCWPserver
/etc/rc5.d
-s ../init.d/SEDemoSCWPserver
/etc/rc6.d
-s ../init.d/SEDemoSCWPserver
K01SEDemoSCWPserver
K01SEDemoSCWPserver
S99SEDemoSCWPserver
S99SEDemoSCWPserver
S99SEDemoSCWPserver
S99SEDemoSCWPserver
K01SEDemoSCWPserver
7. Pokud je na daném počítači spuštěn firewall, je třeba ho nakonfigurovat tak, aby propouštěl komunikaci z venku na port serveru a zpět. Konkrétní hodnota daného portu je
definována ve zdrojovém kódu serveru.
KAPITOLA 7. INSTALACE PROGRAMŮ NA WEBOVÝ SERVER
41
8. Posledním krokem je spuštění samotného serveru. Server pak poté běží pod právy nově
vytvořeného uživatele (milase) a také externí programy, které spouští běží pod tímto
uživatelem.
linux#> /etc/init.d/SEDemoSCWPserver start
9. Server se ukončí příkazem: /etc/init.d/SEDemoSCWPserver stop. Status serveru (zda-li
běží nebo ne) se zjistí příkazem: /etc/init.d/SEDemoSCWPserver status.
7.2
7.2.1
Instalace klienta (apletu)
SEDemo
Zkopírujte z přiloženého CD obsah adresáře klient/SEDemo/ do adresáře, ze kterého Váš
webový server zobrazuje WWW stránky (/var/www/html/, /home/uživatel/public html/,
apod.). Z CD si zkopírujete tyto soubory: sedemo-button.png, sedemo.html, SEDemo.jar s SEDemo.jnlp, .java.policy.
SEDemo.jar Obsahuje přeloženou distribuci programu SEDemo.
SEDemo.jnlp Konfigurační soubor pro spuštění programu s pomocí Java Web Start, kde se
definuje umístění archívu přeloženého programu (SEDemo.jar), určení minimální verze
Javy ke spuštění (pokud v daném systému není nainstalována požadovaná verze, tak se
automaticky nabídne možnost stažení požadované verze).
<?xml version="1.0" encoding="ISO-8859-2"?>
<!-- SEDemo -->
<jnlp
spec="1.0+"
codebase="http://noel.feld.cvut.cz/speechlab/share/demos/sedemo"
href="SEDemo.jnlp">
<information>
<title>SEDemo</title>
<vendor>Milan Vaclavik [email protected]</vendor>
<homepage href="http://noel.feld.cvut.cz/speechlab/
start.php?page=demos&lang=cz&sub=sedemo"/>
<description>SEDemo</description>
<description kind="short">Zvýrazňování řečového signálu</description>
<offline-allowed/>
</information>
<resources>
<j2se version="1.6+"/>
<jar href="SEDemo.jar"/>
</resources>
<application-desc main-class="mila.MilaSE"/>
</jnlp>
sedemo-button.png Obrázek tlačítka, které spouští program SEDemo
42
KAPITOLA 7. INSTALACE PROGRAMŮ NA WEBOVÝ SERVER
sedemo.html Jednoduchá html stránka (obrázek 7.1), která umožňuje spuštění programu SEDemo. Ačkoliv je program SEDemo navržen jako aplet (také se dá spustit jako samostatná
aplikace), tak velice doporučuji spouštět program s pomocí technologie Java Web Start,
než s pomocí značky applet v těle html souboru. Java Web Start umožňuje spouštět
aplikace, jako by to byly aplety (automaticky jsou spouštěny se zapnutým modelem zabezpečení — viz. 7.3.1), v samostatném okně. Java Web Start také umožňuje spouštět
libovolné programy s různými verzemi Javy, aniž by se musel provádět nějaký zásah
v systému. Spuštění programu s pomocí Java Web Start je docíleno s pomocí definice
hypertextového odkazu v html stránce: <a href="SEDemo.jnlp">
Obrázek 7.1: Úvodní html stránka SEDemo
.java.policy Soubor zásad zabezpečení pro úspěšné spuštění apletů (viz. kapitola 7.3.1). Tento
soubor zásad je nabídnut ke stažení na html stránce sedemo.html
7.2.2
SCWP
Zkopírujte z přiloženého CD obsah adresáře klient/SCWP/ do adresáře, ze kterého Váš
webový server zobrazuje WWW stránky (/var/www/html/, /home/uživatel/public html/,
apod.). Z CD si zkopírujete tyto soubory: classes/, index.html, namesake.php, people/people,
scwp.js, tbinfo.php, telephonebook.php, telephone.html
index.html Úvodní stránka — rozcestník, ze které se dají zobrazit tyto html stránky:
• Simulace hlasového vytáčení telefonního čísla.
• Stránka zobrazující informace o členech Katedry teorie obvodů.
telephone.html Stránka umožňující simulaci hlasové vytáčení telefonního čísla. Stránka zobrazuje telefon s displejem, který zobrazuje „vytočené“ telefonní číslo.
KAPITOLA 7. INSTALACE PROGRAMŮ NA WEBOVÝ SERVER
43
telephonebook.php Stránka zobrazující seznam lidí na Katedře teorie obvodů.
people/people Tento soubor people v adresáři people definuje informace, které se zobrazí
u dané osoby. Každý řádek v tomto souboru představuje informace o právě jedné osobě,
oddělovačem jednotlivých záznamů je znak &. Jeden vzorový řádek s popisem vypadá
takto (ačkoliv příklad zobrazuje čtyři řádky, tak ve skutečnosti jde o dva řádky):
# Příjmení
Jméno
id
Tituly
E-Mail
Telefon
Bártů
& Marek & 33 & Ing.
& [email protected] & 2887
Místnost
& B3/615
Vztah
& Doktorand
tbinfo.php Stránka zobrazuje informace o osobě, které jsou napsány v souboru people/people.
namesake.php Tato stránka oznamuje, že vybraná osoba ze seznamu nebyla jednoznačně
určena — osoba byla vybrána podle jména — v seznamu se vyskytuje více osob, se
stejným jménem, proto je teď třeba vybrat osobu podle jména.
scwp.js Definice JavaScriptu, který se používá na html stránkách.
classes/ Tento adresář obsahuje přeložený program (aplet) SCWP.
7.3
7.3.1
Nastavení práv apletu / aplikace
Model zabezpečení v Javě
Aplety šířené v internetu s pomocí WWW prohlížečů představují neodmyslitelnou přítomnost
bezpečnostního rizika, neboť cizí kód je spouštěn lokálně. Autoři jazyka Java proto na zmíněné
riziko mysleli už při návrhu prvních verzí. Výsledkem je model zabezpečení nazývaný pískoviště
(sandbox).
Model pískoviště je bezpečnostní prostředí okolo systému či aplikace, které je většinou postaveno na zákazu potenciálně nebezpečných činností (přístup k souborům, k síťovým připojením,
apod.).
Proto v prostředí jazyka Java existuje mechanismus, který zajišťuje, že jak lokální, tak
i vzdálený kód lze spouštět uvnitř specifických bezpečnostních domén založených na souborech zásad zabezpečení (security policy files), jež určují, které programy mohou používat které
prostředky.
Výchozí bezpečnostní politika jazyka Java je taková, že programy jazyka Java spuštěné
lokálně mají plný přístup ke všem souborům a prostředkům poskytovaným systémem hostícím
virtuální stroj jazyka Java (model zabezpečení je vypnut). Zatím co programy spuštěné s pomocí
WWW prohlížeče — aplety jsou automaticky spouštěny se zapnutým modelem zabezpečení a
provádějí svoji činnost v rámci působení svého „pískoviště“, kde je jejich činnost omezena.
Vzhledem k tomu, že mé programy — SEDemo a SCWP jsou spouštěny uvnitř pískoviště a
potřebují přistupovat k systémovým prostředkům, tak je nezbytné, aby se na lokálním počítači
vytvořil soubor zásad zabezpečení. Obsah tohoto souboru musí povolit nezbytné akce, které
jsou nezbytné ke správné činnosti obou programů.
V následující části budu popisovat vytvoření minimálního souboru zásad zabezpečení. S úplným popisem jednotlivých druhů zásad oprávnění se lze seznámit v knize [4].
44
7.3.2
KAPITOLA 7. INSTALACE PROGRAMŮ NA WEBOVÝ SERVER
Soubory zásad zabezpečení
Při instalaci prostředí jazyka Java (JRE - Java Runtime Environment) bez ohledu na to, zda
je toto prostředí instalováno samostatně nebo jako součást sady JDK (Java Development Kit),
je instalován rovněž konfigurační soubor zabezpečení a implicitní soubor zásad. Konfigurační
soubor zabezpečení se nazývá java.security a obsahuje oddíl podobný tomu, co je zobrazen
v následujícím výpisu.
# The default is to have a single system-wide policy file,
# and a policy file in the user’s home directory.
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
Tento oddíl definuje implicitní soubory zásad, jde o obyčejné textové soubory, které neobsahují formátovací znaky. První soubor představuje výchozí systémové nastavení zásad oprávnění. Proměnná prostředí Javy ${java.home} představuje domovský adresář prostředí JRE
(ne JDK !). Vzhledem k tomu, že tento soubor představuje „systémový soubor“, tak ve většině
případů nemůže tento soubor přímo upravovat běžný uživatel. Proto je v zobrazeném výpise
definován i uživatelský soubor, který může běžný uživatel upravovat. Implicitně se tento soubor v počítači nenachází, je vytvářen uživatelem teprve tehdy, když ho skutečně potřebuje.
Proměnná prostředí Javy ${user.home} představuje domovský adresář právě přihlášeného
uživatele. V operačním systému UNIX (Linux) jde o adresář /home/uživatel, v MS Windows
jde většinou o adresář (záleží to na konkrétní verzi) C:/Documents and Settings/uživatel.
7.3.2.1
Vytvoření vlastního souboru zásad
Soubory zásad lze vytvářet a upravovat s pomocí libovolného textového editoru, který neukládá
spolu s textem i formátovací znaky (velikost písma, tučné písmo, apod.). K uvedeným činnostem
lze také použít nástroj policytool, který je dodáván jako součást sady prostředí Java JDK.
Tento nástroj umožňuje ze seznamu zásad vybírat ty zásady, které chceme upravit a také
částečně nabízí výběr hodnot, které můžeme nastavit.
Následující výpis zobrazuje minimální seznam zásad zabezpečení, který je třeba nastavit,
aby mé programy (SEDemo a SCWP) fungovaly správně:
grant {
permission
permission
permission
permission
};
7.3.2.2
java.io.FilePermission "<<ALL FILES>>", "read, write, delete";
java.util.PropertyPermission "*", "read";
javax.sound.sampled.AudioPermission "record";
java.net.SocketPermission "*", "connect";
Popis nastavených zásad zabezpečení
V následující části popisuji význam minimálního souboru zásad zabezpečení.
Třída oprávnění java.io.FilePermission
S pomocí této třídy FilePermission se uděluje oprávnění k užití souboru nebo adresáře. Tento
typ oprávnění vyžaduje dva řetězce. První specifikuje cíl oprávnění (soubor nebo adresář), zatím
co druhý řetězec obsahuje seznam operací (činností), které lze s daným objektem vykonávat.
<< ALL F ILES >> Specifikované operace jsou platné pro všechny soubory a adresáře v daném souborovém systému bez ohledu na umístění.
KAPITOLA 7. INSTALACE PROGRAMŮ NA WEBOVÝ SERVER
45
read Program může číst obsah adresářů a souborů.
write Program může vyvářet nové soubory a měnit obsah stávajících souborů.
delete Program smí mazat soubory a adresáře.
Oba programy (SEDemo a SCWP) vytváří v domovském adresáři uživatele adresář, do kterého ukládají dočasné soubory. Program SEDemo umožňuje kamkoliv uložit nahraný signál
(řeč).
Třída oprávnění java.util.PropertyPermission
Virtuální stroj jazyka Java využívá řadu systémových proměnných. Je-li nepřátelský program
schopen upravovat hodnoty systémových vlastností, může narušit správnou funkci ostatních
programů spuštěných ve stejné instanci virtuálního stroje jazyka Java.
Tato třída oprávnění očekává dvě hodnoty:
• Název vlastnosti nebo skupiny vlastností, k níž má být udělen přístup.
• Typ přístupu, který má být udělen.
* Nahrazuje všechny vlastnosti.
read Aplikace může pouze číst hodnoty systémových proměnných.
Oba programy zjišťují, kde je domovský adresář uživatele, aby v něm mohly vytvořit dočasné
soubory, k tomu je také třeba znát znak oddělovače adresářů.
Třída oprávnění javax.sound.sampled.AudioPermission
S pomocí této třídy AudioPermission se uděluje oprávnění k používání audio zařízení.
record Aplikace může nahrávat data z mikrofonu.
Oba programy ke své činnosti vyžadují schopnost nahrávat data z mikrofonu.
Třída oprávnění java.net.SocketPermission
S pomocí této třídy SocketPermission se uděluje oprávnění k používání operací se sokety.
Samotné oprávnění se skládá ze dvou položek:
• Název hostitele (název DNS počítače v síti, případně jeho IP adresa) a port.
• Seznam akcí, které lze při operacích souvisejících s daným hostitele a portem povolit.
* Lze vytvořit připojení k libovolnému počítači dostupného v rámci sítě.
connect Umožňuje lokálnímu počítači vytvářet soketové připojení k jiným počítačům.
Použitím tohoto pravidla se zamezí zobrazení varovného dialogu, že program navazuje spojení se vzdáleným počítačem.
46
KAPITOLA 7. INSTALACE PROGRAMŮ NA WEBOVÝ SERVER
KAPITOLA 8. USEABILITY TESTOVÁNÍ WEBOVÉ APLIKACE SEDEMO A SCWP 47
8 Useability testování webové aplikace SEDemo a SCWP
8.1
Účel
Otestovat webové rozhraní aplikací SEDemo (demonstrace zvýrazňování řeči) a SCWP (demonstrace rozpoznávání řeči) na WWW stránkách http://noel.feld.cvut.cz/speechlab/ v sekci
demonstrace. Je třeba ověřit funkčnost nabízených vlastností a odhalit problematické části
programu z hlediska uživatele (špatně navržené prvky programu, složité ovládání,. . .)
8.2
Cíle testování
Otestovat uživatelskou část aplikace SEDemo a hledat problematické oblasti pro uživatele:
• Nahrát krátký řečový úsek.
• Prozkoumávání časového průběhu signálu — Zoomování průběhu.
• Přehrávání signálu.
• Nastavení parametrů pro nahrávání signálu.
• Výběr filtrů pro zvýraznění řeči.
Otestovat uživatelskou část aplikace SCWP a hledat problematické oblasti pro uživatele:
• Hlasový výběr WWW stránky.
• Simulace hlasového vytočení čísla
• Výběr stránky, zobrazující informace o dané osobě
• Hlasové ovládání WWW stránky — Zobrazení předchozí stránky, posun stránky nahoru/dolu.
8.3
Profil uživatele
Každý, kdo má minimální zkušenosti s prací s PC a používání mikrofonu.
8.3.1
Persony
• Martin — Martinovi je 18 let, navštěvuje stření školu už třetím rokem a příští rok ho
čeká maturita. Martin je spíše průměrným studentem. Ve volném čase buď fotí zajímavé
předměty nebo s kamerou natáčí zajímavé události. S používáním počítače nemá žádné
problémy, protože často s jeho pomocí upravuje fotografie/záběry z kamery, občas ho také
používá k hraní her, brouzdání po internetu a nebo pro sledování filmů. S počítačem se
seznámil už jako malé dítě, protože ho velmi často používal jeho otec k práci.
• Lenka — Lenka je docela plachá dívka, které je 22 let. Před dvěma lety ukončila střední
školu. Lenka pracuje jako servírka v malé restauraci. Lenka má doma pět měsíců počítač,
který využívá k brouzdání na internetu, čtení emailů a k četu s přáteli. Před pár dny se jí
podařilo použít spojení s kamarády přes Skype, z čehož byla velmi nadšená. Naneštěstí se
jí podařilo smazat nějaké důležité systémové soubory na jejím počítači, takže ho nemohla
používat celý týden, než jí ho bratr opravil.
48 KAPITOLA 8. USEABILITY TESTOVÁNÍ WEBOVÉ APLIKACE SEDEMO A SCWP
8.4
Testy
8.4.1
8.4.1.1
Screener
Úvod
Program SEDemo je určen pro užší okruh uživatelů, kteří se zabývají zpracováním řečového
signálu. Program demonstruje některé algoritmy pro zvýraznění řeči, proto v cílové skupině
testerů se musí vyskytovat nějaká osoba, která se dobře orientuje v této oblasti.
Program SCWP demonstruje rozpoznávání řeči — hlasové ovládání WWW stránek. Proto
je určen pro široký okruh uživatelů, kteří by rádi uvítali hlasové ovládání PC a mají aspoň
minimální zkušenosti s používáním počítače.
Posouzení zkušeností s používáním PC se bude provádět jednak podle doby, kterou uživatel
PC používá a dále podle způsobů, jakým počítač používá.
8.4.1.2
Kritéria
Počet účastníků: 4.
D1:
1 uživatel, který skoro nepoužívá multimediální programy, 1 uživatel který používá
multimediální programy, 2 uživatele aktivně se pracující v oblasti „zpracování řeči“
D2:
1 uživatel s menšími zkušenostmi s PC, 1 uživatel s většími zkušenostmi, 2 uživatele
s každodenním stykem s PC
KAPITOLA 8. USEABILITY TESTOVÁNÍ WEBOVÉ APLIKACE SEDEMO A SCWP 49
8.4.1.3
Dotazník
1. Používáte počítač
[ ] nikdy, nikde
[ ] doma
[ ] v práci
[ ] ve škole
[ ] jinde, kde ? . . . . . . . . .
2. Jak dlouho počítač používáte?
3. Kolik času u počítače strávíte?
[ ] méně než hodinu týdně
[ ] hodinu až pět hodin týdně
[ ] hodinu až pět hodin denně
[ ] více než pět hodin denně
4. Za jakým účelem PC používáte?
[ ] programování
[ ] přístup k internetu/emailu
[ ] kancelářská práce (psaní dokumentů)
[ ] hraní her
[ ] používání multimediálních programů
[ ] jiný, jaký ? . . . . . . . . .
5. Chtěl by jste mít možnost ovládat PC hlasem ?
[ ] ano
[ ] ne
6. Měl byste zájem zúčastnit se testování internetové aplikace
[ ] ano
[ ] ne
7. Který den v týdnu a v kolik hodin mát čas ? (test může trvat 20. . .30 minut)
[ ] pondělí, čas . . . . . . . . .
[ ] úterý, čas . . . . . . . . .
[ ] středa, čas . . . . . . . . .
[ ] čtvrtek, čas . . . . . . . . .
[ ] pátek, čas . . . . . . . . .
[ ] sobota, čas . . . . . . . . .
[ ] neděle, čas . . . . . . . . .
50 KAPITOLA 8. USEABILITY TESTOVÁNÍ WEBOVÉ APLIKACE SEDEMO A SCWP
8.4.2
Seznámení testera s testovanými programy
Ke správnému používání programů, musíte mít správně nastaveno nahrávání z mikrofonu ve
vašem operačním systému, nainstalovanou Javu (verze 6 a vyšší) a nakonec je třeba nahrát do
vašeho počítače soubor — Soubor zásad pro Javu.
8.4.2.1
Program SEDemo
Tento program umožňuje načítat soubory obsahující nahranou řeč a nebo umožní přímo si
nahrát nějaký krátký řečový úsek promluvy. Hlavním účelem tohoto programu je demonstrace
algoritmů „zvýrazňování řeči“, kde si může uživatel na základě grafických průběhů signálu
(amplitudový průběh, spektrogram) pozorovat rozdíly mezi demonstrovanými algoritmy.
8.4.2.2
Program SCWP
Tento program demonstruje rozpoznávání řeči — hlasové ovládání WWW stránek— zobrazení WWW stránky na základě hlasového vybrání hypertextového odkazu, zobrazení předchozí
stránky, posun stránky nahoru/dolu, simulace vytáčení telefonního čísla (výběr telefonního čísla
na základě jednotlivých číslovek).
KAPITOLA 8. USEABILITY TESTOVÁNÍ WEBOVÉ APLIKACE SEDEMO A SCWP 51
8.4.3
Seznam úkolů
8.4.3.1
Seznam úkolů — SEDemo
1. Chcete si nahrát seznam úkolů na zítřejší práci
(a) Spusťte program SEDemo.
(b) Nahrajte nějakou krátkou větu.
2. V nahraném signálu se Vám zdá, že obsahuje příliš šumu z okolí
(a) Prozkoumejte spektrogram nahraného signálu: zvětšete / maximalizujte / snižte
detail zobrazení signálu.
(b) Přehrajte si nahraný signál.
3. Pokuste se vylepšit nahraný signál s pomocí zvýraznění řeči
(a) Nastavte filtr: Spektrální odečítání s jednocestným usměrněním VAD.
(b) Prozkoumejte spektrogram upraveného signálu.
(c) Přehrajte si upravený signál.
4. Rozhodl(a] jste se, že nahraný signál byl nahrán nekvalitně a proto ho nahrajete znovu
s lepšími nahrávacími podmínkami
(a) Změňte vzorkovací frekvenci nahrávaného signálu na 16000 Hz.
(b) Nahrajte nový úkol na zítřek.
(c) Zvýrazněte řeč s pomocí filtru Spektrální odečítání s dvoucestným usměrněním VAD.
(d) Do PC uložte upravený signál - úkol na zítřek.
8.4.3.2
Seznam úkolů — SCWP
VEŠKERÉ ÚKONY SE PROVÁDÍ POUZE HLASEM !!!
1. Chcete zavolat svému kolegovi(kolegyni) a zdělit mu(jí) zajímavé informace
(a) Hlasem zobrazte WWW stránku s telefonním přístrojem.
(b) Zadejte hlasem telefonní číslo: # 1 8 6 3
(c) Zadejte hlasem telefonní číslo: * 2 5 7 9 0
2. Chcete zjistit kontaktní informace o svém učiteli na Katedře teorie obvodů
(a) Zobrazte WWW stránku Katedry teorie obvodu.
(b) Zobrazte detaily o učiteli Ondřeji Konopkovi
(c) Zobrazte detaily o učiteli Hanžlovi
(d) Zobrazte detaily o učiteli Petrovi (Struhovský)
3. Chcete zatelefonovat svému kamarádovi Tomáši, zjistěte jeho telefonní číslo, poté vytočte
jeho číslo a proberte s ním přípravu na další cvičení.
52 KAPITOLA 8. USEABILITY TESTOVÁNÍ WEBOVÉ APLIKACE SEDEMO A SCWP
8.4.4
Post-test
8.4.4.1
Post-test — SEDemo
1. Jak se Vám líbila webová aplikace SEDemo ?
(Zakroužkujte svou volbu - číslo)
(velmi pěkná) 1 2 3 4 5 (hrozná)
2. Ovládání aplikace je:
(Zakroužkujte svou volbu - číslo)
(jednoduché) 1 2 3 4 5 (složité)
3. Co by jste nejraději změnili a proč ?
4. Jaká část aplikace byla pro Vás složitá, nepřehledná a proč ?
8.4.4.2
Post-test — SCWP
1. Jak se Vám líbilo hlasové ovládání WWW stránek ?
(Zakroužkujte svou volbu - číslo)
(velmi pěkné) 1 2 3 4 5 (hrozné)
2. Ovládání je:
(Zakroužkujte svou volbu - číslo)
(jednoduché) 1 2 3 4 5 (složité)
3. Co by jste nejraději změnili a proč ?
4. Jaká část aplikace byla pro Vás složitá, nepřehledná a proč ?
KAPITOLA 8. USEABILITY TESTOVÁNÍ WEBOVÉ APLIKACE SEDEMO A SCWP 53
8.5
Hardwarové vybavení
Kvůli testování, že dané programy jsou nezávislé na operačním systému a WWW prohlížeči,
tak testování probíhalo na těchto počítačích:
1. varianta:
PC: Athlon 1GHz, 758MB RAM
OS: Linux (Gentoo)
WWW prohlížeč: Mozilla Firefox 2.0.0.11
2. varianta:
PC: Pentium III, 512MB RAM
OS: Windows XP Home
WWW prohlížeč: Mozilla Firefox 2.0.0.11
3. Informace o mikrofonu: (Media microphone series, Maxxtro)
Directivity omni-directional
Frequency response 20 – 16 kHz
Impedance 600 Ω
Sensitivity −60 db ± 3 db
Cord length 6ft
8.6
Vypracované testy
Vyplněné testy od testovaných osob se nachází v příloze B na straně 63.
8.7
Závěr
Testovaní uživatelé měly nejčastěji tyto problémy s testovanými programy a nebo se jim
(ne)líbilo:
• Program SEDemo:
– Chybí informace, že se skutečně nahrává z mikrofonu.
Obrázek 8.1: Useability test - nahrávání řeči
– V některých stavech programu nejednoznačná možnost přehrávání výstupního programu.
54 KAPITOLA 8. USEABILITY TESTOVÁNÍ WEBOVÉ APLIKACE SEDEMO A SCWP
– Nepřehledné menu.
– Občas problémy během přehrávání — zpomalení celého systému.
– Nižší kvalita ovládacích ikon, ikony znázorňující zvětšení/snížení detailů nejsou názorné.
Obrázek 8.2: Useability test - ovládací panel ikon
• Program SCWP:
– Chybí možnost vybrat znak # s pomocí slova „křížek“.
– Pokud se hlasem vytáčela čísla hodně pomalu, tak často docházelo k chybě — buď
se zobrazila úplně jiná číslice a nebo před správnou číslicí se objevila navíc špatná
číslice.
– Častým problémem bylo se dostat pryč ze stránek, kde se demonstrovalo hlasové
vytáčení — problém s příkazem „zpět“, která se vyhodnotilo jako číslovka 5 (pět).
– Uživatelé často začali říkat hlasový povel dříve (v „inicializační“ části rozpoznávače)
než měli (správné je říkat příkaz ve fázi „Očekávám příkaz“).
– Když se rychle za sebou zadávaly příkazy a pak se změnila WWW stránka, tak došlo
k „zamrznutí“ programu — inicializační část nikdy neskončila.
KAPITOLA 9. ZÁVĚR
55
9 Závěr
V rámci diplomové práce jsem se seznámil s problematikou zvýrazňování a rozpoznávání řeči,
kterou jsem demonstroval vytvořením programům, které se zabývají demonstrací zvýrazňování
a rozpoznávání řeči. Vytvořil jsem multiplatformní programy — aplety, které jsou nezávislé na
operační systému a jsou nabízeny širokému okruhu uživatelů s pomocí WWW prohlížeče. Vzhledem k tomu, že oba programy používají ke své správné činnosti i programy třetích stran, které
jsou licenčně omezeny, byl jsem nucen navrhnout programy s architekturou klient – server, kde
uživatel v klientské části nahrává daná signál, který je poté odeslán na server, kde je zpracován
— proběhne zvýraznění řeči či rozpoznání hlasové promluvy, a výsledek je vrácen klientovi, kde
je dále zpracován. Server je navržen tak, aby byl schopen obsloužit požadavky několika klientů
najednou — jakmile server naváže s pojení s klientem, tak vytvoří nový samostatný proces,
který obslouží daného klienta.
Hlavní výsledky mé práce lze shrnout v následujících bodech:
• Vytvořil jsem programy — aplety, které jsou nezávislé na daném operačním systému a
jsou poskytovány uživatelům s pomocí WWW prohlížeče.
• Vytvořil jsem klientskou a serverovou část, která umožňuje přenos nahraného audiosignálu
po internetu. Server je schopen obsloužit několik klientů najednou.
• Vytvořil jsem program SEDemo, který umožňuje demonstraci zvýraznění řeči v akustickém signálu. Hlavní činností programu je vizualizace vstupního (nahraného/načteného)
signálu a výstupního (po zvýraznění řeči) signálu s pomocí časových průběhů a spektrogramu. Vlastní zvýraznění řeči se provádí na serveru s pomocí spouštění externího
produktu třetí strany.
• Vytvořil jsem program SCWP, který demonstruje rozpoznávání řeči — umožňuje hlasové ovládání WWW stránek: pohyb WWW stránky nahoru/dolu, aby se zobrazil skrytý
text, pohyb vpřed/vzad v historii WWW stránek, zobrazování nových WWW stránek na
základě hlasového výběru hypertextového odkazu. Součástí demonstrace je simulace hlasového vytáčení telefonního čísla. Vlastní rozpoznání mluvené řeči se provádí na serveru
s pomocí spouštění externího produktu třetí strany.
• V programu SCWP, jsem vytvořil výkonový detektor řečové aktivity, který umožňuje
výhradně hlasové ovládání WWW stránek.
• Provedl jsem uživatelské testy programů SEDemo a SCWP s pomocí skupiny testovaných
uživatelů. Tyto testy slouží k nalezení možných chyb a ke zlepšení celkové použitelnosti
programů pro široký okruh uživatelů.
Vytvořil jsem programy, které demonstrují základní algoritmy pro zvýrazňování a rozpoznávání řeči. Programy jsem se snažil vytvářet tak, aby šly dále rozšiřovat pomocí přidaných
modulů. V další fázi vývoje programů by se mohly programy rozšířit o další pokročilé algoritmy
zvýrazňování a rozpoznávání řeči. Také bude třeba opravit chyby, které byly nalezeny s pomocí
uživatelských testů. Tyto demonstrační programy jsou umístěné na WWWW stránkách [18].
56
KAPITOLA 9. ZÁVĚR
KAPITOLA 10. LITERATURA
57
10 Literatura
[1] Jan Uhlíř - kol.: Technologie hlasových komunikací, Nakladatelství ČVUT, 2007.
[2] Josef Psutka - kol.: Mluvíme s počítačem česky, Academia, Praha, 2006.
[3] Young, S. - al.: The HTK Book (for HTK Version 3.4), Cambridge University Engineering
Department, Cambridge, GB, 2006.
[4] Brett Spell: Java programujeme profesionálně, Computer Press, CZ
[5] http://java.sun.com/docs/books/tutorial/deployment/applet/index.html: The Java Tutorials - Applets.
[6] [příloha CD] Dokumentace popisující činnost programu SEDemo vytvořená s pomocí Javadoc: /javadoc/sedemo/.
[7] [příloha CD] Dokumentace popisující činnost programu SCWP vytvořená s pomocí Javadoc: /javadoc/scwp/.
[8] Michael C. Daconta: When Runtime.exec() won’t - Navigate yourself around pitfalls
related to the Runtime.exec() method, JavaWorld.com (http://www.javaworld.com/
javaworld/jw-12-2000/jw-1229-traps.html), 2000.
[9] The Hidden Markov Model Toolkit (HTK): http://htk.eng.cam.ac.uk/download.shtml
[10] CtuCopy - univerzální nástroj pro zvýrazňování řeči a
http://noel.feld.cvut.cz/speechlab/start.php?page=download&lang=cz,
2006
parametrizaci:
Petr Fousek,
[11] Petr Fousek, Petr Pollák : Additive Noise and Channel Distortion-Robust Parametrization
Tool - Performance Evaluation on Aurora 2 & 3, EUROSPEECH 2003 [CD-ROM], Berlin:
ESCA, 2003, vol. 1, s. 63. ISSN 1018-4074.
[12] Jan Janeček - kol.: Distribuované systémy - cvičení, Vydavatelství ČVUT, 2002.
[13] Ian F. Darwin: Java - kuchařka programátora, Computer Press, Brno, 2006.
[14] Craig A. Lindley: Digital Audio with Java, Prentice Hall, 2000
[15] https://javahelp.dev.java.net/ : The JavaHelp system online help system.
[16] http://java.sun.com/products/java-media/jmf/ : The Java Media Framework API (JMF)
enables audio, video and other time-based media to be added to Java applications and
applets.
[17] Josef Rajnoha: Rozpoznávání řeči v reálných podmínkách na platformě standardního PC,
diplomová práce, 2006.
[18] http://noel.feld.cvut.cz/speechlab/start.php?page=demos&lang=cz&sub=sedemo : Demonstrace zvýrazňování a rozpoznávání řeči, Milan Václavík, 2008.
58
KAPITOLA 10. LITERATURA
PŘÍLOHA A. UŽIVATELSKÁ PŘÍRUČKA
59
A Uživatelská příručka
A.1
SEDemo
Obrázek A.1: Program SEDemo
Program SEDemo (na obrázku A.1) slouží k demonstraci zvýrazňování řeči. Ke správné
činnosti programu musejí být splněny tyto podmínky:
A.1.1
Nezbytné nastavení
• V domovském adresáři uživatele musí existovat soubor zásad zabezpečení pro spouštění apletu. (viz. kapitola 7.3.1).
• K lokálnímu počítači musí být připojen mikrofon, který je správně nastaven.
• Žádné zařízení v lokálním počítači nesmí přistupovat ke zvukové kartě, ke které je připojen
mikrofon (nesmí se přehrávat žádný zvuk, nahrávat data z mikrofonu a podobně) po dobu
používání programu SCWP.
• Zapnuté a funkční připojení k internetu.
• Nainstalovanou verzi Java JRE (SDK) 1.6 (6) a vyšší.
• WWW prohlížeč musí mít zapnutou podporu Javy.
A.1.2
Popis ovládání
Program SEDemo se skládá z několika částí, které lze vidět na obrázku A.2.
část 1. Hlavní ovládací menu — umožňuje načítat/ukládat audiosignál, přehrávání/nahrávání
audiosignálu, zobrazuje různé grafické průběhy vstupního a výstupního audiosignálu, nastavuje nahrávací vlastnosti mikrofonu, vybírá algoritmy pro zvýraznění řeči, umí změnit
60
PŘÍLOHA A. UŽIVATELSKÁ PŘÍRUČKA
Obrázek A.2: Popis program SEDemo
lokalizaci programu (česká – anglická), obsahuje integrovanou nápovědu k celému programu.
část 2. Ovládací panel tlačítek programu, která umožňují: ukládání vstupního nebo výstupního audiosignálu, načtení vstupního signálu, nahrávání signálu z mikrofonu, přehrávání
vstupního a výstupního signálu, pozastavení a ukončení přehrávání signálu. Poslední tři
ikony slouží zoomování grafických průběhů: zvětšení, zmenšení a zobrazení celého průběhu
v okně.
část 3. Místo pro zobrazení grafických průběhů. Podle přání uživatele se v okně zobrazí buď
jeden průběh a nebo dva průběhy. Program umožňuje zobrazovat vždy jen jedno okno
s grafickým průběhem signálu. Po nahrávání z mikrofonu nebo načtení audiosignálu ze
souboru se vždy automaticky zobrazí grafický průběh: Vstupní signál a vstupní spektrogram. Pokud s program nedokáže spojit se serverem, aby mohl zobrazit spektrogram, tak
se zobrazí pouze grafický průběh: Vstupní signál.
část 4. Zobrazený vstupní signál.
část 5. Zobrazený spektrogram vstupního signálu.
část 6. Informační panel, který zobrazuje aktuální informace o zobrazeném signálu: vzorkovací
frekvenci audiosignálu, použitý algoritmus zvýraznění řeči, počet zobrazených segmentů
a pásem spektrogramu (celkový počet na zobrazeném průběhu, interval právě zobrazených segmentů), počet kanálů zobrazeného audiosignálu (program pracuje pouze s mono
signály, pokud se načte stereo signál, tak dojde ke konverzi na mono), zobrazený časový
úsek celého zobrazeného průběhu a časy na jednotlivých krajích zobrazeného průběhu
signálu.
PŘÍLOHA A. UŽIVATELSKÁ PŘÍRUČKA
A.2
61
SCWP
Program SCWP je sada navzájem spolupracujících apletů, které umožňují hlasové ovládání
WWW stránek. Ke správné činnosti programů musejí být splněny tyto podmínky:
A.2.1
Nezbytné nastavení
• V domovském adresáři uživatele musí existovat soubor zásad zabezpečení pro spouštění apletu. (viz. kapitola 7.3.1).
• K lokálnímu počítači musí být připojen mikrofon, který je správně nastaven.
• Žádné zařízení v lokálním počítači nesmí přistupovat ke zvukové kartě, ke které je připojen
mikrofon (nesmí se přehrávat žádný zvuk, nahrávat data z mikrofonu a podobně) po dobu
používání programu SCWP.
• Zapnuté a funkční připojení k internetu.
• Nainstalovanou verzi Java JRE (SDK) 1.6 (6) a vyšší.
• WWW prohlížeč musí mít zapnutou podporu Javy a JavaScriptu.
A.2.2
Popis ovládání
Hlasové ovládání je demonstrováno na:
• Ovládání samotné WWW stránky:
Hlasový příkaz
dolu
nahoru
vpřed
zpět
hypertextový odkaz
Akce
Posun WWW stránky nahoru.
Posun WWW stránky dolu.
Posun vpřed v historii zobrazených WWW stránek.
Posun vzad v historii zobrazených WWW stránek.
Zobrazí WWW stránku, na kterou ukazuje hypertextový odkaz.
Tabulka A.1: Hlasové ovládání WWW stránky
• Hlasový výběr hypertextových odkazů. K vybrání hypertextového odkazu je třeba říci
celý hypertextový odkaz. Pouze skládá-li se hypertextový odkaz ze jména a příjmení, tak
daný hypertextový odkaz lze vybrat s pomocí jména, příjmení, jména a příjmení, příjmení
a jména.
• Simulace hlasového vytáčení telefonního čísla. Pod zobrazeným telefonním přístrojem se
nachází „displej“, který zobrazuje právě vytočené telefonní číslo. Telefonní číslo se zadává
celé najednou po jednotlivých číslicích ! Každé nově zadané číslo přemaže hodnotu na
displeji. Telefonní číslo se může skládat z číslovek 0 - 9 a ze znaků * (hvězdička) a #
(mřížka, hash). Telefonní číslo se může skládat z maximálně 12 znaků.
Na každé WWW stránce, na které se demonstruje hlasové ovládání se nachází v pravém
horním rohu aplet „hlasového ovládání“. V tomto apletu se zobrazuje stav „rozpoznávače“ a
poslední hlasový příkaz. Po každém zobrazení WWW stránky dojde k automatickému rozpoznávání hlasového příkazu (automatické nahrávání řeči mikrofonem). Toto nahrávání — rozpoznávání hlasového příkazu lze kdykoliv ukončit kliknutím myši na zobrazený stav rozpoznávače.
Opětovným kliknutím se spustí rozpoznávání hlasového povelu.
62
PŘÍLOHA A. UŽIVATELSKÁ PŘÍRUČKA
Následující tabulka A.2 zobrazuje možné stavy rozpoznávače, které jsou označeny textovým
popisem a různým barevným pozadím.
Popis
Rozpoznávač vypnut
Inicializace
Barva
Modrá
Červená
Očekávám příkaz
Detekována řeč
Rozpoznávám příkaz
Zelená
Zelená
Červená
Význam
Rozpoznávač je vypnut — hlasové ovládání nefunguje.
Inicializace rozpoznávače, nastavuje se práh citlivosti.
Tento práh určuje od jaké intenzity hlasitosti nahraného signálu bude detektor řeči indikovat platnou řeč
nebo ticho (pauzu).
Detektor řeči nezaznamenal žádnou řeč.
Detektor řeči zaznamenal řeč.
Rozpoznávač rozpoznává hlasový povel, po rozpoznání
příkazu provede odpovídající činnost. V této fázi je
nahrávání z mikrofonu vypnuto
Tabulka A.2: Stavy apletu hlasového vstupu
Hlasový příkaz je třeba zadávat pouze ve stavu rozpoznávače Očekávám příkaz (zelená
barva pozadí). Pokud se začne mluvit v jiné stavu, tak hlasový povel nebude zaznamenán celý
a nedojde k jeho správnému rozpoznání.
Pokud se začne mluvit ve fázi inicializace, tak se nastaví příliš vysoká mez pro detekci řeči,
poté bude třeba říci hlasový příkaz mnohem více nahlas, jinak detektor nezaznamená hlasový
povel.
Pokud detektor řeči detekuje řeč, aniž by došlo ke skutečné promluvě, lze ve fázi Detekována
řeč (zelené pozadí) říci požadovaný příkaz, jelikož hlasový příkaz zastíní šum, na který reagoval
detektor řeči.
Detektor řeči umožňuje zadat hlasový povel o maximální době 10 sekund. Poté se ukončí
nahrávání příkazu a začne se vyhodnocovat zadaný hlasový příkaz.
Jednotlivé změny stavu rozpoznávače řeči se neprovádí okamžitě, ale s menší prodlevou.
Správnost rozpoznání hlasového příkazu také závisí na nastavení mikrofonu. Je-li u mikrofonu nastavená příliš nízká citlivost nahrávání, tak detektor řeči bude špatně detekovat řeč.
Bude-li nastavena příliš vysoká citlivost řeči, tak detektor řeči bude detekovat řeč při každém
sebemenším zvuku — rozpoznávač pak budete rozpoznávat šum nebo dojde k velikému zkreslení
nahrané řeči, která bude přebuzená a rozpoznávač rozpozná špatný příkaz.
PŘÍLOHA B.
VYPRACOVANÉ USEABILITY TESTY
B Vypracované useability testy
B.1
Vyplněné testy od 1. uživatele
B.1.1
Dotazník
1. Používáte počítač
[
] nikdy, nikde
[X ] doma
[
] v práci
[X ] ve škole
[
] jinde, kde ? . . . . . . . . .
2. Jak dlouho počítač používáte? 10 let
3. Kolik času u počítače strávíte?
[
] méně než hodinu týdně
[
] hodinu až pět hodin týdně
[X ] hodinu až pět hodin denně
[
] více než pět hodin denně
4. Za jakým účelem PC používáte?
[
] programování
[X ] přístup k internetu/emailu
[X ] kancelářská práce (psaní dokumentů)
[X ] hraní her
[X ] používání multimediálních programů
[
] jiný, jaký ? . . . . . . . . .
5. Chtěl by jste mít možnost ovládat PC hlasem ?
[X ] ano
[
] ne
6. Měl byste zájem zúčastnit se testování internetové aplikace
[X ] ano
[
] ne
7. Který den v týdnu a v kolik hodin máte čas ? (test může trvat 20. . .30 minut)
[
] pondělí, čas . . . . . . . . .
[
] úterý, čas . . . . . . . . .
[
] středa, čas . . . . . . . . .
[
] čtvrtek, čas . . . . . . . . .
[
] pátek, čas . . . . . . . . .
[X ] sobota, čas 16:30
[
] neděle, čas . . . . . . . . .
63
64
PŘÍLOHA B.
B.1.2
B.1.2.1
VYPRACOVANÉ USEABILITY TESTY
Post-test
Post-test — SEDemo
1. Jak se Vám líbila webová aplikace SEDemo ?
(Zakroužkujte svou volbu - číslo)
(velmi pěkná) 1
2 3 4 5 (hrozná)
2. Ovládání aplikace je:
(Zakroužkujte svou volbu - číslo)
(jednoduché)
1 2 3 4 5 (složité)
3. Co by jste nejraději změnil a proč ?
Grafika — nízká kvalita ovládacích ikon.
Pomalé vykreslování (menu — položek menu).
4. Jaká část aplikace byla pro Vás složitá, nepřehledná a proč ?
B.1.2.2
Post-test — SCWP
1. Jak se Vám líbilo hlasové ovládání WWW stránek ?
(Zakroužkujte svou volbu - číslo)
(velmi pěkné) 1 2
3 4 5 (hrozné)
2. Ovládání je:
(Zakroužkujte svou volbu - číslo)
(jednoduché)
1 2 3 4 5 (složité)
3. Co by jste nejraději změnil a proč ?
Ne vždy 100% úspěšnost při vytáčení čísel.
Potíže při vrácení WWW stránky „zpět“ na stránce s telefonem.
Potíže se zobrazením informací o osobě „Jan“.
4. Jaká část aplikace byla pro Vás složitá, nepřehledná a proč ?
PŘÍLOHA B.
B.2
VYPRACOVANÉ USEABILITY TESTY
Vyplněné testy od 2. uživatele
B.2.1
Dotazník
1. Používáte počítač
[
] nikdy, nikde
[X ] doma
[X ] v práci
[X ] ve škole
[
] jinde, kde ? . . . . . . . . .
2. Jak dlouho počítač používáte? 15 let
3. Kolik času u počítače strávíte?
[
] méně než hodinu týdně
[X ] hodinu až pět hodin týdně
[
] hodinu až pět hodin denně
[
] více než pět hodin denně
4. Za jakým účelem PC používáte?
[
] programování
[X ] přístup k internetu/emailu
[X ] kancelářská práce (psaní dokumentů)
[X ] hraní her
[X ] používání multimediálních programů
[
] jiný, jaký ? . . . . . . . . .
5. Chtěl by jste mít možnost ovládat PC hlasem ?
[X ] ano
[
] ne
6. Měl byste zájem zúčastnit se testování internetové aplikace
[X ] ano
[
] ne
7. Který den v týdnu a v kolik hodin máte čas ? (test může trvat 20. . .30 minut)
[X ] pondělí, čas 14:50
[
] úterý, čas . . . . . . . . .
[
] středa, čas . . . . . . . . .
[
] čtvrtek, čas . . . . . . . . .
[
] pátek, čas . . . . . . . . .
[
] sobota, čas . . . . . . . . .
[
] neděle, čas . . . . . . . . .
65
66
PŘÍLOHA B.
B.2.2
B.2.2.1
VYPRACOVANÉ USEABILITY TESTY
Post-test
Post-test — SEDemo
1. Jak se Vám líbila webová aplikace SEDemo ?
(Zakroužkujte svou volbu - číslo)
(velmi pěkná) 1 2
3 4 5 (hrozná)
2. Ovládání aplikace je:
(Zakroužkujte svou volbu - číslo)
(jednoduché) 1
2 3 4 5 (složité)
3. Co by jste nejraději změnil a proč ?
Nepřehledné menu.
4. Jaká část aplikace byla pro Vás složitá, nepřehledná a proč ?
viz. bod 3.
B.2.2.2
Post-test — SCWP
1. Jak se Vám líbilo hlasové ovládání WWW stránek ?
(Zakroužkujte svou volbu - číslo)
(velmi pěkné)
1 2 3 4 5 (hrozné)
2. Ovládání je:
(Zakroužkujte svou volbu - číslo)
(jednoduché)
1 2 3 4 5 (složité)
3. Co by jste nejraději změnil a proč ?
Potíže při vrácení WWW stránky „zpět“ na stránce s telefonem, častá záměna s číslem 5.
4. Jaká část aplikace byla pro Vás složitá, nepřehledná a proč ?
PŘÍLOHA B.
B.3
VYPRACOVANÉ USEABILITY TESTY
Vyplněné testy od 3. uživatele
B.3.1
Dotazník
1. Používáte počítač
[
] nikdy, nikde
[X ] doma
[X ] v práci
[
] ve škole
[
] jinde, kde ? . . . . . . . . .
2. Jak dlouho počítač používáte? 3 roky
3. Kolik času u počítače strávíte?
[
] méně než hodinu týdně
[X ] hodinu až pět hodin týdně
[
] hodinu až pět hodin denně
[
] více než pět hodin denně
4. Za jakým účelem PC používáte?
[
] programování
[
] přístup k internetu/emailu
[X ] kancelářská práce (psaní dokumentů)
[
] hraní her
[
] používání multimediálních programů
[
] jiný, jaký ? . . . . . . . . .
5. Chtěl by jste mít možnost ovládat PC hlasem ?
[X ] ano
[
] ne
6. Měl byste zájem zúčastnit se testování internetové aplikace
[X ] ano
[
] ne
7. Který den v týdnu a v kolik hodin máte čas ? (test může trvat 20. . .30 minut)
[X ] pondělí, čas 15:40
[
] úterý, čas . . . . . . . . .
[
] středa, čas . . . . . . . . .
[
] čtvrtek, čas . . . . . . . . .
[
] pátek, čas . . . . . . . . .
[
] sobota, čas . . . . . . . . .
[
] neděle, čas . . . . . . . . .
67
68
PŘÍLOHA B.
B.3.2
B.3.2.1
VYPRACOVANÉ USEABILITY TESTY
Post-test
Post-test — SEDemo
1. Jak se Vám líbila webová aplikace SEDemo ?
(Zakroužkujte svou volbu - číslo)
(velmi pěkná) 1 2
3 4 5 (hrozná)
2. Ovládání aplikace je:
(Zakroužkujte svou volbu - číslo)
(jednoduché) 1
2 3 4 5 (složité)
3. Co by jste nejraději změnil a proč ?
Jiná ikona lupy — současná je nevýrazná, nic neříkající.
4. Jaká část aplikace byla pro Vás složitá, nepřehledná a proč ?
Zvětšování grafických průběhů.
B.3.2.2
Post-test — SCWP
1. Jak se Vám líbilo hlasové ovládání WWW stránek ?
(Zakroužkujte svou volbu - číslo)
(velmi pěkné) 1
2 3 4 5 (hrozné)
2. Ovládání je:
(Zakroužkujte svou volbu - číslo)
(jednoduché) 1 2
3 4 5 (složité)
3. Co by jste nejraději změnil a proč ?
Potíže při vrácení WWW stránky „zpět“ na stránce s telefonem.
Rychlost — dlouho to trvá, než se provede nějaký příkaz“.
4. Jaká část aplikace byla pro Vás složitá, nepřehledná a proč ?
PŘÍLOHA B.
B.4
VYPRACOVANÉ USEABILITY TESTY
Vyplněné testy od 4. uživatele
B.4.1
Dotazník
1. Používáte počítač
[
] nikdy, nikde
[X ] doma
[X ] v práci
[X ] ve škole
[
] jinde, kde ? . . . . . . . . .
2. Jak dlouho počítač používáte? 17 let
3. Kolik času u počítače strávíte?
[
] méně než hodinu týdně
[
] hodinu až pět hodin týdně
[
] hodinu až pět hodin denně
[X ] více než pět hodin denně
4. Za jakým účelem PC používáte?
[X ] programování
[X ] přístup k internetu/emailu
[X ] kancelářská práce (psaní dokumentů)
[X ] hraní her
[X ] používání multimediálních programů
[
] jiný, jaký ? . . . . . . . . .
5. Chtěl by jste mít možnost ovládat PC hlasem ?
[X ] ano
[
] ne
6. Měl byste zájem zúčastnit se testování internetové aplikace
[X ] ano
[
] ne
7. Který den v týdnu a v kolik hodin máte čas ? (test může trvat 20. . .30 minut)
[
] pondělí, čas . . . . . . . . .
[X ] úterý, čas 16:30
[
] středa, čas . . . . . . . . .
[
] čtvrtek, čas . . . . . . . . .
[
] pátek, čas . . . . . . . . .
[
] sobota, čas . . . . . . . . .
[
] neděle, čas . . . . . . . . .
69
70
PŘÍLOHA B.
B.4.2
B.4.2.1
VYPRACOVANÉ USEABILITY TESTY
Post-test
Post-test — SEDemo
1. Jak se Vám líbila webová aplikace SEDemo ?
(Zakroužkujte svou volbu - číslo)
(velmi pěkná) 1
2 3 4 5 (hrozná)
2. Ovládání aplikace je:
(Zakroužkujte svou volbu - číslo)
(jednoduché)
1 2 3 4 5 (složité)
3. Co by jste nejraději změnil a proč ?
Občas problémy během přehrávání — zpomalení celého systému.
Nejednoznačná možnost přehrávání výstupního signálu.
4. Jaká část aplikace byla pro Vás složitá, nepřehledná a proč ?
Přehrávání výstupního signálu — viz bod 3.
B.4.2.2
Post-test — SCWP
1. Jak se Vám líbilo hlasové ovládání WWW stránek ?
(Zakroužkujte svou volbu - číslo)
(velmi pěkné)
1 2 3 4 5 (hrozné)
2. Ovládání je:
(Zakroužkujte svou volbu - číslo)
(jednoduché)
1 2 3 4 5 (složité)
3. Co by jste nejraději změnil a proč ?
Občasné „zamrznutí prohlížeče“.
4. Jaká část aplikace byla pro Vás složitá, nepřehledná a proč ?
PŘÍLOHA C.
OBSAH PŘILOŽENÉHO CD
71
C Obsah přiloženého CD
/javadoc/* Tento adresář obsahuje vygenerovanou dokumentaci, programů SEDemo a SCWP,
s pomocí programu javadoc. Tato dokumentace dokumentuje zdrojové kódy programů.
/klient/* Tento adresář obsahuje binární kódy programů SEDemo a SCWP spolu s doplňujícími soubory, které se nahrají na webový server — vytvářejí demonstrační WWW
stránky, na kterých je předvedena činnost těchto apletů.
/scwp/* Zdrojové soubory programu SCWP.
/sedemo/* Zdrojové soubory programu SEDemo.
/server/* Tento adresář obsahuje instalační soubory serveru SEDemo a SCWP, které se nahrají na webový server. Tyto adresáře obsahují konfiguračních soubory pro činnost externích programů.
/text/* Tento adresář obsahuje text diplomové práce uložený v PDF souboru.
install.txt Tento soubor obsahuje návod pro instalaci programů SEDemo a SCWP.
readme.txt Tento soubor obsahuje popis ovládání programů SEDemo a SCWP. Také obsahuje
podrobnější popis jednotlivých souborů na přiloženém CD.