Kaldi ASR 4) 음향모델 학습

윤혜원·2022년 11월 2일

음성인식기 Kaldi

목록 보기
4/4

4. Monophone Training

이전에 준비한 오디오와 텍스트 파일을 이용해서 각 개별 음소에 대한 확률값을 학습하는 과정이다. monophone 학습 과정은 다음과 같고, 이와 관련된 파일들이 exp/mono0a(폴더)와 data/$x/split1 에 저장된다.
1. 오디오와 텍스트 정보를 가지고 음소 세트로 변환
2. 소리와 음소를 동일한 간격으로 잘라서 그 구간이 이 음소가 발생한 구간일 것이라고 정의
3. 다양한 소리를 학습함으로써 그 간격을 학습하면서 음소에 적합한 구간만 지정하도록 변화

  1. train_mono.sh
    ① exp/mono0a (폴더) = final.mdl 이라는 모델 생성
    ② exp/mono0a/ali.1.gz = 학습한 음향 모델을 통해 학습 데이터의 음소 구간을 의미있게 잘라주는 작업을 align(정렬)이라고 하고, 모든 학습 데이터에 대한 align 정보를 담고 있는 파일
# Mono training 실행 코드
steps/train_mono.sh --nj 1 --cmd "$train_cmd" \
  --totgauss 400 \
  data/train_yesno data/lang exp/mono0a

5. Graph compilation

Kaldi는 음성인식에 사용할 최종 모델은 fst형태로 변환하여 사용하므로 지금까지 생성한 모델들을 최종적으로 결합해주는 과정을 거쳐야한다.
이러한 과정은 mkgraph.sh를 통해 진행된다.
총 4가지 모델이 필요하며 이 모델들을 다 결합하면, HCLG.fst가 완성된다. HCLG 심볼의 의미는 다음과 같다. (참고 : https://kaldi-asr.org/doc/graph.html)

H = HMM 정의
C = Context-dependent, 컨텍스트 종속성
L = Lexicon, 사전
G = Grammar, 문법

HCLG를 자세히 살펴보면,

  • H.fst = 각 음소들의 확률 정보를 담고 있으며, 최종 학습이 끝난 final.mdl를 H.fst로 변환
  • C.fst = 종속 음소에서 Context 독립 음소로의 변환을 나타내는 동적으로 생성된 fst 객체
  • L.fst = 각 단어의 발음 정보를 담은 모델로 단어에 대한 발음 음소열로 구성되어 있음
  • G.fst = 각 단어들의 확률 정보(ngram)을 담은 lm.arpa를 G.fst로 변환
# Graph compilation 실행 코드
utils/mkgraph.sh data/lang_test_tg exp/mono0a exp/mono0a/graph_tgpr
profile
음성인식 연구개발자 (Speech Recognition Researcher)

0개의 댓글