인공지능을 좋아하는 곧미남

[Spectrogram] 진동 데이터를 2D 데이터로 변환! 본문

데이터분석 및 전처리방법/신호처리

[Spectrogram] 진동 데이터를 2D 데이터로 변환!

곧미남 2023. 1. 30. 16:55

소리의 파동 진동수가 작으면 낮은 에너지를 가진 저음이 되고, 진동수가 크면 많은 에너지를 가진 고음이 된다. 저음과 고음은 실제로 파동의 진동수로 구분되고 이를 주파수 영역(Hz)로 표기한다. 따라서 주파수 영역대의 진폭 데이터를 얻어 진동, 음성 등의 데이터를 처리할 수 있는 스펙트로그램 2D 이미지를 얻는 방법에 대해서 알아보겠습니다.

 

진폭과 시간 축으로 얻어지는 진동 데이터를 진폭과 주파수 영역대 축으로 변환하는 Fast Fourier Transform(FFT)와 주파수 영역대와 시간 축으로 변환하는 Spectrogram에 대해 이해하고, 주파수를 멜 단위(Mel unit)로 변환한 스펙트럼인 Mel-Spectrogram의 활용에 대해서 알아 보겠습니다.

 

이러한 데이터 처리 기술은 디지털 신호 처리를 위해 스펙트로그램 이미지로 변환하여 CNN을 통해 진동, 소음의 이상치 탐지 등에 활용할 수 있습니다.

 

<INDEX>

1. Spectrogram을 활용하는 이유

 

2. Fast Fourier Transform

 

3. Short Time Fouriter Transform

 

4. Spectrogram

 

5. Mel-Spectrogram

 

6. Mel-Frequency Cepstral Coefficients


1. Spectrogram을 활용하는 이유

진동 중 음성 데이터를 활용한 스펙트로그램은 아래 그림과 같이 x축 시간, y축 주파수 영역대에 따른 pixel 데이터로 나타낸다. 여기서 pixel 데이터는 dB(데시벨)로 나타내고 이를 통해 음성 데이터의 특징 추출이나, 음성 데이터 처리에 활용된다. spectrogram 이미지에서 픽셀의 값 자체인 amplitude에 decibel 함수를 적용하여 log scaling을 해준다.

2. Fast Fourier Transform

아래 첫번째 사진과 같이 진동 데이터를 얻으면 신호가 f(x) 함수의 파형으로 표현된다. 하지만, 해당 데이터는 특정 주파수대 영역에 대해서 판단할 수 있는 정보가 없다. 그래서 해당 진동 데이터가 나타내는 진폭이 어떤 특정 주파수 영역대인지 알기 위해 FFT를 활용한다. 

그림 1. FFT 변환

진동을 할때 여러가지 주파수 영역대의 파형들이 중첩되어 하나로 나타나게 된다. (오른쪽 빨간색 plot)

그림 2. FFT 변환 도식화

이러한 여러가지 주파수 영역대를 특정하기 위해 FFT 처리를 통해 특정 주파수 영역의 진폭이 얼만큼 큰지 나타낸다. (왼쪽 파란색 plot) 이것이 FFT의 역할이다.

3. Short Time Fouriter Transform

STFT는 데이터에서 시간에 대해 구간을 짧게 나누어 나누어진 여러 구간의 데이터를 각각 푸리에 변환하는 방법을 뜻한다. 예를들어 1분 동안 측정한 진동 데이터가 있다면, 1분 전체 데이터를 활용하는게 FFT이고 1분을 3등분하여 20초씩 활용하는게 STFT라고 이해하면 빠르다.

 

그렇다면, 왜 사용할까?

 

FFT는 내가 알고 싶은 시점에서의 주파수 성분을 알수가 없다. 그래서 STFT를 활용해서 시점을 나누어 내가 알고 싶은 시점에서의 주파수 성분을 파악할 수 있게된다.

그림 3. STFT 예시1

더 쉽게 설명을 하면, 그림 2에서는 전체 파형에 대해서 FFT를 하면 전체 시간에서의 주파수 영역을 안다. 하지만, STFT는 내가 원하는 간격마다 FFT를 수행하기 때문에 그림 3과 같이 2초마다 새롭게 주파수 영역대가 업데이트 되는 것을 알 수 있다.

그림 4. STFT 예시2

4. Spectrogram

자,, 다시 스팩트로그램에 대해서 정리를 해보자면, 진동, 음향 데이터가 들어오면 Y축은 진폭(EX-dB) X축은 시간이다.

 

이 데이터의 주파수 성분을 파악하기 위해 FFT나 STFT 처리를 통해 얻은 데이터는 Y축 진폭, X축 주파수 Frequency (Hz)이다. 

 

그러면, 주파수와 시간 축으로 2D Plot을 하고 pixel 값으로 진폭을 나타내는 데이터를 만든다면, 특정 시간, 주파수 영역, 진폭에 대한 데이터를 모두 활용할 수 있다.

 

그래서 스팩트로그램으로 변환을 하여 진동, 음향에 대한 시계열 진폭 데이터를 주파수 영역, 시간, 진폭 데이터로 변환하여 진동 데이터의 패턴 분석을 할수 있게 된다.

 

5. Mel-Spectrogram

인간은 음성 신호를 인식할 때 주파수를 선형적으로 인지하지 않고 비선형적으로 인지하게 된다. 예를들어, 서서히 소리가 안들리는 현상을 생각해보면 된다. spectrogram의 y-axis인 frequency에도 log를 취해서 mel-scale로 바꾼다.

 

해당 수식과 같이 frequency를 입력으로 log 스케일링을 한다.

6. Mel-Frequency Cepstral Coefficients (MFCC)

MFCC는 오디오 신호에서 추출할 수 있는 feature로, 소리의 고유한 특징을 나타내는 수치이다.

7. 고찰

스펙트로그램을 활용하여 음성 데이터의 특징을 추출하여 음성 분류하는 과제를 수행해보겠다. 이는 데이콘에서 과거에 진행했던 데이콘 Basic 음성 분류 경진대회 데이터를 활용하겠다. 추후 게시 참고(https://dacon.io/en/codeshare/5153)

 

8. 참고 문헌

https://newsight.tistory.com/294

Comments