MFCC에 대한 기본적인 이해

 | #Artifical Intelligence#Machine Learning#Audio

MFCC는 Mel-Frequency Cepstral Coefficient의 약자로, 약자에서 볼 수 있듯이 멜 스펙트럼(Mel Spectrum) 에서 Cepstral(켑스트럴) 분석을 통해 추출된 값이다.

벌써부터 머리가 아프다. 멜 스펙트럼, 켑스트럼…. 일단 멜 스펙트럼부터 살펴보자.
오디오 시그널은 대충 이렇게 생겼다.
image
이 오디오 시그널을 Framing한다. 여기서 Framing이란 오디오 신호를 프레임별(보통 20ms ~ 40ms)로 나눈다는 뜻이다. 이후, 이에 FFT(Fast Fourier Transform)을 적용한다.

FFT란 고속 푸리에 변환으로, 주기성과 대칭성을 이용하여 DFT(Discrete Fourier Transform, DFT)와 그 역변환을 빠르게 수행하는 알고리즘이다. DFT의 시간 복잡도는 O(n^2)인데 반해 FFT는 O(nlogn)이므로 왜 Fast인지 충분히 이해 가능하다. 이는 오디오 및 음향 측정 분야에서 매우x100 중요한 측정 방법으로, 신호를 주파수 성분으로 분해하여 주파수의 영역을 표현한다. 푸리에 변환에 대한 더 자세한 내용은 다음에 다시 다루도록 하자.

여튼, 이 오디오 시그널을 Framing하여 FFT를 적용하면, 스펙트럼(Spectrum)을 구할 수 있다. 스펙트럼은 주파수에 대한 정보를 가졌고, 예를 들면 각 주파수의 대역별 세기를 알려준다. 이 스펙트럼에 Mel Filter Bank을 적용하면 멜 스펙트럼이 구해지는 것이다.
두통이 심해진다. 조금 이해하려고 했더니 또 새로운 개념이 나온다. Mel FIlter Bank란 또 무엇인가? Mel Filter Bank를 쉽게 설명하면, 사람의 청력은 1000Hz 이상의 주파수에는 덜 민감하므로 1000Hz 전까지는 Linear하게, 그 이상은 Log scale로 변환해 주는 것이다. 이를 왜 하는 것이냐면, 기존의 헤르쯔 스케일은 사람이 소리를 받아들이는 영역에 대한 구분점을 반영하지 못하기에, 이를 사람이 쉽게 인지할 수 있는 스케일로 변환하는 것이다. 이 또한 자세한 내용은 다음에 다시 다루도록 하자.

멜 스펙트럼을 구했다. 하지만 이 멜 스펙트럼이 MFCC가 되기에는 아직 한 단계가 남았다. 마지막 단계는 바로 Cepstral 분석인데, 앞서 스펙트럼은 주파수에 대한 정보를 가지고 있다고 했는데, Cepstral 분석은 이 정보를 추출하는 방식이다. 위 스펙트럼 사진을 보면, 피크들이 있다는 것을 알 수 있을 것이다. 피크는 말 그대로다. 제일 높이 찌르는 점들인데, 이를 멋들어지게 표현하면 포먼트(Formants), 지배적인 주파수 영역이라 칭할 수 있겠다.
프로듀싱을 진행하다 보면, 분명 각각의 악기의 EQ를 살펴보면 음파가 깨지는 현상(피크가 한도값을 넘어가는 현상)이 일어나지 않는데, 같이 재생하면 EQ가 빵! 하고 터지는 경우가 있다. 이는 같은 주파수 대역의 소리가 만나 증폭되는 현상으로, 포먼트의 정의는 소리가 공명되는 특정 주파수 대역이므로 약간 다르지만, 이 정도로만 현상을 이해하고 넘어가도 충분할 것이다.
여기서 Cepstral 분석이 하는 일은, 포먼트들을 연결한 곡선과 스펙트럼을 분리하는 것이다. image
포먼트들을 연결한 곡선을 다른 이름으로는 Spectral Envelope라 칭하고, 우리가 그렇게 구하고 싶었던 MFCC는 Spectral Envelope와 Spectrm을 분리하는 과정에서 얻어지는 것이다.

레퍼런스:
MFCC. 이해하기
Fast Fourier Transform
오디오 데이터 전처리(4) Mel Filter Bank
Mel Frequency Cepstral Coefficient Tutorial