「原作者へ」
連絡先を存じ上げませんでしたので、不本意ながら無断で翻訳しました。
正式に翻訳を許可されたいです。
gogyzzz@gmail.comでご連絡ください。
아래 포스트의 번역입니다.
http://work-in-progress.hatenablog.com/entry/2018/03/21/111613
kaldi의 모델 학습과정을 따라가보자.
모델을 업데이트하기 위해서는 'gmmbin/gmm-est' 커맨드를 사용한다.
Do Maximum Likelihood re-estimation of GMM-based acoustic model
Usage: gmm-est [options] <model-in> <stats-in> <model-out>
e.g.: gmm-est 1.mdl 1.acc 2.mdl
학습 시의 input은 다음이 필요하다.
- 업데이트 전의 모델
- 통계량(statistics)
statistics의 생성에는 「gmmbin/gmm-acc-stats-ali」 커맨드를 사용한다.
Usage: gmm-acc-stats-ali [options] <model-in> <feature-rspecifier> <alignments-rspecifier> <stats-out>
e.g.: gmm-acc-stats-ali 1.mdl scp:train.scp ark:1.ali 1.acc
input으로는 다음이 필요하다.
- 초기모델
- 특징량 파일
- 균등 분할된 alignment
균등 분할된 alignment의 생성은 「bin/align‐equal‐compiled」 커맨드를 사용한다.
Write an equally spaced alignment (for getting training started)
Usage: align-equal-compiled <graphs-rspecifier> <features-rspecifier> <alignments-wspecifier>
e.g.: align-equal-compiled 1.fsts scp:train.scp ark:equal.ali
여기서 input으로 학습용 그래프(FST)가 필요하다.
그래프 생성 시에는 「bin/compile-train-graphs」 커맨드를 사용한다.
Creates training graphs (without transition-probabilities, by default)
Usage: compile-train-graphs [options] <tree-in> <model-in> <lexicon-fst-in> <transcriptions-rspecifier> <graphs-wspecifier>
e.g.: compile-train-graphs tree 1.mdl lex.fst 'ark:sym2int.pl -f 2- words.txt text|' ark:graphs.fsts
학습용 그래프 생성에 필요한 input
- tree
- 초기모델
- 그래프(Lexicon FST)
- text(int형식)
text(int형식)
utterance_id_001 2
(참고)text(symbol형식)
utterance_id_001 MOSIMOSI
모델 토폴로지(non-silence phone)
<TopologyEntry>
<ForPhones>
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
</ForPhones>
<State> 0 <PdfClass> 0 <Transition> 0 0.75 <Transition> 1 0.25 </State>
<State> 1 <PdfClass> 1 <Transition> 1 0.75 <Transition> 2 0.25 </State>
<State> 2 <PdfClass> 2 <Transition> 2 0.75 <Transition> 3 0.25 </State>
<State> 3 </State>
</TopologyEntry>
모델 토폴로지(silence phone)
<Forphones>
1 2 3 4 5 6 7 8 9 10
</ForPhones>
<State> 0 <PdfClass> 0 <Transition> 0 0.25 <Transition> 1 0.25 <Transition> 2 0.25 <Transition> 3 0.25 </State>
<State> 1 <PdfClass> 1 <Transition> 1 0.25 <Transition> 2 0.25 <Transition> 3 0.25 <Transition> 4 0.25 </State>
<State> 2 <PdfClass> 2 <Transition> 1 0.25 <Transition> 2 0.25 <Transition> 3 0.25 <Transition> 4 0.25 </State>
<State> 3 <PdfClass> 3 <Transition> 1 0.25 <Transition> 2 0.25 <Transition> 3 0.25 <Transition> 4 0.25 </State>
<State> 4 <PdfClass> 4 <Transition> 4 0.75 <Transition> 5 0.25 </State>
<State> 5 </State>
</TopologyEntry>
모델을 FST로 변환한 것
그림의 녹색 글자가 나타내는 것
"_"전 : phone(음소)
"_"후 : phone(음소)내부의 위치
_B begin
_I internal
_E end
FST(Context to word)
이 2개를 합성한다.
VectorFst<StdArc> *H;
VectorFst<StdArc> &ctx2word_fst;
VectorFst<StdArc> trans2word_fst;
TableCompose(*H, ctx2word_fst, &trans2word_fst);
FST(합성 후)
파란색은 weight
이어서, determinize, miniminize, self-loop 추가를 진행하고, 학습용 FST를 생성한다.
댓글 없음:
댓글 쓰기