Always awake,

[2탄] 딥러닝 음성 인식 - 디지털 신호의 특징 추출 본문

머신러닝

[2탄] 딥러닝 음성 인식 - 디지털 신호의 특징 추출

호재 P.B 2020. 9. 1. 00:52

"딥러닝을 이용한 음성인식(STT) 설명에 관한 포스팅입니다.

자연 신호의 디지털 신호처리에 대한 포스팅은 아래의 1탄을 참고해주시기 바랍니다."

 

 

[1탄] 딥러닝 음성 인식 - 자연신호의 디지털화

"딥러닝을 이용한 음성인식(STT) 설명에 관한 포스팅입니다. " 2019년도 여름에 우연히 국비교육으로 음성 지능에 관한 강의를 듣게 되었습니다. 기존에 다루던 스프레드시트 형식의 데이터와 다�

everyday-tech.tistory.com

 

본 포스팅에서는 디지털화된 신호에서 특징을 추출하는 기법에 대해 설명하고자 합니다.

데이터 전처리 part 라고 이해하시면 될 것 같습니다.

 


디지털 음성 신호의 특징 추출

 

푸리에 변환(Fourier Transformation)

 

음성 신호는 각 주파사별 신호의 합으로 이루어집니다(1탄 참고)

 

따라서 원 신호에 어떤 정보가 있는지 확인하기 위해서는 주파수별 신호의 세기로 분해하는 작업이 필요합니다.

이때 사용하는 것이 푸리에 변환입니다.

 

<푸리에 변환>

푸리에 변환을 통해 신호를 magnitude, frequency, phase 도메인으로 변환합니다.
  • frequency : 주파수
  • magnitude : 파동의 높이(peak의 높이), 해당 주파수의 파형의 세기로 이해하시면 됩니다.
  • phase : 파장이 시장하는 지점($cosine$, $sine$ 변환에서 각도; 축 상에서 파형 그래프의 이동을 의미)

디지털 음성 신호를 푸리에 변환하게 되면 주파수 별로 복소수($ magnitude + phase*i $) 로 이루어진 1차원 벡터가 됩니다.

 

 

 

 

STFT(Short Term Fourier Transformation)

 

음성 신호는 시계열 정보입니다. 이전 발화나 신호의 세기와 다음 신호에 영향을 주기 때문입니다. 

따라서, 음성 신호 특징 추출 시 시간 정보를 반영해주는 것이 더 적합합니다.

 

주로 신호에서 시간의 구간마다 window를 씌워 Fast 푸리에 변환을 취한 후 이를 종합하는 방법을 사용합니다.

이것이 STFT 입니다.

 

STFT는 신호의 일정 구간마다(window) Fast 푸리에 변환(FFT)을 하는 것입니다.

푸리에 변환 값(1차원 벡터)이 각 window 마다 생성되므로 반환 값의 형태는 2차원 matrix입니다.

 

그리고 주로 주파수에서 신호의 세기 정보만 사용하므로 $phase*i$ 은 일반적으로 제외됩니다.

 

<STFT를 통해 생성되는 matrix>

출처 : http://www.speech.cs.cmu.edu/15-492/slides/03_mfcc.pdf

 

 

MFCC(Mel Filter Ceptral Coefficient)

mel filter bank

STFT 결과로 생성된 time, frequency별 magnitude 정보가 담긴 matrix에서 이제 특징을 추출할 차례입니다.

frequency 차원이 매우 크기 때문이 frequency 구간 별로 정보를 압축하여 특징을 추출하게 됩니다.

  • frequency 차원의 수가 줄어들어 데이터 용량이 작아집니다.
  • 정보를 압축하며 특징을 추출합니다.

여기서 흥미로운 것은 특징을 추출할 때 인간의 청각기관의 성질을 모방한다는 것입니다.

 

인간의 청각기관은 음성을 받아들일 때 낮은 주파수에 민감하게 반응합니다.

<주파수(Hz)에 따른 mel scale>

출처 : https://zetawiki.com/wiki/%EB%A9%9C_%EC%B2%99%EB%8F%84

인간의  청각 기관의 신호 인식(비선형성)을 모방

 

 

이 사실에 기반하여 만들어진 filter가 mel filter bank입니다.

mel filter bank는 낮은 주파수 대역에서 더 세밀하게 정보를 압축합니다(특징을 추출합니다.)

낮은 주파수 대역의 정보를 더 많이 보존하는 것이죠.

 

<mel filter bank>

출처 : https://wiki.aalto.fi/display/ITSP/Cepstrum+and+MFCC

 

낮은 주파수 대역에서 촘촘하게 정보를 압축하기 때문에 더 많은 정보가 보존되는 것입니다.

 

MFCC 생성

 

STFT를 통해 생성된 matrix의 frequency 축에 mel filter bank를 취하게 되면 MFCC가 생성됩니다.

<MFCC>

 


정리

위에서 설명한 디지털화된 음성 신호에서 특징을 추출하여 MFCC를 생성하는 방법에 대해 정리해보겠습니다. 

디지털화 된 음성 신호는 sample의 수가 매우 많은 sequence 데이터입니다.

 

※ 음성 디지털 신호는 매우 많은 sample을 가지고 있습니다.

  - 흔히 사용하는 44.1kHz로 sampling 한 5초 음성 디지털 신호의 샘플 수는 220,500개입니다. ( (44100 samples / 1 sec) * 5 sec )

 

 

이 길고 많은 sample을 바로 학습시키기에는 무리가 있기 때문에 차원을 줄이면서 정보를 최대한 보존하는 특징 추출 작업이 필요합니다. 

 

  1. STFT를 거쳐 time 축의 차원 수가 줄어들게 되고 (frequency 별 신호의 세기로 분해)
  2. Mel filter bank를 거쳐 frequency 축의 차원 수가 줄어들게 됩니다.(낮은 주파수에서 세밀하게 특징 추출)

이렇게 특징이 추출되면 time에 따른 MFCC의 각 벡터들은 시퀀스 모델에 학습이 됩니다.

이 내용은 다음 포스팅에서 진행하겠습니다.

 

 

 


마치며

 

일부 이해한 것을 바탕으로 글을 작성하다 보니 설명이 부족할 수 있습니다.

부족한 부분은 언제든지 피드백해주시면 감사하겠습니다!

 

 

글이 도움이 되셨다면 아래 클릭 한번 부탁드립니다 :)

반응형