본문 바로가기

Audio & Speech

[음성인식] 5.1 Vector Quantization(VQ)

 

지난 글에서 공부한 HMM을 음성인식 task에 적용하는 과정을 알아보자. 음성인식에서 사용하는 관측값(O)은 관측된 음성을 10ms 단위로 쪼갠 후, 각 단위 당 39차원의 MFCC feature vector를 사용한다. 이 39차원 feature vector는 다음과 같이 구성된다.

 

39-Dim MFCC feature vector
cepstral coefficients 12
delta cepstral coefficients  12
double delta cepstral coef 12
energy coef 1
delta energy coef 1
double delta energy coef 1
Total 39

 

Computing acoustic likelihood

4.2 Hidden Markov Model에서 HMM은 다음과 같이 세 단계로 구성된다.

prblem1(likelihood) - forward algorithm

우리는 HMM을 음성 데이터에 적용할 것이므로 관측값 O는 인풋 시그널(음성인식에서 MFCC)이 된다. HMM 예제에서 살펴본 대로 관측값이 아이스크림 개수처럼 discrete한 값이면 likelihood를 계산할 때 필요한 방출 확률(emisson probability)을 계산하기 쉽다. 하지만 MFCC feature vector는 continuous value라서 counting을 통한 HMM likelihood(emission probability) 계산이 어렵다. 이를 해결하기 위한 방법은 Vector Quantization(VQ)과 Gaussian Mixture Model(GMM)이 있다. 이번 글에서는 Vector Quantization(VQ)에 대해 먼저 알아보자.

 

Vector quantization(VQ)

1984년 Grey는 MFCC vector를 quantization하는 방법을 제안했다. Quantization 되면, 연속값이 이산화되어 counting을 통해 pmf로 모델링이 가능해진다. 이 과정은 codebook, codeword, clustering algorithm, distance metric으로 구성된다.

 

* codebook : vocabulary V={v1, v2... vn}를 구성하는 symbol들의 set

* codeword(prototype vector) : codebook 안에 있는 각각의 symbol vk

eg) 256개의 codeword를 사용한다면 각각의 벡터를 0~255로 나타낼 수 있음 (8-bit 양자화)

* clustering algorithm : codebook을 만드는 알고리즘. 학습 세트 내의 모든 자질 벡터들을 256개의 class로 군집화(clustering)한다. 그러고 나서 이 cluster에서 대표적인 자질 벡터를 고르고, 이것을 그 cluster에 대한 codeword로 삼는다. 주로 K-means clustering이 자주 사용된다.

* distance metric : codebook을 만들고 나면 각각의 인풋 자질 벡터들을 256개의 codeword와 비교한다. 이때 distance metric을 이용하여 가장 가까운 codeword 하나를 선택한다.

 

위 그림으로 과정을 설명하면, 우선 인풋 벡터를 clustering된 codebook의 모든 codeword들과 비교한다. 이후 인풋 벡터와 가장 가까운 codeword를 선택하고 그 codeword의 인덱스(144)가 인풋 벡터에 대한 VQ 아웃풋이 된다. HMM 상태 qj(j state)가 주어졌을 때 자질 벡터 ot의 방출 확률(emssion probability)은 다음과 같이 구한다.

 

1. 각 N codewords와 feature 간의 거리를 distance metric을 통해 구한다.

2. 가장 가까운 codeword를 선택한다.

3. 가장 가까운 codeword의 인덱스 vk를 구한다.

4. HMM으로 정의된 B likelihood에서 주어진 HMM 상태 j에서의 vk 우도를 찾는다.

 

VQ 장단점과 한계

장점

1. 정확도가 높고 간단함

 

단점 

1. Class 수가 한정적

2. Codebook 사이즈가 고정  ->  flexibility 부족

3. 내부 구조 불투명 : Class의 형성 과정에서 각 데이터 특성에 대한 깊은 이해 없이 distance metric 기반으로 clustering한다.

 

VQ codeword 개수는 음성인식 task에서 speech signal의 다양한 특성을 포착하기에 불충분하다. 따라서 현대 음성 인식 알고리즘은 연속적인 speech feature vectors에서 직접 구한 관측치 확률 계산에 기반한다(probability density function 사용). 현재까지 가장 보편적으로 쓰이는 방법은 HMM의 방출 확률(emission probability)을 Gaussian Mixture Model로 모델링하는 것이다. 

 

 

 

 

 

Acoustic feature가 어떤 state에 속할지?

 

HMM GMM을 합쳐서 학습시키는 이유가 likelihood 최대화 < E-M 반복/ 어떤 phone이 주어졌을 때 잘 alingnment 되는지가 기준이기 때문

 

 

하나의 관측치는 39개의 자질 벡터를 갖지 때문에 다변량 정규분포가 필요

mfcc가 GMM의 input feature < GMM의 가우시안 공분산이 서로 독립 : mfcc를 하면 성대 별로 고유 주파수 정보를 제거(화자 정보 제거)되고 이러면 feature correlation이 사라지게 된다.

 

b(o) : emission prob

 

 

diagonal covariance matrix를 이용함

 

GMM 입문 영상 

 

음소 하나의 mfcc feature가 39개

 

GMM

각 분포의 가중치는 signal에 나타나는 빈도, 가중치의 총합은 1

 

 

mahalanobis distance(general)의 weighted sum이 log likelihood 

covariance가 I이면 유클리디안 space로 reduce 되고, 그냥 diagonal이면 standard space로 reduce 된다.

 

 

 

9.6 Decoding

 

AM * LM의 곱의 확률을 최대화

likelihood가 underesimated 되어있음

따라서 prior을 줄여줌(LMSF)

 

p(w) : 특정 텍스트에 대한 확률 정보를 갖고 있자

p(w) : word 길이에 영향을 받으므로, 이를 보정하기 위해서 WIP를 곱해준다. 

위 식을 HMM을 통해 maximize 시키는 word sequence를 출력하는 게 목표

 

 

word에서 word로 넘어가는 확률을 LM의 bi-gram 모델 기반으로 줌

 

얘는 연속 음성 인식기가 아님. 굉장히 오래된 모델이고 이를 기반으로 점점 모델이 발전되어옴.

 

 

9.7 training

 

Baum-Welch 알고리즘(E-M algorithm) - frame과 state가 서로 태깅되어있지 않는 상태 을 사용

                                                  - expectation을 구하는데 all path 고려하겠다!

viterbi - time dependency make people to know word sequence 경계 

         - expectation을 구하는데 확률을 최대화하는 경로 하나만 보겠다!

이를 근사 시킨 viterbi를 구하고 이를 정답으로 보고(즉 E-M에서 viterbi = expectation으로 생각) 학습하고.. 이를 반복하는 알고리즘을 더 많이 사용한다.

 

 

9.8 평가

 

영어는 word error rate 주로 쓴다.

한글은 음절 단위로 CER을 쓴다.

 

한글은 data양의 부족이 영어보다 성능이 떨어지는 주 요인이다. 

분석하는 알고리즘은 같다. 물론 형태소 분석기는 다르다