Spoken Language Processing

한국어 음성인식에 대해서

햇농nongnong 2022. 3. 10. 15:10

 

* 음성인식의 현황

- 2009년 Toronto 대학의 Geoffrey Hinton 교수가 음성인식기의 acoustic model 을 neural network 로 대체하는 것에 성공하면서 음성인식기의 성능이 23% 개선

- 그 결과로 구글 등 세계적인 IT 기업이 음성인식에 주목하기 시작하고, 많은 기업에서 음성인식기에 DNN을 접목하여 성능 20% 이상 향상 (기존의 오랜 노력 뒤집는 효과)

- 최근에는 transcription을 하면 Microsoft 의 general model 같은 경우 오류발생률이 5% 정도의 수준 (실제로 사람이 받아쓰는 수준) = STT(Speech to Text) 의 경우 사람에 버금가는 수준으로 발전함

- Kaldi 라는 오픈소스의 등장으로 음성인식의 기술들이 많이 통합됨 : Kaldi 는 acoustic model 을 트레이닝하는 역할 (음성인식기에 최적화된 tensorflow 라고도 할 수 있음)

- Kaldi 를 사용하면 기본적으로 acoustic model 트레이닝부터 decoding 까지 해보는 음성인식기 구축을 위한 모든 과정경험해볼 수 있음 (현재도 Daniel Povey 교수가 Center for Language and Speech Processing 에서 음성인식기를 개발하면서 계속해서 Kaldi 업데이트 하고 있음(최신기술도 follow-up 가능))

- 한국어 language model 자체가 영어랑 다르기 때문에 language model 을 어떻게 만드냐에 따라 음성인식의 성능이 달라짐

 

* 한국어 음성인식의 어려운 점

- 영어와 달리 한국어는 교착어에 속함 - 어근과 접사에 의해 단어의 기능이 결정되는 언어의 형태

- 영어의 경우 크롤링할 때 띄어쓰기를 기준으로 고유한 단어의 수가 어느정도 수렴

- 한국어의 경우 '가다' 라는 동사도 '가겠습니다' '갈겁니다' 갔습니다' 처럼 의미가 다 바뀔 수 있음

- 똑같은 테스트를 진행해도 한국어의 경우 고유 단어의 수가 기하급수적으로 증가

- 음성인식기를 만들 때 일정 어휘의 범위 안에서 탐색을 하게 해야하는데, 이 "일정 어휘"를 잡기가 힘듦

--> 따라서 한국어 분석에서는 "형태소 분석" 진행 - but 형태소 분석기오랜 연구를 하고 있는 연구소에서 가지고 있고, 이마저도 새로운 단어가 생기는 경우 계속해서 update 되어야 함 (안그러면 또 성능 저하)

--> 이 한계를 뛰어넘기 위한 시도 : 'morfessor'

= 한국어 교착어 입력하면, 교착어로 이루어진 텍스트 안에서 morpheme(형태소)를 찾아내고, 최소의 morpheme 으로 corpus(말뭉치)를 표현하기 위해 단어를 어떻게 쪼개야 하는지 비지도학습을 통해 자동으로 찾아냄

= 경험의 누적이 아닌 data-driven 방식의 형태소 분석기이기 때문에 일정한 수준의 고유 단어 범위가 설정이 되고, 영어와 비슷한 환경에서 language model 구축이 됨

= 이 과정이 해결이 되면 이후 파트는 영어와 동일. 이 과정까지가 어려운 것이 지금까지의 고충이었음

 

 

 

* 앞으로 공부하면서 알아야 할 것

- 음성인식의 기본단위인 phoneme(음소)을 트레이닝하는데 사용되는 HMM(Hidden Markov Model) 이 어떤 방식으로 사용이 되는지

- HMM 을 사용했을 때 어떻게 우리가 음소단위의 소리를 기계에게 학습을 시킬 수 있는지 - acoustic model

- GMM/HMM 방식에서 DNN/HMM 방식으로 바뀌면서 성능이 개선된 것들이 무엇인지

- 한국어 음성인식 구현을 위해 language model 이 왜 필요하고, 어떤 식으로 접근하여 만드는지, 이것의 성능을 무엇을 가지고 판단하는지

- 음성 데이터 : 음성과 그 음성이 무엇을 의미하는지 나타내는 transcription 이 pair 을 이루어야 함. 수백명 단위의 다양한 사람의 음성 데이터가 입력되어도 toy 레벨로 써볼만한 음성인식기가 돌아가는 정도(최소 50시간 정도의 데이터가 있어야 toy 레벨 수준 가능)

- Zeroth Project : 51.6 시간 한국어 학습 데이터(22263 문장, 50명), 한국어 언어모델 구축을 위한 스크립트 (LM tool-kit), Kaldi training script 등 한국어 음성인식기 구현을 위한 데이터와 툴 포함

 

 

 

 

(이 글은 딥러닝-음성인식 CAMP 조태영 강사님의 인터뷰 https://m.blog.naver.com/fastcampus/221181060609 글을 읽고 정리한 글입니다.)