-
[Kaldi tutorial] Feature extractionML/Kaldi 2020. 7. 29. 15:19반응형
Introduction
Feature extraction과 waveform-reading code는 MFCC와 PLP features를 만드는 것을 목표로 한다. Mel bin의 수나 minimum maximum freq 등 옵션들을 합리적인 디폴트로 설정한다. 이 코드는 오직 pcm data가 들어있는 .wav 파일을 사용한다. 흔히 .wav나 .pcm의 확장자를 가진다. 만약 데이터가 .wav가 아니면 사용자가 바꾸어야 한다.
Command line tool인 compute-mfcc-feats와 compute-plp-feats는 다른 kaldi tool과 함께 feature들을 계산한다. Arguments 없이 실행하면 옵션들을 알려줄 것이다.
Computing MFCC features
이 파트에서는 어떻게 Command-line tool인 compute-mfcc-feats로 MFCC features를 추출하는지 설명한다. 이 프로그램은 두 가지의 argument를 요구한다. .wav 파일을 읽기 위한 rspecifier와 features를 쓰기 위한 wspecifier다. 자세한건 documentation에... 일반적으로 data를 하나의 큰 archive 파일에 쓴다. 동시에 scp 파일을 쓰면서. 이 프로그램은 delta feature를 추가하지 않는다. 채널을 선택하기 위한 -channel이라는 옵션이 있다. 스테레오 파일을 위한
MFCC 특성 추출은 MFCC type의 객체에 의해 실행된다. Waveform으로부터 feature를 계산하는 Compute()라는 함수를 가지고 있다.
전반적인 MFCC 계산은 아래와 같다.
- 파일에서 프레임 수만큼 동작한다. (25 ms frames, 10 ms shift)
- 각 프레임 마다
- 데이터를 추출해서, 옵션에 따라 dithering, preemphasis, dc offset removal을 한다. 그리고 windowing function을 곱한다.(e.g. Hamming)
- 그 다음 에너지를 구한다. (C0가 아니라 log-energy를 사용하는 경우)
- FFT를 하고 power spectrum을 구한다.
- 각 mel bin의 에너지를 계산한다. 이것은 23개의 삼각형으로 overlap된 bin들이다. 또한 Mel-frequency domain에서 동등하게 위치한 center frequency를 가진다.
- 이 에너지들의 로그를 계산하고 cosine transform을 한다. 그리고 특정한(13) 개수의 coefficients만 가져간다.
- 옵션에 따라 cepstral liftering을 한다. 이는 합당한 범위를 가지도록 coefficients를 스케일링한다.
-low-freq와 -high-freq 옵션에 따라 lower와 upper frequency를 조절한다. 거의 0에서 Nyquist frequency 까지. (e.g. -low-freq=20, -high-freq=7800, 16kHz sampling인 경우)
출처:
반응형'ML > Kaldi' 카테고리의 다른 글
[Kaldi tutorial] Data preparation (1) 2020.07.27