본문 바로가기
Dev

딥러닝 기반 음성인식

by 호랑2 2023. 5. 1.

논문출처 : 김지환 (2019), 딥러닝 기반 음성인식, 정보과학회지 37(2), 2019.2, 9-15
 

그림의 출처: D. Yu and L. Deng, Automatic Speech Recognition. London: Springer London, 2015.

 
1. 요약
 
본 논문에서는 음성인식에 필요한 특징 파라미터 추출 방법 및 딥러닝을 이용한 음향모델 구현 방법에 대해서 기술하며,
알파고와의 비교분석을 통해서 음성인식 기술의 현 위치를 분석한다.
 
음성신호 저장 시 결정해야 하는 파라미터는 sampling rate 와 sample 당 바이트 수이다.
sampling rate 는 단일 시간(1초) 당 sampling 횟수로써, 음성신호의 음질을 결정한다.
 
Nyquist 이론에 따르면, 모든 신호는 그 신호에 포함된 가장 높은 진동수의 2배에 해당하는 빈도로 일정한 간격으로 샘플링 하면 원래의 신호를 완벽하게 기록할 수 있다. 사람의 가청 주파수 대역은 일번적으로 20Hz ~ 20KHz 로 알려져 있으며 이에 따라 가청 주파수 대역을 복원하기 위해서는 초당 40,000 이상의 sampling rate 를 사용하여야 한다. 다만 현재 음성인식 시스템 개발에서 많이 사용되는 sampling rate 는 초당 16,000이다.
 
이어서 해당 샘플링 데이터를 일정한 범위의 디지털 값으로 표현하는 과정을 양자화 라고 하며, 1바이트로 표현하는 경우 하나의 샘플이 구분가능한 레벨은 2^8 = 256단계, 2바이트로 표현하는 경우 2^16 = 65,536단계가 된다. 따라서 바이트 수가 높을 수록 원본에 가깝게 복원 가능하다. 이렇게 양자화를 거친 디지털 정보를 2진수로 변환하는 과정이 부호화 이며, 부호화 과정에서 sampling rate x 바이트수 x 채널 수 x 시간을 통해 전체 크기가 결정된다.
 
이렇게 저장된 음성 신호에 대해 용량을 최대한 줄이면서 유용한 정보는 최대한 유지하는 특징 파라미터 추출이 필요하다. 이때 일반적으로 사용하는 값이 MFCC 이다.
 
음성 신호는 시간(가로축)에 따른 음압(세로축)의 표현으로, time domain 의 데이터이다. 이러한 음성 신호를 프레임(20ms ~ 40ms)으로 나눈 뒤 FFT 를 이용하여 Spectrum 을 구한다. FFT는 신호를 주파수 성분으로 변환하는 알고리즘으로, FFT를 통해 음성 신호를 frequency domain 으로 변환된 값을 spectrum 이라고 한다. 이렇게 얻어진 spectrum 에 대해 mel-filter bank를 적용하여 얻어낸 값을 mel spectrum 이라고 한다. 사람의 청각기관은 고주파수보다 저주파수 대역에서 더 민감하기 때문에 물리적인 주파수와 실제 사람이 인식하는 주파수의 관계를 표현한 것이 mel scale 이며, 이 mel scale 에 기반한 filter bank 를 mel-filterbank 라고 한다. 이렇게 얻어낸 mel spectrum에 cepstral 분석을 수행하면 MFCC를 추출할 수 있다.
 
cepstral 분석을 통해 신호에서 지배적인 주파수 영역인 Formants 를 연결한 곡선과 spectrum을 분리하여 spectrum의 전반적인 모양인 envelope를 표현하는 정보가 담기게 되며, mel spectrum에 log 를 취하고 DCT 를 통해 MFCC를 추출하게 된다.
이렇게 추출된 MFCC 를 심층신경망(DNN)의 입력층에 입력으로 주면 출력층에서 음소별 분류 확률을 얻게 된다. 이를 모든 윈도우에서 모으게 되면, 윈도우별로 계산한 음소별 분류 확률들의 열(sequence)을 얻게 되고, 이들 열로 부터 최적의 문장을 생성하는 것이 DNN-HMM 방식의 원리이다.
 
추출한 MFCC 가 입력값이 되며 은닉층의 수는 5~8개를 사용하며, 각 은닉층마다 2,048개의 노드를 사용한다. 출력층은 하나의 tied state로 대응되는데 tied state는 음운학적으로 유사한 조합의 단위이며, decision-tree 기반의 state clustering 기법이 주로 사용되고 있다 최종 tied state 수는 tree의 크기에 따라 결정되나, 일반적으로 최적의 크기가 6,000~10,000개인 경우로 알려져 있다.
 
2. 결론
 
바둑판의 경우 19x19 격자로 구성되어 있어서, 착수할 수 있는 지점은 361개가 된다. 이때 각 지점마다 3가지 상태(검은돌, 흰돌, 빈칸) 이 있으므로 바둑판의 상태는 3^361, 약 10^170가지가 존재한다.
 
착수 금지점 등을 고려했을 때 평균적으로 다음 수를 둘 수 있는 격자점의 수가 250개 이고, 바둑게임의 평균 수(흑/백돌이 놓인 총 수)는 150수 정도이기 때문에 바둑에서의 대국의 총 수는 250^150, 약 10^360가지의 대국의 수가 존재한다.
 
따라서 알파고는 10^170개의 유한한 상태 중 하나인 현 상태에서 10^360가지의 유한한 패턴으로부터 2분내에 승률이 가장 높은 돌의 착지점을 찾는 문제를 기술적으로 해결한 것이다.
 
음성 인식의 경우에는 sampling rate 초당 44,100 (가청 주파수 전 대역을 복원 가능한 rate), 샘플당 2바이트를 사용한다고 하면 1초의 음성 신호 저장에 88,200바이트가 필요하다.  각각의 비트는 0 또는 1의 값을 가지므로 입력 가능한 패턴의 수는 2^(88200*8) 이며 이는 약 10^211,680 이다.
 
음성의 입력길이는 1초보다 더 짧거나 길어질 수 있기 때문에 음성인식에서의 입력 가능한 패턴은 무한대이다.
또한 음성대화처리에서는 실시간 응답 처리를 요구하고 있기 때문에 알파고보다 문제의 복잡도가 훨씬 높다고 할 수 있다.
따라서 완벽한 음성인식을 위해서는 아직도 많은 노력이 필요한 상황이다.
 
3. 느낀점
 
아날로그 음성데이터를 디지털 신호로 변환하는 과정에 대해 이해할 수 있었으며,
변환된 데이터를 음성인식이 가능한 데이터로 추출을 통해 입력값을 생성하여 실제 음성인식을 처리하는 원리까지 공부할 수 있었다.
 
또한 음성인식에 사용되는 패턴의 수가 무한대이기 때문에 더욱 정교한 음성인식 구현을 위해서 DNN-HMM 방식에서 개선되어야 할 점이 무엇인지는 추가적으로 더 공부해봐야 하는 과제라고 생각한다.

댓글