Přednáška 5 - www.itakura.kes.tul.cz
Transkript
Přednáška 5 - www.itakura.kes.tul.cz
Pokročilé metody rozpoznávání řeči Přednáška 5 Rozpoznávání pomocí HMM a HTK Princip rozpoznávání pomocí HMM (1) Cílem je určit, s jakou pravděpodobností by modely slov ve slovníku vygenerovaly sekvenci příznakových vektorů rozpoznávaného (neznámého) slova a11 a23 a12 Q1 Q2 b1 aS-1S -1 a22 ... . b2 aSS aS -1S QS -1 bS -1 QS Model bS Příznakové vektory Parametrizace Rozpoznávané slovo Princip rozpoznávání pomocí HMM (2) Výpočet je podobný jako u metody DTW Opět hledáme nejlepší cestu (přiřazovací funkci f s nejvyšší pravděpodobností), tentokrát ovšem v rovině signálových framů a modelových stavů Podmínky cesty ass ass as-1s s ↑ (i,s) as-1s cesta f S modelové stavy s 1 → i 1 i I framy Pravděpodobnostn Pravd podobnostní podobnostní „skó skóre“ re“ pro výše uvedenou cestu f určíme jako P ( X,M ) = b1 ( x1 ) ⋅ a11b1 ( x 2 ) ⋅ a12 b2 ( x 3 ) ⋅ a 22 b2 ( x 4 ).... Viterbiho algoritmus Jde o základní algoritmus rozpoznávání i trénování HMM ass Definujme - kumulované skóre v bodě (i, s): V (i , s) = bs ( xi ) ⋅ Max[a ssV (i − 1, s), a s−1sV (i − 1, s − 1)] s ↑ (i,s) as-1s → i Část „Backtracking“ není nutná pro rozpoznávání (izolovaných) slov, ale je klíčová pro trénování Paralelní implementace & prořezávání Klasifikace nemusí nutně probíhat sekvenčně (model po modelu), může být implementována i paralelně (všechny modely současně, frame po framu). Princip: Po zpracování každého framu najdeme stav s nejvyšším kumul. skóre a modely, jejichž nejlepší kum. skóre je výrazně horší, přestaneme dále počítat, protože už nejsou kompetitivní. Tato technika se nazývá prořezávání (pruning). Nastavením vhodného prořezávacího prahu (threshold) rozpoznávání se stane rychlejší, aniž by došlo ke zhoršení výsledků. Výpočet u těchto modelů skončil předčasně díky prořezávání. Rozpoznávání s hláskovými HMM Inventář fonémů a, á, b, …X … z, ž Akustické modely Slovník a až ….. robot ….. sud Zürich Výslovnost a aš ….. robot ….. sut ciriX a a š a á Rozpoznávání spojité řeči s využitím jazykového modelu Fonetický inventář Inventář hluků a, á, b, c, č, X, …… z, ž, ticho, nádech, klik, … Akustické modely Lexikon “ticho” ať ….. robot … už ….. Zürich Výslovnost ať ….. robot ….. uš a á Jazykový model ciriX Pozn.: Síť všech modelů slov je nyní “zacyklena”, tj. z posledního stavu každého slova vede cesta na počáteční stavy všech slov. Možnost či nemožnost přechodu mezi slovy, případně jeho pravděpodobnost, udává jazykový model. Viterbiho dekodér pro spojitou řeč Rozpoznávání se děje pomocí Viterbiho algoritmu, který běží paralelně pro všechna slova. Uvnitř slova se provádí klasický výběr z dvou předchozích stavů. V každém framu nejvyšší pravděpodobnost z posledního stavů slov je přenesena do počátečních stavů všech slov. Nejlepší sekvenci slov najdeme zpětným trasováním po dosažení konce. w3 g(2,3) w2 g(2,1) g(2,2) ass w1 as-1s Rozpoznávání v HTK Základní program pro rozpoznávání se nazývá Hvite Jeho hlavními parametry jsou: - soubor se slovníkem (v příkladu cislovky.txt) - soubor se seznamem fonémů monophones - parametrizovaná nahrávka, která má být rozpoznána (způsob parametrizace musí být stejný jako byl použit při trénování modelů) test.mfcc - soubor s natrénovanými hláskovými HMM (akustický model) – H hmm - soubor s jazykovým modelem vyjádřený sítí -w wdnet.txt - případný konfigurační soubor -C config - další možné parametry a přepínače Příklad volání: HVite -H hmm -C config -w wdnet.txt cislovky.txt monophones test.mfcc Příklad jednoduché úlohy – sekvence číslovek (1) Slovník (cislovky.txt) nula jedna dva tři čtyři pět šest sedm osm devět SIL SENT-START [] SENT-END [] nula yedna dva t rs i ch t i rz i pyet sh e s t sedum osum devyet si si si Jazykový model (gram.txt) – vyjádřený gramatikou $digit=nula | jedna | dva | tři | čtyři | pět | šest | sedm | osm | devět; ( SENT-START <$digit [SIL]> SENT-END ) Příklad jednoduché úlohy – číslovky (2) Jazykový model převedený do slovní sítě – pomocí programu HParse volání HParse -C config gram.txt wdnet.txt Výsledkem je síť popsná ve formátu EBNF (extended Backus-Naur Form) VERSION=1.0 N=16 L=45 I=0 W=SENT-END I=1 W=SIL I=2 W=devět I=3 W=!NULL I=4 W=osm I=5 W=sedm I=6 W=šest I=7 W=pět I=8 W=čtyři I=9 W=tři I=10 W=dva I=11 W=jedna I=12 W=nula I=13 W=SENT-START I=14 W=!NULL I=15 W=!NULL J=0 S=1 E=0 J=1 S=3 E=0 J=2 S=3 E=1 J=3 S=1 E=2 J=4 S=3 E=2 J=5 S=13 E=2 J=6 S=2 E=3 ........ Příklad jednoduché úlohy – číslovky (3) Akustický model (soubor hmmdefs) – předem natrénovaný pomocí HERest nesouvisí s konkrétní rozpoznávací úlohou ~o <STREAMINFO> 1 39 <VECSIZE> 39<NULLD><MFCC_D_A_Z_0><DIAGC> ~h "zh„ <BEGINHMM> <NUMSTATES> 5 <STATE> 2 <MEAN> 39 -2.241118e+000 2.513775e+000 9.444477e+000 4.821826e+000 -4.913831e+000 -3.700259e+000 2.542208e+000 -2.494258e+000 -7.400239e-001 -4.025608e+000 -1.286898e-001 7.962823e-002 3.971884e+000 3.206777e+000 1.006624e+000 2.023426e+000 9.546232e-001 4.212712e-001 6.276829e-001 1.215124e+000 1.565469e001 4.813126e-001 -4.982693e-001 4.904882e-001 2.201155e-001 5.369277e-001 -1.734695e-001 -2.223395e-001 <VARIANCE> 39 2.989748e+001 2.410252e+001 3.278873e+001 4.095192e+001 3.755008e+001 3.282977e+001 3.722257e+001 3.482589e+001 3.617077e+001 2.580734e+001 2.261711e+001 2.248957e+001 1.165202e+001 3.120836e+000 3.198101e+000 2.857781e+000 3.212419e+000 3.858184e+000 4.363646e+000 4.070237e+000 3.987004e+000 3.375937e+000 3.143265e+000 2.724649e+000 2.333243e+000 1.352023e+000 6.050141e-001 <GCONST> 1.141471e+002 <STATE> 3 ….. <TRANSP> 5 0.000000e+000 1.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 6.386805e-001 3.613196e-001 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 7.313781e-001 2.686219e-001 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 5.836027e-001 4.163972e-001 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 <ENDHMM> Příklad jednoduché úlohy – číslovky (4) Testovací nahrávka (test.wav) Parametrizace nahrávky pomocí HCopy HCOPY -C param.cfg test.wav test.mfcc Soubor Param.cfg DELTAWINDOW = 2 ACCWINDOW = 2 CEPLIFTER = 22 ENORMALISE = F EXTENDFILENAMES = T NUMCEPS = 12 NUMCHANS = 24 PREEMCOEF = 0.97 SAVEWITHCRC = F SOURCEFORMAT = WAVE SOURCEKIND = WAVEFORM TARGETFORMAT = HTK TARGETKIND = MFCC_0_D_A TARGETRATE = 100000 USEHAMMING = T WINDOWSIZE = 250000 USEPOWER = F ADDDITHER = -0.0000306 NATURALREADORDER = T NATURALWRITEORDER = T NONUMESCAPES = T Příklad jednoduché úlohy – číslovky (5) Volání programu HVite HVite -C config -H hmmdefs -w wdnet.txt cislovky.txt monophones test.mfcc Výstupní sobour (test.rec) #!MLF!# "test.rec" 11500000 14500000 nula -2590.181641 %začátek konec slovo skóre 14500000 17900000 šest -2681.785400 17900000 20700000 nula -2299.279541 20700000 26800000 čtyři -4643.076660 26800000 30700000 sedm -3014.619141 30700000 33200000 pět -1867.057495 33200000 37200000 sedm -3034.345947 37200000 40100000 devět -2120.914795 40100000 42400000 dva -1748.676880 42400000 46700000 tři -3182.558105 46700000 59300000 SIL -6426.580566 Příklad jednoduché úlohy – číslovky (6) Detailní výstup rozpoznávače (test.rec) - při volání HVite zadáme parametr -m HVite -C config -H hmmdefs -i test.phn -w wdnet.txt -m cislovky.txt monophones test.mfcc #!MLF!# "test.rec" 0 11500000 si -6436.544922 SENT-START 11500000 12800000 n -998.593079 nula 12800000 13100000 u -291.434082 13100000 14000000 l -812.460510 14000000 14500000 a -487.694000 14500000 15700000 sh -946.119812 šest 15700000 16400000 e -549.446472 16400000 17300000 s -710.685181 17300000 17900000 t -475.533905 17900000 18400000 n -417.454987 nula 18400000 18900000 u -404.504120 18900000 19400000 l -409.485229 19400000 20700000 a -1067.835205 20700000 21800000 ch -871.351563 čtyři 21800000 22800000 t -767.927002 22800000 23800000 i -762.051697 23800000 24700000 rz -741.161194 24700000 26800000 i -1500.585449 Příklad jednoduché úlohy – číslovky (7) Rozpoznávání „naživo“ – program Hvite rozpoznává přímo z mikrofonu HVite -C config-live.cfg -H hmmdefs -w wdnet cislovky.txt monophones s konfiguračním souborem config-live.cfg SOURCERATE=625.0 SOURCEKIND=HAUDIO SOURCEFORMAT=HTK ENORMALISE=F USESILDET=T MEASURESIL=F OUTSILWARN=T DELTAWINDOW = 2 ACCWINDOW = 2 CEPLIFTER = 22 ENORMALISE = F EXTENDFILENAMES = T NUMCEPS = 12 NUMCHANS = 24 PREEMCOEF = 0.97 SAVEWITHCRC = F TARGETFORMAT = HTK TARGETKIND = MFCC_0_D_A TARGETRATE = 100000 USEHAMMING = T WINDOWSIZE = 250000 USEPOWER = F ADDDITHER = -0.0000306 NATURALREADORDER = T NATURALWRITEORDER = T NONUMESCAPES = T Příklad jednoduché úlohy – číslovky (8) Příklad kompletní dávky pro rozpoznání jedné nahrávky HParse -C config gram.txt wdnet.txt HCOPY -C param.cfg test.wav test.mfcc HVite -C config -H hmmdefs -w wdnet.txt cislovky.txt monophones test.mfcc Chceme-li zpracovávat více souborů, uvedeme jejich seznam a použijeme přepínač -S seznam.txt Příklad složitější – spojovatelka (1) Příklad z HTKBook – str. 25 Úloha – telefonní spojovatelka, rozpoznává příkazy zadané větou, v níž je obsaženo jméno osoby nebo jeho telefonní číslo Slovník Příklad složitější – spojovatelka (2) Jazykový model – pevná gramatika Slovní síť Gramatika vyjádřená proměnnými a regulárními výrazy Do příštího týdne HTKbook Kapitola 3. A Tutorial Example of Using HTK Připravit si: Každý si na cvičení přinese vlastní natrénovaný model, vlastní slovník a nahrávky k testování
Podobné dokumenty
Prvohory - infomise
Number Calculator, později známý jako Model I Relay Calculator. V logických částech jsou použity
telefonní přepínače. Čísla zadávaná v kódu BCD plu 3, to znamená, že 0 je reprezentována pomocí
biná...