Cieľom tohto cvičenia je v nadväznosti na predchádzajúce cvičenie natrénovanie akustických modelov na rozpoznávanie spojitej reči s veľkým slovníkom. Na tento účel opäť využijeme nástroj HTK. Aj v tomto cvičení využujeme rovnaký prístup na modelovanie slov fonémami, avšak ich počet bude oveľa väčší. Postup modelovania pomocou 5-stavového HMM modelu ostáva rovnaký.
Pred samotným procesom trénovania akustických modelov pre spojitú reč je potrebné pripraviť nasledovné súbory a dodržať štruktúru priečinkov.
config/
, v ktorom sa nachádzajú nasledovné súbory:
mix2.hed
, mix4.hed
, mix8.hed
, mix16.hed
, mix32.hed
, mix64.hed
, mix128.hed
a mix256.hed
;
HHEd
z nástroja HTK;phonemes.lis
predstavuje zoznam všetkých slovenských foném, pre ktoré sa má natrénovať akustický model;
proto.hmm
, ktorý predstavuje prototyp skrytého Markovovho modelu
reest.cfg
, ktorý je použitý v tzv. reestimačnom procese;
TARGETKIND
, ktorý špecifikuje cieľový druh akustického modelu;TARGETKIND
, ktorý bol použitý pri extrakcii rečových príznakov a je uvedený aj v hlavičke súboru proto.hmm
konfiguračný súbor rec.cfg
sa používa v procese rozpoznávania (v angl. recognition);
reest.cfg
obsahuje prídavné parametre súvisiace so slovníkom:
STARTWORD = <s>
ENDWORD = </s>
features_test/
, ktorý obsahuje testovaciu množinu vo forme parametrizovaných rečových nahrávok, najčastejsie v MFCC (v angl. mel-frequency cepstral coefficients) formáte;features_train/
, ktorý obsahuje trénovaciu množinu vo forme parametrizovaných rečových nahrávok, najčastejsie v MFCC formáte;súbor slovnik.dic
predstavuje slovník výslovnosti rozpoznávaných slov (obsahuje zoznam slov s prislúchajúcou fonetickou sekvenciou/transkripciou):
adepti a d e p c i sp
adeptov a d e p t o u sp
adhéznom a d h e: z n o m sp
adjektíva a d j e k t i: v a sp
adjektívum a d j e k t i: v u m sp
administratív a d m i n i s t r a t i: v sp
administratív a d m i n i s t r a t i: u sp
administratíva a d m i n i s t r a t i: v a sp
administratíve a d m i n i s t r a t i: v e sp
testwdnet_parlament
predstavuje slovnú sieť vytvorenú zo všetkých slov nachádzajúcich sa v trénovaní;align.mlf
, ktorý obsahuje časové zarovnania všetkých foném v jednotlivých trénovacích nahrávkach;
phones0.mlf
, ale navyše obsahuje aj časové údaje (v stovkách nanosekúnd);align.mlf
pre vyslovené slová "ďakujem pekne pani poslankyňa ... do rozpravy ústne" je ukázaná tu; sp
(krátkou pauzou);parlament_test_ref.mlf
so správnymi sekvenciami slov (je porovnávaný s výstupom z rozpoznávania pomocou programu mlfcompare.pl
);AddTeeModel
, ktorý sa použije na modelovanie krátkej tichej pauzy (v angl. short pause, skratka sp
) medzi slovami;DeleteModels
, ktorý volá matlabovský súbor delete_models.m
a slúži na automatické vymazanie nepotrebných akustických modelov, ktoré vznikli v jednotlivých (nie finálnych) trénovacích iteráciách; delete_models.m
, ktorý je volaný súborom DeleteModels
(bol spomenutý vyššie) - vymaže nepotrebné akustické modely;evaluate.bat
vykonáva evaláciu (vyhodnotenie) úspešnosti rozpoznaného textu v súboroch;
results.m
generate_train_and_recognition_commands_parlament.m
generuje všetky potrebné príkazy na spustenie trénovania a rozpoznávania v rôznych variantoch;makefile
, ktorým sa súšťa generovanie spustiteľných súborov obsahujúcich príkazy na trénovanie a rozpoznávanie (pomocou zmieneného m-súboru generate_train_and_recognition_commands_parlament.m
);mlfcompare.pl
vyhodnocuje úspešnosť rozpoznaného textu porovnaním rozpoznaných viet/slov s referenčnými;
evaluate.bat
;reestimate.pl
predstavuje jadro trénovacieho skriptu v jazyku PERL, umožňuje rozdelenie trénovacieho procesu na viac jadier/procesorov súčasne, čím sa trénovanie modelov výrazne zrýchli;matlabovský súbor results.m
parsuje číselné výsledky zo súborov, ktoré vznikli pri vyhodnotení rozpoznaného textu (je volaný spustiteľným súborom evaluate.bat
);
trenuj_e_parlament_sp.pl
vykonáva trénovanie (inicializáciu akustických modelov a zároveň aj ich reestimáciu);trenuj_e_parlament_sp_herest.pl
vykonáva len proces reestimácie modelov;trenuj_e_parlament_sp_init.pl
vykonáva len inicializáciu modelov (pozn. tieto skripty sa využijú podľa toho, ktorú fázu trénovania potrebujeme vykonať).logs/
, do ktorého sa budú priebežne ukladať logovacie súbory obsahujúce záznamy o priebehu trénovania;workdir1
(obsahuje len jednoduchý skript sil.hed
modulu HHEd
), do ktorého sa budú počas trénovania priebežne ukladať vytvorené akustické modely podľa počtu použitých Gaussovych zmesí na základe horeuvedených súborov mix*.hed
;testlist_par.scp
obsahuje zoznam testovacích nahrávok umiestnených v priečinku features_test/
, ktorý je potrebné pripraviť vždy podľa aktuálnej testovacej množiny;Výsledná súborová štruktúra priečinka, v ktorom sa bude vytvárať akustický model vyzerá nasledovne:
Trénovací proces využíva vždy len trénovaciu množinu dát, ktorá je reprezentovaná priečinkom features_train/
. Trénovanie celkovo pozostáva z dvoch na seba nadväzujúcich fáz:
Pred samotným spustením trénovanie je nutné sa presvedčiť, či máme k dispozícii všetky potrebné súčasti (súbory, priečinky a skripty), ktoré boli opísané vyššie. Bez ktorejkoľvek nutnej súčasti trénovací proces neprebehne korektne alebo ho ani nebude možné spustiť. Po kontrole je možné si vygenerovať všetky spustiteľné súbory na spustenie trénovania spustením súboru makefile
. Proces je možné spúšťať po častiach (je potrebný manažment používateľa) alebo sa celý proces spustí jedným skriptom, t.j. ovládanie sa zabezpečí nasledovnými vygenerovanými spustiteľnými *.bat
súbormi, ktoré v sebe zahŕňajú všetky ich potrebné vstupné argumenty:
trenuj.bat
- spúšťa kompletné trénovanie (inicializácia aj reestimácia; nie je potrebný manažment používateľa);trenuj_herest.bat
– obsluhuje len reestimáciu (je možné ho spustiť jedine po natrénovaní inicializačných modelov);trenuj_init.bat
- spúšťa trénovanie len inicializačných modelov (ním začína trénovací proces).Ako bolo spomenuté, nezávisle od manažmentu trénovacích skriptov, trénovanie začína inicializačnou fázou spustením príslušného spustiteľného súboru v príkazovom riadku nasledovne:
$ ./trenuj_init.bat
alebo
$ ./trenuj.bat
.
Trénovací proces fyzicky začína vytvorením zoznamu trénovacích nahrávok trainlist.lst
, ktoré máme uložené v priečinku features_train/
. Tento krok môže trvať aj niekoľko minút, v závislosti od aktuálneho počtu súborov. Po vytvorení zoznamu sa začína inicializačný proces, ktorý je indikovaný vypisovaním názvu jednotlivých modelov na štandardný výstup (obrazovku). Tento proces trvá s aktuálnou veľkosťou databáza približne 5 hodín, pričom inicializácia modelov prebieha na jednom jadre CPU, t.j. nie je v tomto nastavení paralelizovaná. Počas tohto procesu sa priečinky logs/
a workdir1/
priebežne napĺňajú .
Po ukončení inicializačnej fázy trénovania nasleduje reestimácia vytvorených modelov, ktorú manuálne spustíme príkazom:
$ ./trenuj_herest.bat
,
resp. reestimácia pokračuje automaticky po inicializácii, ak bolo spustené kompletné trénovanie. Reestimačný proces medzi inými volá PERL skript reestimate.pl
, ktorý je zodpovedný za paralelizáciu trénovania v reestimačnej fáze. V tomto skripte je potrebné pred začatím trénovania explicitne nastaviť počet jadier CPU, koľko má byť využitých pri reestimačných výpočtoch. Túto možnosť nastavíme pomocou parametra $MinimumParallel
priamo v skripte:
$MinimumParallel = 4; # Minimum number of parallel training processes
Hodnotu tohto parametra odporúčame voliť s ohľadom na aktuálne dostupné jadrá CPU daného servera, na ktorom trénovanie prebieha. Je zrejmé, že na väčšom počte jadier trénovací proces prebehne skôr.
Výsledkom trénovacieho procesu sú akustické modely s rôznymi počtami Gaussovych zmesí (v našom prípade je to 1 – 256 zmesí). Modelmi rozumieme nasledovné súbory v priečinku workdir1/
:
model_alignnazovmodelu.1_0.mmf model_alignnazovmodelu.1_1.mmf model_alignnazovmodelu.1_2.mmf model_alignnazovmodelu.2_0.mmf model_alignnazovmodelu.2_1.mmf model_alignnazovmodelu.2_2.mmf . . model_alignnazovmodelu.256_0.mmf model_alignnazovmodelu.256_1.mmf model_alignnazovmodelu.256_2.mmf
pričom reťazec nazovmodelu
predstavuje názov hlavného priečinka, v ktorom pracujeme (trénujeme a testujeme akustické modely). Napr., ak sa náš pracovný priečinok nazýva Model_MFCC_0_D_A_Z
, akustické modely v priečinku workdir1/
budú mať nasledovné názvy:
model_alignModel_MFCC_0_D_A_Z.1_0.mmf
model_alignModel_MFCC_0_D_A_Z.1_1.mmf
model_alignModel_MFCC_0_D_A_Z.1_2.mmf
model_alignModel_MFCC_0_D_A_Z.2_0.mmf
model_alignModel_MFCC_0_D_A_Z.2_1.mmf
model_alignModel_MFCC_0_D_A_Z.2_2.mmf
.
.
model_alignModel_MFCC_0_D_A_Z.256_0.mmf
model_alignModel_MFCC_0_D_A_Z.256_1.mmf
model_alignModel_MFCC_0_D_A_Z.256_2.mmf
Je možné si všimnúť, že akustický model pre každú Gaussovu zmes obsahuje spolu tri súbory (modely). Keďže reestimácia modelov je väčšinou dvojkrokový proces, za finálny model sa považuje vždy ten, ktorý pochádza z druhej, resp. z poslednej iterácie. Poznamenávame, že model s označením *_1.mmf
pochádza z prvej iterácie a model s označením *_0.mmf
predstavuje ešte nereestimovaný model vzniknutý expanziou predchádzajúceho modelu s nižším počtom Gaussovych zmesí. Po skončení trénovania všetkých akustických modelov (pre všetky navolené počty Gaussovych zmesí) je možné začať jednotlivé modely testovať a vyhodnocovať.