「原作者へ」
連絡先を存じ上げませんでしたので、不本意ながら無断で翻訳しました。
正式に翻訳を許可されたいです。
gogyzzz@gmail.comでご連絡ください。
아래 포스트의 번역입니다.
http://work-in-progress.hatenablog.com/entry/2018/03/04/110331
kaldi에서 사용하는 모델을 작성해보자.
대상은 '모시모시'라는 발화.
대강의 흐름은 아래 4개의 모델을 사용해 합성된다고 보면 된다.
합성은 아래 순서에 따라 수행
L ○ G
↓
C ○ (L ○ G)
↓
H ○ (C ○ (L ○ G))
일단 Grammar. 이것은 ARPA 파일로부터 생성된다.
src/lmbin/arpa2fst \
--disambig-symbol=#0 \
--read-symbol-table=data/lang/words.txt \
2gram.arpa \
G.fst
G.fst
이어서 Grammar와 Lexicon의 합성(compose)
Lexicon은 음향 모델을 만드는 과정에서 준비된 것을 사용한다.
data/lang/L_disambig.fst
determinize와 minimize도 함께 실행된다.
src/fstbin/fsttablecompose \
data/lang/L_disambig.fst \
G.fst | \
src/fstbin/fstdeterminizestar --use-log=true | \
src/fstbin/fstminimizeencoded | \
src/fstbin/fstpushspecial | \
fstarcsort --sort_type=ilabel > LG.fst
LG.fst
이어서, Context와의 합성.
Context는 음소를 기반으로 생성된다.
src/fstbin/fstmakecontextfst \
--read-disambig-syms=disambig_phones.list \
phones_exclude_disambig_phones.list 29 ilabels.sym | \
fstarcsort --sort_type=olabel > C.fst
phonesexcludedisambig_phones.list
<eps> 0
sil 1
sil_B 2
sil_E 3
sil_I 4
sil_S 5
spn 6
spn_B 7
spn_E 8
spn_I 9
spn_S 10
I_B 11
I_E 12
I_I 13
I_S 14
M_B 15
M_E 16
M_I 17
M_S 18
O_B 19
O_E 20
O_I 21
O_S 22
S_B 23
S_E 24
S_I 25
S_S 26
disambig_phones.list
27
28
(참고) data/lang/phones.txt(disambig만 발췌)
#0 27
#1 28
「make-ilabel-transducer」、「fstdeterminizestar」、「fstminimizeencoded」 커맨드를 실행하여
「CLG2.fst」 을 만든다.
CLG2.fst
이어서, HMM과의 합성
(「Ha.fst」는 「make-h-transducer」 커맨드로 생성)
src/fstbin/fsttablecompose Ha.fst \
CLG2.fst | \
src/fstbin/fstdeterminizestar --use-log=true | \
src/fstbin/fstrmsymbols disambig_tstate.list | \
src/fstbin/fstrmepslocal | \
src/fstbin/fstminimizeencoded > HCLGa.fst
이어서, self-loops를 추가하여, 「HCLG.fst」를 생성한다.
댓글 없음:
댓글 쓰기