eubinecto / k4ji_ai

4명의 김씨, 한명의 진씨, 한명의 임씨가 모여서 인공지능을 공부하고 있습니다.
13 stars 0 forks source link

스터디:LSTM:11.5:주파수 스펙트럼 분석을 이용한 음원 처리 #12

Closed eubinecto closed 4 years ago

eubinecto commented 4 years ago

음원 데이터

모노 음원의 시간대 별 정보의 재구성

푸리에 변환

고속 푸리에 변환

eubinecto commented 4 years ago

음원 데이터

슬라이드
image

모노음원의 시간대 별 정보의 재구성

슬라이드
image

푸리에 변환

슬라이드
image

우리가 듣는 자연적으로 만들어진 모든 소리는, 여러가지 주파수의 소리의 혼합이다. "harmonics".

그런 소리를 역으로 그것을 구성하는 여러 주파수의 소리로 decompose하는 것이 푸리에 변환.

비유: 피아노의 화음을 생각하면 된다. 우리가 듣는 피아노 소리는, 특정 주파수의 소리를 나타내는 각 건반의 화음으로 구성된다. 크게 보면 하나의 아름다운 곡이지만, 그 곡을 뜯어보면 여러 건반의 타건음의 혼합.

그럼 푸리에 변환을 쓰는 이유는 무엇인가?: 푸리에 변환을 하면, 시간에 걸친 소리의 크기의 나열 (sequence of scalars)에서 시간대 별로 존재하는 주파수 벡터의 나열을(sequence of vectors)를 얻을 수 있다. 그리고 그 반대의 과정도 가능하다.

좀 더 정확히 말하자면

못 생긴 그림 2: Fourier transform
image

때문에 푸리에 변환을 이용하면 여러 frequency의 소리가 합쳐져서 존재하는 음원을, 각 frequency별로 intensity가 어떻게 되는지, frequency component analysis가 가능하다.

두 도메인을 와리가리 할 수 있기 때문에, frequency-domain으로 변환 후, 없어도 별 변화가 없는 주파수의 소리만을 선택적으로 지우고 다시 time-domain으로 돌려서 음원의 용량을 줄이는 (손실 압축의 한 방법) 마법을 부릴 수 있다.

이게 도대체 무슨 소리? -> mobile systems 과제

feature engineering의 관점에서, 이는 2차원의 time-domain음원을, decompose into a sequence of n-dimensional frequency domain vectors across time할 수 있음을 의미. 우리가 도시소음 분류를 위해 푸리에 변환을 사용하는 이유가 이것.

즉 단순한 scalar의 나열 - > n차원 벡터의 time series로, 더 많은 정보를 담고 있는 벡터의 time series로 변환이 가능하다.

고속 푸리에 변환

슬라이드
image

에이. 너무 삼천포로 빠지시네. 컴공전공하지만 더 이상 공부하기가 힘들다. 죄송.

코드에서는 다음과 같이 사용: https://github.com/eubinecto/k4ji_ai/blob/e94a5d01fb0fb59a82e0a32e016356bbc9a75840/eb/src/chap_11/dataset_sounds.py#L83