Kaldi ASR 3) 음향모델 준비

윤혜원·2022년 10월 27일

음성인식기 Kaldi

목록 보기
3/4

2. Feature extraction

이 부분에서는 음향 모델을 학습하기위하여 MFCC를 사용하여 음향 특징을 추출하고, 정규화를 진행하는 단계라고 볼 수 있다.
여기서, Mel-Frequency Cepstral Coefficient(MFCC)은 음성 데이터를 특징 벡터화 해주는 알고리즘이다.

  1. make_mfcc.sh
    ① mfcc (폴더) = 음성 데이터의 특징 벡터화
    ② exp(=experiment 폴더) = mfcc를 사용하여 특징을 추출하는 과정에서의 log

① mfcc (폴더)
mfcc를 사용하여 특징을 추출하기 위해서는 2가지 기능이 필요하며, 이 기능을 ark 파일과 scp 파일을 사용하여 수행한다.
1. wav 파일을 읽기 위한 rspecifier
2. features를 쓰기 위한 wspecifier

*.ark 파일 : 토큰은 공백이 없는 문자열로 정의되고, kaldi에 정의된 일부 object를 아카이브 형식으로 보관하기 위해 사용되며, 다음과 같이 저장된다고 한다.

token1 [something]token2 [something]token3 [something] ...
(참고 : https://kaldi-asr.org/doc/io.html)

*.scp 파일 : 데이터에 액세스할 수 있도록 주소를 저장

# scp 파일 형식
[화자 ID or 데이터명][ark 경로][:객체 시작주소]

mfcc 폴더를 살펴보면, raw 파일들과 cmvn 파일들이 src, ark 파일 형식으로 저장된 것을 볼 수 있다.
cmvn_* (=Cepstral Mean and Variance Normalization) = 음성 인식을 위한 정규화 기술로서 동일한 세그먼트 통계를 갖도록 하는 것

# raw_mfcc_*_.scp 파일 형식
[데이터명][ark 경로][:객체 시작주소]
# 실제 OUTPUT
0_1_1_1_1_1_1_1 /{경로}/kaldi/egs/yesno/s5/mfcc/raw_mfcc_test_yesno.1.ark:16

# cmvn_*.scp 파일 형식
[화자ID][ark 경로][:객체 시작주소]
# 실제 OUTPUT
global /{경로}/kaldi/egs/yesno/s5/mfcc/cmvn_test_yesno.ark:7

run.sh 코드 실행 & 결과 코드

# Feature extraction 실행 코드 
for x in train_yesno test_yesno; do
 steps/make_mfcc.sh --nj 1 data/$x exp/make_mfcc/$x mfcc
 steps/compute_cmvn_stats.sh data/$x exp/make_mfcc/$x mfcc
 utils/fix_data_dir.sh data/$x
done
# Feature extraction 실행 결과 코드 (필요한 부분 빼고, 생략하였음)
## train
utils/validate_data_dir.sh: Successfully validated data-directory data/train_yesno
steps/make_mfcc.sh: [info]: no segments file exists: assuming 
wav.scp indexed by utterance.
steps/make_mfcc.sh: Succeeded creating MFCC features for train_yesno
Succeeded creating CMVN stats for train_yesno

## validation & test
utils/validate_data_dir.sh: Successfully validated data-directory data/test_yesno
steps/make_mfcc.sh: Succeeded creating MFCC features for test_yesno
Succeeded creating CMVN stats for test_yesno
profile
음성인식 연구개발자 (Speech Recognition Researcher)

0개의 댓글