본문 바로가기

신호처리기초

신호를 STFT시 window에 따른 spectrogram의 shape 살펴보기

2초짜리 waveform을  48kHz한다고 하자.  

1. FFT의 window size가 128일 때 window 길이는 몇 초일까?
2. (time 축에 관하여)frame의 개수는 어떻게 될까?
    1) FFT의 window size가 64일 때 frame의 개수는 어떻게 될까?
    2) FFT의 window size가 128일 때 frame의 개수는 어떻게 될까?
    3) FFT의 window size가 128, hop size가 64일 때 frame의 개수는 어떻게 될까?
3. (frequency 축에 관하여)frequency bin은 어떻게 될까?
    1) FFT의 window size가 64일 때(64 point FFT)   
    2) FFT의 window size가 128일 때(128 point FFT)

 

 

1. FFT의 window size가 128일 때 window 길이는 몇 초일까?

1초에 48000개로의 sampling을 했으니 sequence length T = 2* 48000 이 되겠다.

 

1. 하나의 window가 128 point를 취해서 하나의 frame으로 만들게 되니 

$\dfrac{\textrm{window_length}}{\textrm{sampling_rate}}$$\dfrac{128}{48000}$=0.00267(sec)이 되겠다.

2. (time 축에 관하여)frame의 개수는 어떻게 될까?

 

기본적으로 $\dfrac{\textrm{sequence_length}}{\textrm{shifted_length}}$을 이행하면 된다.

1) window = 64 : $\dfrac{64}{48000*2} = 1500$

2) window = 128 : $\dfrac{128}{48000*2} = 750$

 

3) window = 128, hop_size = 64 : hop_size =  shifted_length = 64이다. 여기서는 앞 뒤로 padding을 넣어 겹치는 구간 개수(T를 64로 나눈 개수, 1500개) + frame1이 되어 1501개가 된다. 

 

3. (frequency 축에 관하여)frequency bin은 어떻게 될까?

 

Nyquist theorem에서 보았듯, 이산 신호를 푸리에 변환하면 주파수 스펙트럼이 sampling rate $f_s$마다 반복된다.

N point DFT[FFT]를 상기해보면 frequency 영역을 N개의 bin으로 쪼개고 그것의 summation으로 나타낸다.

1)  N point FFT가 64 point일 때 64개의 frequency bin이 생기는 것이고

한 bin당 48000 / 64 = 750 Hz 씩 쪼개진다.

 

 

 

이때 spectrogram으로 나타내어보면 [0, 24000]Hz까지 375개의 bin으로 나타나있는데 그 이유는 대칭성으로 인해 반쪽만 보면 되기 때문이다.

 

 

2) N point FFT가 128 point 일 때 128개의 bin이 생기고

한 bin 당 48000 / 128 = 375Hz씩 구간이 나뉜다.

 

 

3의 1) vs 2)를 비교해보면 window 길이가 길 때 (FFT point가 많을 때) FFT point 만큼 frequency를 더 잘게, 상세하게 잘라서 보게 된다.

이러한 면에서 window 길이에 따라 frequency resolution가 영향을 받는다고 이야기할 수 있고 window 길이가 길수록 FFT point도 많아지면서 bin을 그만큼 잘게 나누므로 frequency resolution이 커지게 된다.