Testovanie akustických modelov predstavuje vlastne rozpoznávanie reči, kedy s využitím natrénovaného znalostného zdroja (akustického modelu) a dekodéra hľadáme kombináciu slov, ktorá s najväčšou pravdepodobnosťou zodpovedá vstupnému rečovému signálu (testovacej nahrávke). Ako už bolo spomenuté, na testovanie sa používajú modely z poslednej iterácie trénovania, čomu v našom prípade zodpovedajú modely z druhej iterácie, s príponou *_2.mmf
, pričom ostatné - nepotrebné sa neskôr vymažú. Pripomíname, že testovanie prebieha s využitím testovacej množiny nahrávok, ktorá je reprezentovaná priečinkom features_test/
.
Z hľadiska počtu Gaussovych zmesí je potrebné poznamenať, že na hlavné rozpoznávanie (napr. prebiehajúce v reálnom systéme rozpoznávania) sa väčšinou používajú modely s vyšším počtom zmesí. V prípade rozpoznávania založenom na fonémach (náš prípad) sa obvykle využívajú zmesi v rozsahu 128 až 512. Nižšie počty produkujú nižšie úspešnosti, nakoľko dané modely nie sú veľmi presné (sú potrebné len na vytvorenie modelov s vyšším počtom zmesí s cieľom zvýšenia ich presnosti). Vyššie počty zmesí ako 512 môžu síce generovať presnejší výstup, avšak za cenu výrazného spomalenia procesu rozpoznávania, pretože je nutné pri rozpoznávaní oskórovať vstupné príznakové vektory s veľmi vysokým počtom stavov pre jednotlivé zmesi a fonémy. Z praxe je navyše známe, že ďalšie zvyšovanie počtu zmesí už ďalšie zvyšovanie úspešnosti nemusí vôbec zabezpečiť (nastáva stav nasýtenia). V prípade rozpoznávania založenom na kontextovo-závislých fonémach (trifónach) sa v praxi využíva najčastejšie 32-zmesový akustický model.
Testovanie sa obyčajne spúšťa separátnymi príkazmi, ktoré môžu byť vo všeobecnosti veľmi dlhé, nakoľko je potrebné dekodéru zadať niekoľko vstupných parametrov. Pri takomto postupe je možné sa ľahko pomýliť. Z toho dôvodu boli na testovanie zavedené spustiteľné súbory, ktoré si používateľ vygeneruje automaticky. Tieto už obsahujú všetky potrebné volania súborov, súčastí a ich vstupných parametrov, čím sa zabezpečí eliminácia vzniku chyby. Používateľ pri testovaní už len spúšťa dané súbory pre zvolené počty zmesí a čaká na výsledok.
V našom prípade, kedy testujeme modely v rozsahu počtu zmesí 1 - 256, máme k dispozícii niekoľko spustiteľných súborov na testovanie, ktoré boli vygenerované spustením súboru makefile
pred začatím trénovania. Tieto spustiteľné súbory majú názov v tvare recognition*.bat
, kde symbol *
reprezentuje testovaný počet zmesí, resp. rozsah zmesí. V našom prípade máme k dispozícii konkrétne tieto spustiteľné súbory na testovanie:
recognition1-16.bat
recognition128.bat
recognition1-4.bat
recognition16.bat
recognition1.bat
recognition256.bat
recognition2.bat
recognition32-256.bat
recognition32.bat
recognition4.bat
recognition64-256.bat
recognition64.bat
recognition8-32.bat
recognition8.bat
recognition.bat
Z tohto výpisu je zrejmé, že testovací proces si môže používateľ manažovať sám, aj podľa dostupných výpočtových kapacít na danom serveri. Ak využije režimy screen
systému OS Unix/Linux, v tom prípade môže spustiť viac rozpoznávaní súčasne, každé na inom jadre CPU. Inak je testovací proces jednojadrový. Tzn., že môže spustiť jeden proces pre každú Gaussovu zmes (recognition1.bat
, recognition2.bat
, recognition4.bat
, atď.), resp. môže spustiť testovanie v dávkovom režime, napr. pre 1 - 16 zmesí príkazom recognition1-16.bat
, a pod. Ak nie sú dostupné výpočtové kapacity, testovanie nie je naliehavé alebo sa testuje viacero rôznych modelov súčasne, stačí spustiť príkaz:
$ ./recognition.bat
,
ktorý zabezpečí otestovanie všetkých akustických modelov pre všetky počty Gaussovych zmesí. Tento dávkový spustiteľný súbor obsahuje nasledovné príkazy (ostatné súbory obsahujú len výber z tejto množiny príkazov pre daný počet zmesí):
HVite -C rec.cfg -H workdir1/model_alignModel_MFCC_0_D_A_Z.1_2.mmf -S testlist_par.scp -l '*' -i mfforiginal.1.mlf -t 400.0 -u 3072 -v 200.0 -s 12.0 -p -8.0 -T 1 -w testwdnet_parlament slovnik.dic config/phonemes.lis
HVite -C rec.cfg -H workdir1/model_alignModel_MFCC_0_D_A_Z.2_2.mmf -S testlist_par.scp -l '*' -i mfforiginal.2.mlf -t 400.0 -u 3072 -v 200.0 -s 12.0 -p -8.0 -T 1 -w testwdnet_parlament slovnik.dic config/phonemes.lis
HVite -C rec.cfg -H workdir1/model_alignModel_MFCC_0_D_A_Z.4_2.mmf -S testlist_par.scp -l '*' -i mfforiginal.4.mlf -t 400.0 -u 3072 -v 200.0 -s 12.0 -p -8.0 -T 1 -w testwdnet_parlament slovnik.dic config/phonemes.lis
HVite -C rec.cfg -H workdir1/model_alignModel_MFCC_0_D_A_Z.8_2.mmf -S testlist_par.scp -l '*' -i mfforiginal.8.mlf -t 400.0 -u 3072 -v 200.0 -s 12.0 -p -8.0 -T 1 -w testwdnet_parlament slovnik.dic config/phonemes.lis
HVite -C rec.cfg -H workdir1/model_alignModel_MFCC_0_D_A_Z.16_2.mmf -S testlist_par.scp -l '*' -i mfforiginal.16.mlf -t 400.0 -u 3072 -v 200.0 -s 12.0 -p -8.0 -T 1 -w testwdnet_parlament slovnik.dic config/phonemes.lis
HVite -C rec.cfg -H workdir1/model_alignModel_MFCC_0_D_A_Z.32_2.mmf -S testlist_par.scp -l '*' -i mfforiginal.32.mlf -t 400.0 -u 3072 -v 200.0 -s 12.0 -p -8.0 -T 1 -w testwdnet_parlament slovnik.dic config/phonemes.lis
HVite -C rec.cfg -H workdir1/model_alignModel_MFCC_0_D_A_Z.64_2.mmf -S testlist_par.scp -l '*' -i mfforiginal.64.mlf -t 400.0 -u 3072 -v 200.0 -s 12.0 -p -8.0 -T 1 -w testwdnet_parlament slovnik.dic config/phonemes.lis
HVite -C rec.cfg -H workdir1/model_alignModel_MFCC_0_D_A_Z.128_2.mmf -S testlist_par.scp -l '*' -i mfforiginal.128.mlf -t 400.0 -u 3072 -v 200.0 -s 12.0 -p -8.0 -T 1 -w testwdnet_parlament slovnik.dic config/phonemes.lis
HVite -C rec.cfg -H workdir1/model_alignModel_MFCC_0_D_A_Z.256_2.mmf -S testlist_par.scp -l '*' -i mfforiginal.256.mlf -t 400.0 -u 3072 -v 200.0 -s 12.0 -p -8.0 -T 1 -w testwdnet_parlament slovnik.dic config/phonemes.lis
Tieto príkazy obsahujú už známe, horeopísané súbory a priečinky a ďalšie prepínače nástroja HVite
, ktoré zabezpečia optimálne nastavenie rozpoznávania. Tento nástroj predstavuje Viterbiho dekodér.
Výstupom rozpoznávania pre dané počty zmesí sú súbory mfforiginal.*.mlf
, kde symbol *
opäť reprezentuje testovaný počet zmesí. Výpis týchto súborov po skončení úplného testovania je nasledovný:
mfforiginal.128.mlf
mfforiginal.16.mlf
mfforiginal.1.mlf
mfforiginal.256.mlf
mfforiginal.2.mlf
mfforiginal.32.mlf
mfforiginal.4.mlf
mfforiginal.64.mlf
mfforiginal.8.mlf
Ak sa pozrieme na obsah týchto súborov, je zrejmé, že obsahujú hlavičku súboru, názov rozpoznávanej nahrávky, rozpoznaný text, spolu s časovými značkami v stovkách nanosekúnd a príslušné akustické skóre pre dané slovo:
#!MLF!#
"*/par001s0030.rec"
700000 2100000 že -1108.086182
2100000 4100000 sa -1515.902710
4100000 9600000 navrhuje -3722.974854
9600000 20000000 zákone -6932.338867
20000000 22800000 aby -2066.940186
22800000 29200000 orgán -4251.462891
29200000 33600000 ochrany -3250.321045
33600000 45700000 prírody -7827.471680
55400000 57000000 a -1199.708252
57000000 58700000 do -1374.663818
58700000 63600000 tridsať -3503.771729
63600000 70200000 dní -4130.488770
70200000 80300000 nerozhodne -6703.827148
.
Správnosť týchto rozpoznaných sekvencií slov sa vďalšom kroku evaluácie vyhodnocuje porovnaním s referenčným (správnym) prepisom a vypočíta sa presnosť (úspešnosť) rozponávania pre daný počet zmesí.
Za účelom evaluácie vytvorených akustických modelov bol zvolený parameter chybovosť rozpoznávania (v angl. word error rate, skr. WER), ktorý je doplnkovou hodnotou k úspešnosti rozpoznávania (v angl. accuracy, skr. Acc.) v percentách, ktorá bola vypočítaná nasledovne:
$$ Acc. = \frac{H-I}{N}\times 100\%,$$
kde symbol $H$ vyjadruje počet správne rozpoznaných slov, $I$ je počet vložených chýb (v angl. insertions) a $N$ je počet všetkých referenčných slov. Výsledný parameter WER bol teda vypocítaný:
$$ WER=100(\%)-Acc.$$
Po získaní súborov s rozpoznaným obsahom je potrebné vygenerovaný prepis vyhodnotiť výsledky je vhodné zhromaždiť, napr. vo forme tabuliek v XLS súbore. Evaluácia sa vykonáva po skončení všetkých testov, pre všetky počty Gaussovych zmesí, inak vyhodnocovací skript indikuje chybu. Vyhodnotenie sa spúšťa príkazom:
$ ./evaluate.bat
,
ktorý volá hlavný vyhodnocovací PERL skript mlfcompare.pl
. Jeho skrátený obsah vyzerá nasledovne:
./mlfcompare.pl parlament_test_ref.mlf mfforiginal.1.mlf > vysledok1
./mlfcompare.pl parlament_test_ref.mlf mfforiginal.2.mlf > vysledok2
./mlfcompare.pl parlament_test_ref.mlf mfforiginal.4.mlf > vysledok4
.
.
./mlfcompare.pl parlament_test_ref.mlf mfforiginal.256.mlf > vysledok256
Z uvedeného vyplýva, že tento skript porovnáva referenčné (správne) sekvencie slov s rozpoznanými sekvenciami (hypotézami). Výsledkom porovnávania sú súbory
vysledok1
vysledok2
vysledok4
.
.
vysledok256
s vyznačenými chybami a výsledkami na konci súboru. Pre zaujímavosť, skrátený obsah týchto súborov má nasledovnú syntax:
Subor: "*/par001s0030"
REF: že sa navrhuje v zákone aby orgán ochrany prírody ak do tridsať dní nerozhodne
HYP: že sa navrhuje <del> zákone aby orgán ochrany prírody a dvetisíc ani <del> nerozhodne
--------------------------------------------------------------
ACC: 0.642857142857143
Words: 14 Matches: 9
WER: 0.357142857142857
Errors: 5 (Sub: 3, Ins: 0, Del: 2)
--------------------------------------------------------------
kde je možné vidieť, v ktorej časti vety nastala vzhľadom na referenciu pri rozpoznávaní chyba a o aký typ chyby sa jedná. V ďalšej časti je uvedený výsledok úspešnosti prepisu danej vety vzhľadom na stav detegovaných chýb. Na úplnom konci výsledkového súboru pre daný počet zmesí sa nachádza globálne vyhodnotenie pre všetky vety v testovacej množine:
Total:
------
Words: 8776 Matches: 7328 Errors: 1521 (Sub: 778, Del: 670, Ins: 73)
WERsclite: 17.33% Correct: 83.50% AccSclite: 82.67%
Pocet viet: 884 a nenajdenych 0
####################################################################
WER: 0.174501485424779
Acc: 0.836116496540023
####################################################################
Tieto výsledkové súbory je možné priamo použiť na ďalšie spracovanie. Kvôli uľahčeniu postupu spracovania výsledkov skript evaluate.bat
ďalej volá matlabovský skript results.m
:
go.matlab:
/opt/matlab/bin/matlab -nodisplay -nodesktop -nosplash -r results
ktorý vyparsuje číselné výsledky z vygenerovaných súborov a naformátuje ich do tabuľky, ktorú je možné priamo vložiť napr. do súboru MS Excel. Forma je nasledovná:
Model_MFCC_0_D_A_Z
1 41.20 62.38
2 39.29 64.18
4 36.98 66.26
8 35.95 67.27
16 35.30 67.92
32 34.18 68.87
64 33.44 69.52
128 33.42 69.69
256 32.44 70.53
kde tabuľka začína názvom akustického modelu, ktorý sme určili v úvode experimentu, resp. názov je totožný s menom priečinka, v ktorom celý experiment prebehol. Prvý stĺpec predstavuje vyhodnocované počty zmesí, druhý stĺpec sú hodnoty chybovosti WER v percentách a tretí stĺpec sú hodnoty úspešnosti Acc. v percentách. Vygenerovaná tabuľka je automaticky uložená do textového súboru, ktorý má názov results_nazovmodelu
, napr. results_Model_MFCC_0_D_A_Z
.