ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ASR Study] 2. Acoustic Feature Extraction - Fourier Transform과 MFCC
    AI/Speech 2024. 1. 13. 23:10
    728x90

     

    [ASR Study] 2. Acoustic Feature Extraction - Fourier Transform과 MFCC

     

     

     

     

    • MFCC
      •  기존 시스템은 물론 최근 엔드투엔드(end-to-end) 기반 모델에 이르기까지 음성 인식 시스템에 널리 쓰이는 피처
      • 음성 인식과 관련해 불필요한 정보는 버리고 중요한 특질만 남긴 것
      •  뉴럴네트워크 기반 피처 추출 방식과는 달리 음성 도메인의 지식과 공식에 기반한 추출 방법
      • 음성 입력이 주어지면 피처가 고정된(deterministic) 형태
      • 푸리에 변환(Fourier Transform)을 기반으로 함 
        • 시간과 주파수 도메인 관련 함수를 이어주는 수학적인 연산
        • 음성 신호의 스펙트럼 분석 등에 필수적

     

     

     

     

    푸리에 변환(Fourier Transform)

     

     

    • Fourier Transform
      • 시간(time)에 대한 함수(혹은 신호)와 주파수(frequency)에 대한 함수(혹은 신호)를 잇는 수학적인 연산
      • 예시 
        • 두 개의 단순파(simple wave)가 시간 도메인에서 복합파(complex wave)로 표현
        • 푸리에 변환을 실시하면 주파수 도메인에서 두 개의 주파수 성분으로 분해
        • 반대로, 주파수 도메인에 푸리에 변환을 실시하면 시간 도메인에서 복합파를 만들어낼 수 있음

     

     

     

    • Discrete Fourier Transform
      • 음성 인식에서는 일반적으로 이산 푸리에 변환(Discrete Fourier Transform)이 쓰임
        • 컴퓨터는 이산 신호를 처리하는 데 적합하기 때문
        • 이산이란 연속(continuous)과 반대되는 말로써 신호의 값이 연속적이지 않고 띄엄띄엄 있어서 이것들을 제외한 시간이나 주파수에서는 값이 0인 것을 뜻함
      • 수식 
        • 이산 푸리에 변환을 실시한 뒤 이를 다시 원래 도메인으로 변환하는 과정을 역푸리에 변환(Inverse Fourier Transform)
        •  이를 이산 신호에 대해 실시한 것이 이산 역푸리에 변환(Inverse Discrete Fourier Transform)

    수식 1. DISCRETE FOURIER TRANSFORM과 수식 2. INVERSE DISCRETE FOURIER TRANSFORM

     

     

     

     

    •  Fourier Transform의 원리 
      • 오일러 공식에 기반 
        • 삼각함수와 지수함수에 대한 관계를 나타냄 

    EULER'S FORMULA

     

    EULER’S FORMULA

    • exp(iθ) : 복소 평면상 반지름이 1인 단위원에 대응
      • 오일러 공식에 의해 실수 파트(real unit, 코사인에 대응)와 허수 파트(imaginary unit, 사인에 대응)의 합으로 표현 가능
      • 복소 지수 함수(cis)는 오일러 공식으로부터 바로 유도 가능 
        • 이 복소 지수 함수는 푸리에 변환의 시작점 - 노란색 파란색 주기함수에 대응 

    복소 지수 함수

     

     

     

     

    • 수식 설명
      •  xn은 시간 도메인의 n번째 샘플
      • Xk는 주파수 도메인의 k번째 푸리에 변환 결과물
      •  k/N은 복소평면상 단위원에서 얼마나 빠른 속도로 회전하는지 나타내는 각 속도(angular velocity)를 가리킴
        • n는 시간 인덱스(time index)
        • 시간 인덱스가 1 증가한다고 할 때 각 속도 값이 클 수록 그림2의 녹색 실선에 해당하는 움직임이 커지게 됨 
      • 두번째 줄을 보면 푸리에 변환 결과는 복소수(complex number)
        • 코사인 함수와 관계 있는 실수부(real part)와 사인 함수와 관계 있는 허수부(imeginary part)로 구성
      • 첫번째 줄 
        • exp 앞에 시간 도메인의 원래 시그널  xn이 곱해짐
        • 지수를 포함한  exp항은 복소평면 단위원 위에서 이뤄지는 운동을 의미
        • 단위원의 반지름은 1이므로 수식1의 시그마 안에 있는 점들의 복소평면상 좌표값은  xn에 의존적
        • 복소평면상 이들 점들을 모두 더하는 것이 이산 푸리에 변환을 적용한 Xk
          •  주파수(frequency)가  k/N 일 때 시간 도메인의 원래 신호의 무게 중심
          • 시간 도메인 원래 신호에서  k/N에 해당하는 주파수 성분

     

     

    • DFT Matrix
      • 이산 푸리에 변환을 matrix form으로 표현하면 ... 
      •  벡터  x는 시간 도메인의 원래 신호, 행렬  W는 수식1 exp항에 대응
        • 따라서 W의 각 행은 복소평면상 단위원에서 도는 각기 다른 각 속도를 나타냄

    DISCRETE FOURIER TRANSFORM

     

    FOURIER TRANSFORM

     

     

    • 예시 
      • 시간 도메인의 원래 음성 신호가 8개일 때 이산 푸리에 변환을 수행하기 위한 DFT 행렬

     

     

     

     

    • 고속 푸리에 변환(Fast Fourier Transform)
      • 기존 푸리에 변환에서 중복된 계산량을 줄이는 기법
    •  이산 코사인 변환(Discrete Cosine Transform)
      • 이산 푸리에 변환과 유사하나 복소수 파트를 날리고 실수 파트만을 사용해 효율성을 높임

     

     

     

    MFCC (Mel-Frequency Cepstral Coefficients)

     

     

    Mel-Frequency Cepstral Coefficients(MFCC)를 만드는 전체 과정을 도식화한 그림

     

     

    • Mel-Frequency Cepstral Coefficients(MFCC)를 만드는 전체 과정
      1. 입력 음성을 짧은 구간(대개 25ms 내외) 나눔 ->  잘게 쪼개진 음성을 프레임(frame)
      2. 프레임 각각에 푸리에 변환(Fourier Transform)을 실시해 해당 구간 음성(frame)에 담긴 주파수(frequency) 정보를 추출
      3. 모든 프레임 각각에 푸리에 변환을 실시한 결과를 스펙트럼(spectrum)
      4. 스펙트럼에 사람의 말소리 인식에 민감한 주파수 영역대는 세밀하게 보고 나머지 영역대는 상대적으로 덜 촘촘히 분석하는 필터(Mel Filter Bank)를 적용
        • 이게 멜 스펙트럼(Mel Spectrum) / 여기에 로그를 취한 것이 바로 로그 멜 스펙트럼(log-Mel Spectrum)
      5.  로그 멜 스펙트럼에 역푸리에변환(Inverse Fourier Transform)을 적용해 주파수 도메인의 정보를 새로운 시간(time) 도메인으로 바꾼 것

     

     

     

    Step 1. Raw Wave Signal -> Preemphasis

     

    • Preemphasis
      • 고주파 성분의 에너지를 올려주는 전처리 과정
      • 사람 말소리를 스펙트럼(spectrum)으로 변환해서 관찰하면 일반적으로 저주파(low frequency) 성분의 에너지(energy)가 고주파(high frequency)보다 많은 경향 (모음에서 이런 경향 많이 보임)
        • 고주파 성분의 에너지를 조금 올려주면 음성 인식 모델의 성능을 개선할 수 있다
      • 효과
        • 상대적으로 에너지가 적은 고주파 성분을 강화함으로써 원시 음성 신호가 전체 주파수 영역대에서 비교적 고른 에너지 분포를 갖도록 함.
        • 푸리에 변환시 발생할 수 있는 numerical problem 예방.
        • Signal-to-Noise Ratio(SNR) 개선.
      • 수식 
        • preemphasis coefficient  α는 보통 0.95나 0.97을 사용

     

     

    Step 2. Framing 

     

    • 음성 신호가 stationary하다고 가정해도 좋을 만큼 원시 음성 신호를 아주 짧은 시간 단위(대개 25ms)로 잘게 쪼개기 
      • stationary란 ‘마치 지속적으로 울리는 사이렌 소리처럼 시점이 변하더라도 해당 신호가 변하지 않는다’는 걸 의미
    • 적용 이유 
      •  원시 음성 신호는 아주 빠르게 변화(non-stationary)
        • 분석 대상 시간 구간이 지나치게 길 경우 빠르게 변화하는 신호의 주파수 정보를 정확히 캐치하기 어려울 뿐더러 주파수 정보가 전체 시간 구간에 걸쳐 뭉뚱 그려져 음성 인식 모델의 피처로서 제대로 작동하기 어려움

     

    Step 3. Windowing 

     

    • 각각의 프레임에 특정 함수를 적용해 경계를 스무딩하는 기법
    •  대표적으로 해밍 윈도우(Hamming Window)라는 함수가 있음 
      • 수식 ( n은 해밍 윈도우 값 인덱스,  N은 프레임 길이)
        •  프레임 중간에 있는 값들은 1이 곱해져 그대로 살아남고 양 끝 부분은 0에 가까운 값이 곱해져 그 값이 작아짐 

    RECTANGULAR WINDOW VS HAMMING WINDOW

     

    • 해밍 윈도우(Hamming Window) 쓰는 이유 
      • Rectangular Window : 원시 음성 신호를 짧은 구간 단위로 잘게 쪼개는 framing을 수행
        • Rectangular Window로 자른 프레임의 양끝에서는 신호가 살아 있다가 갑자기 죽는(=0) 상황이 발생
        • 이같은 프레임에 이후 푸리에 변환을 실시하게 되면 불필요한 고주파(high frequency) 성분이 살아남게 됨
      • 해밍 윈도우를 적용하게 되면 그림의 하단 우측처럼 양끝 부분이 스무딩되어 앞서 설명한 부작용을 완화할 수 있게 됨

     

     

     

    Step 4. Fourier Transform 

     

    • 고속 푸리에 변환(Fast Fourier Transform) 적용 
      • 시간(time) 도메인의 음성 신호를 주파수(frequency) 도메인으로 바꾸는 과정
    • 진폭은 이 주파수 성분의 크기를, 위상은 해당 주파수의 (복소평면상 단위원상)위치를 나타냄
    • MFCC를 구할 때는 음성 인식에 불필요한 위상 정보는 없애고 진폭 정보만을 남김 

     

     

     

    Step 5. Log-Mel Spectrum

     

    • 사람의 소리 인식은 로그(log) 스케일에 가깝다
      •  사람이 두 배 큰 소리라고 인식하려면 실제로는 에너지가 100배 큰 소리여야 한다
    • 멜 스펙트럼 혹은 로그 멜 스펙트럼은 태생적으로 피처(feature) 내 변수 간 상관관계(correlation)가 존재

     

     

     

     

    References

     

    https://ratsgo.github.io/speechbook/docs/fe

     

    Feature Extraction

    articles about speech recognition

    ratsgo.github.io

    https://ratsgo.github.io/speechbook/docs/fe/ft

     

    Fourier Transform

    articles about speech recognition

    ratsgo.github.io

    https://ratsgo.github.io/speechbook/docs/fe/mfcc

     

    MFCCs

    articles about speech recognition

    ratsgo.github.io

     

    728x90
Designed by Tistory.