「原作者へ」
連絡先を存じ上げませんでしたので、不本意ながら無断で翻訳しました。
正式に翻訳を許可されたいです。
gogyzzz@gmail.comでご連絡ください。
아래 포스트를 번역한 것입니다.
http://work-in-progress.hatenablog.com/entry/2018/07/08/084903
이전 포스트의 「Kaldi for Dummies tutorial」에서는 Triphone의 초기 학습까지 진행했다.
TRI1 - simple triphone training (first triphone pass).
그 후의 처리를 확인하고자 한다.
「egs/rm/s5/RESULTS」에는 각 실험(experiments)의 WER가 만들어져 있는데, 몇가지를 나열해보면 아래와 같다.
mono
Monophone, MFCC + delta + accel
tri1
MFCC + delta + accel
tri2a
MFCC + delta + accel (on top of better alignments)
tri2b
LDA + MLLT
tri3b
LDA + MLLT + SAT
tri3c
raw-fMLLR ( fMLLR on the raw MFCCs )
sgmm2_4[a-c]
SGMM2 is a new version of the code that has tying of the substates a bit like "state-clustered tied mixture" systems; and which has speaker-dependent mixture weights.
nnet4[a-e]
Deep neural net -- various types of hybrid system.
dnn4b
MFCC, LDA, fMLLR feaures, (Karel - 30.7.2015)
cnn4c
FBANK + pitch features, (Karel - 30.7.2015)
이 중 「nnet4d」(nnet2의 primary recipe)를 타겟으로, triphone 초기 모델(tri1)까지의 흐름을 역으로 돌아가보고자 한다.
(GPU를 사용하지 않는 환경에서 하고 있으므로, GPU를 사용하지 않는 조건에서 확인하였다)
공식사이트 설명에 따라, 「rm/s5/local/run_nnet2.sh」가 기점이 되는 스크립트라는 것을 확인.
The first place to look to get a top level overview of the neural net training is probably the scripts. In the standard example scripts in egs/rm/s5, egs/wsj/s5 and egs/swbd/s5b, the top-level script is run.sh. This script calls (sometimes commented out) a script called local/run_nnet2.sh. This is the top-level example script for Dan's setup.
rm/s5/local/run_nnet2.sh의 내용 중
# **THIS IS THE PRIMARY RECIPE (40-dim + fMLLR + p-norm neural net)**
local/nnet2/run_4d.sh --use-gpu false
egs/rm/s5/local/nnet2/run_4d.sh의 내용 중
steps/nnet2/train_pnorm_fast.sh
data/train \
data/lang \
exp/tri3b_ali \
exp/nnet4d
학습 output「exp/nnet4d」을 생성하기 위해선 input으로 alignment 데이터 「exp/tri3b_ali」가 필요하다.
egs/rm/s5/run.sh의 내용 중
# Align all data with LDA+MLLT+SAT system (tri3b)
steps/align_fmllr.sh \
--use-graphs true \
data/train \
data/lang \
exp/tri3b \
exp/tri3b_ali
alignment의 output「exp/tri3b_ali」을 생성하기 위해서는, input으로 「exp/tri3b」이 필요하다.
egs/rm/s5/run.sh의 내용 중
## Do LDA+MLLT+SAT
steps/train_sat.sh \
1800 \ # <#leaves>
9000 \ # <#gauss>
data/train \ # <data>
data/lang \ # <lang>
exp/tri2b_ali \ # <ali-dir>
exp/tri3b # <exp-dir>
학습의 output 「exp/tri3b」을 생성하기 위해서는, input으로 alignment 데이터 「exp/tri2b_ali」가 필요하다.
egs/rm/s5/run.sh의 내용 중
# Align all data with LDA+MLLT system (tri2b)
steps/align_si.sh \
--use-graphs true \
data/train \
data/lang \
exp/tri2b \
exp/tri2b_ali
alignment 데이터 「exp/tri2b_ali」을 생성하기 위해서는, input으로 「exp/tri2b」가 필요하다.
egs/rm/s5/run.sh의 내용 중
# train and decode tri2b [LDA+MLLT]
steps/train_lda_mllt.sh \
1800 \ # <#leaves>
9000 \ # <#gauss>
data/train \ # <data>
data/lang \ # <lang>
exp/tri1_ali \ # <ali-dir>
exp/tri2b # <exp-dir>
학습 데이터 「exp/tri2b」을 생성하기 위해서는, input으로 alignment 데이터 「exp/tri1_ali」가 필요하다.
egs/rm/s5/run.sh의 내용 중
# align tri1
steps/align_si.sh \
--use-graphs true \
data/train \
data/lang \
exp/tri1 \
exp/tri1_ali
alignment 데이터 「exp/tri1_ali」를 생성하기 위해서는, input으로 학습 데이터 「exp/tri1」가 필요하다.
「exp/tri1」로부터 [exp/nnet4d]까지의 흐름을 정리하면 아래와 같다.
1. Triphone 모델(MFCC + delta + accel)을 사용한 alignment
output은 「exp/tri1_ali」
2. Triphone 모델(LDA + MLLT)의 생성과 학습
output은 「exp/tri2b」
3. Triphone 모델(LDA + MLLT)을 사용한 alignment
output은 「exp/tri2b_ali」
4. Triphone 모델(LDA + MLLT + SAT)의 생성과 학습
output은 「exp/tri3b」
5. Triphone 모델(LDA + MLLT + SAT)을 사용한 alignment
output은 「exp/tri3b_ali」
6. Neural Network 모델의 생성과 학습
output은 「exp/tri4d」
댓글 없음:
댓글 쓰기