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

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á...

Více