MFCC(Mel Frequency Cepstral Coefficients)란 음성 및 오디오 신호 처리에서 대표적으로 사용하는 기술이다. MFCC는 음성데이터를 특징백터화해주는 Algorithm이다.

사람은 음성을 인식할 때 달팽이관에서 각기 다른 주ㅜ파수를 감지한다. 하지만 사람의 달팽이관은 주파수가 낮은 대역에서의 변화는 잘 감지하지만, 주파수가 높은 대역에서는 그렇지 못하다. 이러한 사람의 달팽이관의 특성을 고려하여 음성데이터에서 특징을 추출한 값이 Mel-Scale이다.

또한 사람은 똑같은 문장을 말해도 각자 다른 속도로 말하기 때문에 이러한 각기 다른 음성데이터를 학습시키기에는 어려움이 있다. 이러한 특징에 의하여, 음성 데이터를 전부 20ms~40ms로 분할한다. 여러 연구에 의하면 사람은 20ms~40ms 사이에서는 음소가 바뀔 수 없다는 연구결과가 있다.
이러한 특징점을 이용하여 음성 데이터를 분석하는 알고리즘이 바로 Mel Frequency Cepstral Coefficients이다.

그렇다면 MFCC는 어떻게 할까? 다음 단계와 같이 진행을 한다.

  1. Pre-Emphasis
    사람은 발성 시 신체적 구조때문에 실제로 낸 소리에서 고주파 성분이 많이 줄어들어서 나온다고 한다. 그래서 먼저 줄어든 고주파 성분을 강조하기 위하여 고주파 신호는 더 강조하며, 저주파 신호는 약화하는, 즉 High-Pass Filter이다.

  2. Sampling and Windowing
    아까 언급했다시피 음성 신호를 20ms~40ms단위로 분할한다고 하였다. 이 단계에서 음성 신호를 20ms~40ms 단위의 Frame으로 분할한다. 여기에서 Frame을 일부러 겹치게 분할을 해야 한다. 그 이유는 이 과정을 안하고 샘플링시, 프레임과 프레임의 접합 부분에서 순간 변화율이 무한대로 나올 수 있다. 이러한 부분을 방지하기 위한 것이다.

후에 이 프레임에 대해 Windowing을 각각 적용한다. 여러 Window가 존재하지만 보통 Hamming Window를 많이 사용하곤 한다.

  1. Fast Fourier Transform (FFT)
    푸리에 변환은 주파수를 추출할 때 대표적으로 사용하는 알고리즘이다. 해당 알고리즘을 사용해 음성 데이터에 대한 주파수 성분을 얻어낸다.

  2. Mel Filter Bank
    각각 프레임에 대해 얻어낸 주파수들에 대한 Mel값을 얻기 위하여 해당 FIlter을 사용한다. 해당 주파수에 따른 Filter의 차이가 있는데, 고주파 대역으로 갈수록 넓은 삼각형의 Filter을 사용하게 된다. 그래서 모든 Frame이 삼각형 Filter을 통과하게 된다면, Mel-Spectrogram이라는 Feature가 뽑히게 된다.

  3. Discrete Cosine Transform (DCT) 연산
    4번에서 나온 결과물인 Mel-Spectrogram이라는 feature에 대해 행렬을 압축해서 표현하는 DCT연산을 진행한다. 그러면 Output으로 우리가 구하고자 하는 Mel-Frequency Cepstral Coefficients가 나오게 된다.

이 MFCC값을 이용하여 여러 가지 머신러닝, 딥러닝 모델에 학습시킬 수 있다.

profile
노력하는 개발자

0개의 댓글