[음성] Kaldi Speech Recognition Toolkit
안녕하세요. 양재동 메이커 입니다.
지난 주에 음향 음성 오디오 언어 처리 그룹 Soundly - 딥러닝 및 머신러닝 주관하는 세미나에 참석 하였습니다. 발표가 전문 분야에 집중 되어 아직은 제 역량이 많이 부족한을 느끼는 자리 였습니다.
얼마전 공유해 드린 Google API와 유사하게 무료로 사용할수 있는 Kaldi 란 것이 있어 소개해 봅니다.
초기 버전의 C++로 작성되었으나 지금은 파이선도 지원 하기 시작 했답니다.
인터넷을 찾아 보면 한국어로 변환 된 프로젝트가 있어 관련 링크도 같이 공유해 드리며, 깊게 파고 드실 분들은 링크 참조해서 도전해 보시기 바랍니다.
1. Audio Data
- 2018.07.16: 95.7 시간 (46,347발화, 181명, 27,330문장)
- 2018.04.09: 76.6 시간 (35,139발화, 137명, 16,472문장)
- 2018.02.03: 51.6 시간 한국어 학습데이터 (22,263 발화, 105명, 3000 문장)
- License: CC BY 4.0
- 현재 OpenSLR에서 51.6 시간 오디와 LM 데이터를 받아보실 수 있습니다.
- 모어코인을 통한 기부로 오픈소스 오디오가 커지고 있습니다. 4월에는 1시간 기부시 70시간 데이터를 받아보실 수 있습니다. 모어코인앱을 통해 음성을 기부해 주세요.
현재 제로스 프로젝트에는 상기와 같은 음성데이터가 포함되어 있습니다. 공개 음성 DB 구축에 참여할 수 있는 음성 녹음 앱 모아코인(Android)을 제공하고 있으며, 해당 앱을 통해 음성 데이터를 1시간 기부해주시면 해당 시점까지 구축된 공개 음성 DB에 접근하여 다운로드할 수 있는 권한을 AWS temporary credential 형태로 발급해 드립니다. 한번 발급된 credential은 12 시간 동안 유효합니다. 더 자세한 내용은 AWS-temporary-credential 페이지를 확인하시기 바랍니다
2. Requirements
- 제로스 프로젝트를 실행하는데 필요한 패키지들에 대한 설명은 Requirements 위키 페이지를 참조하시기 바랍니다.
- 언어모델과 발음사전을 구현하는 코드를 직접 실행하기 위해서는 Requirements-2 위키 페이지를 참조하여 추가적인 패키지를 설치하시기 바랍니다.
3. Acoustic Model
현재 제로스 프로젝트 음향모델에는 아래와 같은 최신 kaldi recipe 가 적용되어 있습니다.
- TDNN (with Factorization) / TDNN + LSTM / TDNN + OPGRU
- Chain model
- Data augmentation of reverberant speech
4. Language Model & Lexicon
제로스 프로젝트에 사용되는 언어모델과 발음사전은 처음부터 끝까지 data-driven 방식으로 만들어집니다. 아래는 AWS-temporary-credential 을 발급받은 경우 오디오 데이터와 함께 자동으로 받아지는 언어모델과 발음사전의 세부사항입니다. 개인적으로 직접 특화된 언어모델과 발음사전을 만들고자 하는 경우에는 세부적인 방법이
s5/data/local/lm/README.md 에 기술되어 있으니 참조하시기 바랍니다.
말뭉치(Corpus)
- 훈련된 문장의 수: 109,037,699
- 테스트 문장의 수: 12,115,208
- 전 체: 121,152,907
발음사전(Lexicon)
- 고유한 단어의 수: 30,064,143
- 상위 98% 빈도 수를 보이는 고유한 단어의 수: 8,069,252
- Data-drive 방식으로 찾은 고유한 형태소의 수: 465,253
- 발음 다양성을 고려한 발음사전의 크기: 686,839
언어모델(Language Model)
- Perplexity test 3-gram: ppl= 221.2969 (12,115,208 sentences, 194,940,635 words, 0 OOVs)
- Perplexity test 4-gram: ppl= 187.2058 (12,115,208 sentences, 194,940,635 words, 0 OOVs)