ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오디오 특징 뽑아내기
    Sound & Music🔊 2023. 4. 3. 21:05

    오디오의 분석방법으로는 일반적으로 3가지 방법을 이용한다. 

    1. Time - domain : 시간 도메인 분석방법 ( 파형을 시간축에 대해서 나타내면 진폭과 함께 나타남 -> 오디오 파형의 모양을 분석)

    2. Frequency - domain : 진동수 도메인 분석방법 ( 시간에 대해 나타난 파형을 푸리에 변환을 통해 진동수와 각 진동수가 얼마나 들어있는지로 분석)

    3. Time - Frequency - domain : 시간 - 진동수 도메인 분석 방법 ( Gabor Transform을 이용해 각 시간에 대해서 어떤 진동수들이 얼마나 들었는지 분석 -> 스펙토그램의 형태로 나타남)

     

    시간 도메인 분석 절차 

    1. Analog To Digtal Conversion : 아날로그 형태의 소리를 샘플링, 양자화 방법을 통해서 디지털의 형태로 변환한다. 

    2. Framing : 디지털 형태로 전환한 값들을 프레이밍한다. 

    프레이밍 하는 이유

    Frame(프레임)이란 인지가능한 소리 덩어리를 의미한다. 

    샘플링 레이트가 44.1 KHz일 경우, 우리는 1초당 44100개의 샘플을 얻게 된다. 따라서 1초 안에서 하나의 샘플이 차지하는 시간은 0.0227ms으로 매우 짧은 시간이 되는데 인간이 소리로 인지하기 위해서 필요한 소리의 길이는 최소한 10ms가 되어야 하므로 각 샘플로는 소리로서 인지가 불가능하다. 그래서 이를 소리로 인지 가능한 충분한 시간의 길이를 갖도록 만들어 주어야 하는데, 여러 샘플들을 하나의 덩어리로 묶어 인지가능한 소리가 되도록 만들어주는 과정을 프레이밍이라고 한다. 

    일반적으로 하나의 프레임은 256 ~ 8192와 같이 2의 제곱이 이 되는 값을 갖도록 만드는데

    이는 이후 푸리에 변환시 FFT를 적용하기 편리하게 하기 위해서이다. 

     

    샘플링 레이트의 역수는 1개의 샘플의 길이(t)를 말하며 여기에 하나의 프레임을 구성하는 샘플의 개수(K)를 곱하면 하나의 프레임이 갖는 시간의 길이를 나타낼 수 있다. 

    예를 들어 샘플링 레이트가 44.1KHz이고 하나의 프레임을 512개의 샘플로 구성한다고 하면 프레임 하나당 11.62ms로 인지 가능한 소리길이 범위로 들어온다. 

     

    3. feature computation( 오디오에서 특징 추출) : 프레임들에 대해 시간 도메인에서의 오디오의 특징들을 추출한다. 

    4. aggregation(집계)  : 추출한 특징 값들을 바탕으로 필요한 정보를 집계한다. (각 프레임 특징들의 평균값, 중앙값 등등)

    5. 위에서 집계한 값들을 편리하게 사용할 수 있도록 벡터, 행렬 등으로 정리한다. 

     

    진동수 도메인 분석 절차

    진동수 도메인 분석 절차의 과정은 시간 도메인 분석 절차와  전반적으로 동일하지만

    중간 과정엥서 시간 도메인을 진동수 도메인으로 바꾸어주는 푸리에 변환 과정이 필요하다. 

     

    Spectral Leakage 

    Spectral Leakage는 진동수 도메인 분석 절차 중에 발생하는 문제 중 하나로 시간 도메인을 진동수 도메인으로 변환시

    원래의 신호에 없던 진동수가 생기는 현상이다. 

     

    Spectral Leakage의 원인 분석해 보면

    푸리에 변환 시 주기 함수인 사인 코사인함수를 기저로 하여 내적을 통해 시간 축상의 파형을 각 진동수에 대해 분해한다. 

    따라서 푸리에 변환에 대상이 되는 파형의 경우에는 주기를 가지고 있음을 전제로 하는데

    주어진 파형의 주기 수가 정수 떨어지지 않은 경우에는 한 주기의 형태를 갖추지 못하는 파형들이 생기게 되고 이러한 파형 들은 끝 부분에 불연속점이 생기게 된다. 

    불연속 값을 연속적인 형태를 가진 사인, 코사인으로 표현하려 하면 아래와 같이 진동수가 매우 커 짧은 시간 동안 극단적으로 변화하는 형태를 사용해야 하기 때문에 푸리에 변환시 원래 파형에는 들어 있지 않았던 진동수들이 나타나게 된다. 

     

    Windowing

    푸리에 변환시 불연속점 때문에 발생하는 Spectral Leakage 현상을 해결하기 위해 고안한 방법이 Windowing이다. 

    불연속점은 각 주기의 양끝단에 발생하기 때문에 이 끝단의 값들이 푸리에 변환시 없던 진동수를 만들어내는 것을 막기 위해서 위와 같은

    윈도우 함수를 이용하여 양쪽의 값들을 죽여버리는 것이다. 

     

    프레임에 대하여 윈도우 함수를 적용하면 위와 같이 양쪽 값들이 줄어들어 이 때문에 발생하는 Spectral Leakage 문제를 줄일 수 있다. 

    근데 프레임의 양끝값들을 죽임으로서 또다른 문제가 발생하게 되는데 바로 값들을 죽인 것 자체가 문제이다.

    해당 값들도 오디오를 구성하는 요소이기 때문에 오디오 분석을 위해서는 이 값들이 필요하다. 

    각 프레임의 양 끝값이 모두 죽어 버렸다.

     

    이 새로운 문제를 해결하는 간단한 방법이 있는데 프레이밍시 각 프레임의 값들간의 중첩을 두는 것이다. 

    사각형은 각 프레임을 나타내고 안의 종모양 윈도우 함수를 적용하였다. 

    빨간색 사각형에서 윈도우 함수로 죽은 부분을 초록색 사각형에서는 살린 채로 들고 있기 때문에

    윈도우 함수 적용시 오디오를 구성 요소들이 없어지는 것을 막을 수 있다. 

     

    프레이밍시에 각 프레임간에 중첩되는 부분을 둔 이후 각 프레임에 대하여 윈도우 함수를 적용하여 Spectral Leakage 문제를 해결한 다음에 푸리에 변환을 하여 진동수 도메인에서의 분석을 진행한다. 


    댓글

Designed by Tistory.