[신호처리] 5. STFT/FFT, Spectrogram/Mel-Spectrogram이란?
음성처리를 할 때, feature로 Spectrogram을 자주 사용하게 됨
왜 자주 사용하는지와 어떻게 신호를 Spectrogram으로 바꿔서 사용하는지 알아보자!!
Fast Fourier Transform, FFT
고속 푸리에 변환
이전 푸리에변환 포스팅에서 DFT-이산푸리에변환을 통해 주로 푸리에 변환을 한다고 언급
고속 푸리에 변환은 DFT를 빠르게 계산하는 하나의 알고리즘
단순 DFT는 계산량이 $O(n^2)$이라 고속 푸리에 변환 $O(n logn)$이 훨씬 효율적
이 과정을 통해 시간으로 분석할 때보다 훨씬 더 많은 정보 즉, linearity, resoulution, robustness 등을 알 수 있음
Short Time Fourier Transform, STFT
데이터에서 시간에 대해 구간을 짧게 나누어 나누어진 여러 구간의 데이터를 각각 푸리에 변환하는 방법
FFT는 내가 알고 싶은 시점에서의 주파수 성분을 알수가 없음
따라서, STFT를 사용해 시점을 나누어 그 시점마다의 주파수 성분을 파악
$ \hat f(t, u) = \int_{-\infty}^{\infty}f(t')w(t'-t)e^{-i2\pi t'u}dt' $
신호를 슬라이딩 윈도우 기법처럼 특정 길이를 가진 윈도우를 시그널 위에 움직이면서, 각각 윈도우에서 푸리에 변환
윈도우의 크기를 잘 조절해서 시간, 주파수 영역의 resolution 문제를 잘 해결하는 것이 중요
진동이 빠른 부분(높은 주파수)은 윈도우 크기를 작게 가져가고, 진동이 느린 부분(낮은 주파수)은 윈도우 크기를 넓게 가져가는 것이 중요
그러나, STFT는 고정된 윈도우 사이즈에 대해서만 계산이 가능. 이의 단점을 해결한 것이 바로 웨이블릿 변환
Spectrogram
x축은 시간 축 - 단위: frame, y축은 주파수를 의미
각 시간당 주파수가 가지는 값을 값의 크기에 따라 색으로 표현하여 3차원을 2차원으로 표현
$\to$ STFT의 단순히 magnitude 부분을 취해서 db스케일로만 변환해주면 spectrogram이 됨
Mel-Spectrogram
인간은 음성 신호를 인식할 때 주파수를 선형적으로 인지하지 않고 비선형적으로 인지
설명하자면, 인간은 높은 주파수보다 낮은 주파수에서 차이를 더 잘 감지함
500Hz와 1000Hz의 차이는 쉽게 구분할 수 있지만 두 쌍 사이의 거리가 같더라도 10,000Hz와 10,500Hz의 차이는 거의 구분할 수 없음
Mel-scale 변환은 사람의 청각 특성을 반영하여 음성 신호의 중요한 특징을 더 잘 잡아낼 수 있게 함
청취자에게 동일한 거리에서 들리도록 하는 pitch 단위가 제안됨
Spectrogram의 y축인 주파수에 $log$를 취해서 mel-scale로 변환
References
https://kor-razavai.tistory.com/54
Fast Fourier Transform (FFT) 정리
오늘은 회로를 설계하는 데도 중요하고, 시스템 레벨에서는 필수적이라고 할 수 있는, 가장 강력한 회로 분석 기술인 Fast fourier transform 에 대해 다뤄보겠습니다. FFT 에 대해 엄밀하게 다루는 방
kor-razavai.tistory.com
https://velog.io/@eunjnnn/Understanding-the-Mel-Spectrogram
Understanding the Mel Spectrogram
다음 블로그를 번역했습니다.signal은 시간이 지남에 따라 특정 양의 변화입니다. Audio의 경우 변화하는 양은 기압(air pressure)입니다. 이 정보를 디지털 방식(digitally)으로 캡처하려면 어떻게 해야
velog.io
https://soonhandsomeguy.tistory.com/62
[Spectrogram] 진동 데이터를 2D 데이터로 변환!
소리의 파동 진동수가 작으면 낮은 에너지를 가진 저음이 되고, 진동수가 크면 많은 에너지를 가진 고음이 된다. 저음과 고음은 실제로 파동의 진동수로 구분되고 이를 주파수 영역(Hz)로 표기한
soonhandsomeguy.tistory.com
https://ralasun.github.io/signal%20analysis/2021/06/21/stft-dwt/
Short-time Fourier Transform(STFT) 과 Discrete Wavelet Transform(DWT) · Ralasun Resarch Blog
Short-time Fourier Transform(STFT) 과 Discrete Wavelet Transform(DWT) 21 Jun 2021 | signal-analysis Fourier Transform의 단점은 무한히 흘러가는 파동에 대한 주파수 분석만 가능하기 때문에 국소적인 시간 부분 단위로는
ralasun.github.io
https://sanghyu.tistory.com/37
STFT(Short-Time Fourier Transform)와 Spectrogram의 python구현과 의미
음성신호처리에서 아주 기본적인 feature로 spectrogram이 존재한다. spectrogram을 많이 쓰지만 왜 짧은 시간으로 나눠서 Fourier transform을 하는 지에 대해 생각하지 않고 쓰는 경우가 많다. Python에서 함
sanghyu.tistory.com