컴퓨터로 sound data를 표현하는 방법들에 대하여(Fourier transform, spectrogram, melspectrogram, MFCC)

1. sound representation

 

기본적으로 sound data는 1d signal waveform으로 주어짐

 

 

waveform에서 점을 임의로 뽑아 다음과 같이 1d tensor로 만듦

 

1차원 배열로 wave를 나타낸 모습

 

시간축에 따른 waveform을 그대로 사용하기는 어려워서 주파수 축에 옮기기 위해 Fourier transform을 이용

 

근데 그냥 전부 옮기는 것이 아니고 시간에 따른 변화를 파악하기 위해 굉장히 짧은 구간에서 변형시키는 short time Fourier transform을 사용

 

시간에 따른 변화를 구할려면 sliding window방식으로 구간을 옮겨가면서 변화시켜야함

 

 

짧은 구간인 A(20~25로 hyperparameter)에서 가운데 부분을 강조시키면서 boundary는 약하게 만들어서 spectrum으로 만든다

 

hamming window에 나타난 분포와 waveform의 element wise product로 spectrum을 만든다고 한다

 

window는 B(hop size=offset)만큼 overlap시키면서 sliding시켜서 약해진 boundary를 보충하는 느낌으로 변환 

 

 

2. Fourier transform

 

여러가지가 섞인 시간축의 waveform 각각에 주파수가 어느정도 있는지 wave 하나하나 분해하는 것이 Fourier transform

 

fourier transform으로 변환한 wave들을 모두 합쳐 frequency-magnitude 공간에 나타내면 spectrum

 

주파수 축으로 나타내면 머신러닝이 acoustic feature를 뽑아내기 편함

 

 

wave 하나하나 분해해서 주파수로 만들어서 하나하나 합쳐 spectrum으로 나타냄

 

주파수축으로 나타내면 남자는 저주파수, 여자는 고주파수 등 acoustic feature를 뽑아내기 편함

 

시간축의 wave를 주파수 축으로 바꾸겠다는거네

 

 

3. spectrogram

 

frequency-magnitude spectrum을 시간에 따른 변화를 파악하고자 시간축에 따라 spectrum을 쌓아 만든 것

 

단순히 spectrum을 쌓기보다는 frequency와 magnitude에 log scale을 사용한다.

 

왜냐하면 사람이 소리를 듣는 것은 log scale에 가까워서 그렇다.

 

시간에 따라 주파수를 파악할 수 있음

 

소리를 눈으로 볼 수 있는 이미지로 바꾼 형태

 

spectrogram을 나타낸 그림

 

4. melspectrogram

 

4-1) mel scale

 

사람의 귀는 저주파, 고주파를 인식하는 곳이 다름

 

사람은 동일한 주파수 차이더라도 고주파수 10100hz와 10500hz는 차이를 못느끼지만 저주파수 100hz와 500hz의 차이는 잘 느낌

 

이러한 차이를 반영한 scale변환 함수를 mel scale이라고 부름

 

mel scale을 주파수에 따라 표현한 그림

 

4-2) mell filter bank

 

mel scale을 linear하게 N개의 구간으로 나눠서 얻은 triangular filter

 

mel scale에서 mel filter bank를 구하는 그림

 

 

spectrum에 mel filter bank를 적용하여 얻은 spectrum이 mel spectrum으로

 

주파수 영역대에 따라 filter를 적용하여 다르게 관찰한 것이다.

 

mel filter bank에 spectrum을 적용하여 mel spectrum을 얻는 과정

 

mel spectrum에 log scale을 적용한 log mel spectrum을 시간축으로 쌓아올리면 melspectrogram이 된다.

 

 

 

5. MFCC(Mel Frequency Cepstral Coefficient)

 

사람이 말하는 방식에 따라 특징이 있어서 이러한 점을 반영하고 싶은 것이 MFCC

 

log spectrum에서 높은 부분(=formant)을 뽑아 파형을 그대로 만들면 cepstrum이라고 부름

 

cepstrum을 만드는 과정

 

cepstrum에서 원하는 부분의 값을(12개정도?) 뽑아 시간축으로 쌓아 만든 것이 MFCC라고 한다.

 

MFCC의 모습

 

melspectrogram이나 MFCC나 성능은 비슷하다고 한다... 

TAGS.

Comments