Study/HTK
- HTK 사용법 튜토리얼 v1.0 2010.07.20
- 음성 인식 실험을 위한 HTK 사용방법 2010.07.20
HTK 사용법 튜토리얼 v1.0
음성 인식 실험을 위한 HTK 사용방법
음성 인식 실험을 위한 HTK 사용방법 |
|
1. 음성 녹음 | |
우선 인식 실험을 수행하기 위해서는 학습에 필요한 음성이 필요하다. 일반적으로 구축하고자하는 목적에 맞게 텍스트를 준비하고, 발성 음성을 녹음하는 작업이 수반된다. HTK에서는 녹음 툴로 HSLab이라는 명령어가 제공된다. |
|
HSLab -C HAUDIO noname
|
|
|
2. 레이블 파일 작성 | ||||||
일반적으로 학습을 하기 위해서는 레이블링된 파일이 필요하다. 물론, embeded training(HTK의 HERest)을 하는 경우, 시간 정보열이 요구되지 않으므로 올바른 학습용 발음열을 입력으로 넣어주면 된다. 레이블링 툴로는 보통 Xwaves를 사용하며 레이블링한 파일은 HTK 형식으로 변환되어져야 한다. |
||||||
HTK 레이블 형식
|
||||||
|
3. 트랜스크립션(Transcription) 파일 작성 | |||||||
|
|||||||
|
|||||||
words.mlf
|
|||||||
phones0.mlf
|
phones1.mlf
|
||||||
|
4. 발음사전(Pronunciation Dictionary) 만들기 | ||||
HTK에서 제공하는 HDMan 명령어는 영어 음성사전 작성에 사용되는 것으로 사전 생성에는 해당 단어가 어떻게 발음되어지는지 폰 열들이 기록되어진다.
|
||||
발음사전 예제
|
||||
한국어 자동 발음열 및 발음사전 생성 [관련논문] |
||||
|
5. HLED 명령어와 발음사전을 이용하여 트랜스크립션 작성하기 | ||||||
발음 사전의 표제어와 words.mlf에 라인별로 기재된 단어를 매치하여 phones0.mlf와 phones1.mlf를 생성하는 명령어이다. |
||||||
|
||||||
| ||||||
|
6. 음성 특징 추출 (Feature Extraction) : step5 - Coding the Data | ||||||
사람의 음성을 인식하기 위해서는 음성의 특징들을 뽑아 사용합니다. |
||||||
|
||||||
|
||||||
| ||||||
|
||||||
|
7. Monophone 생성 단계 | ||||||||||||||
각 명령어를 실행하기 전에 다음 파일 및 필요한 디렉토리 hmm0 ~ hmm15, lib를 미리 생성해야 한다. 'mkdir ~'... HTK 자체에서 자동으로 디렉토리를 생성해 주지 않는다. 디렉토리가 없어도 실행은 되지만, 지정한 디렉토리에 계산된 값을 저장할 위치를 찾지 못한 상태로 프로그램이 종료되면 다시 실험을 수행해야하므로 반드시 디렉토리가 있는지 없는지 확인한 다음, 실험을 수행한다. |
||||||||||||||
Master Macro File(MMF)
| ||||||||||||||
초기 mean과 variance 값 계산
- scan a set of data file HCOMPV 수행 후, hmm0/vFloors를 복사하고 수정하여 macros를 작성한다.
| ||||||||||||||
Monophone 모델 학습 (반복)
| ||||||||||||||
* 학습하고자하는 문장수가 많은 경우, 파라메터의 값이 일정 임계치를 넘지 못해서 생기는 에러가 발생한다.(HTK Error solution 참고) 이런 경우 병렬로 학습 문장들을 나누어서 학습한다. 아래 예는 train-part1.scp와 train-part2.scp로 나누어 병렬 학습 후, HMM 모델을 합치는 방법이다.
=> 위의 명령 스크립트 대신 아래와 같이 3단계로 나누어 학습한다.
|
||||||||||||||
|
8. Silence와 Short-pause 결합 | ||||||
- 우선 hmm3/hmmdef와 hmm3/macros를 hmm4/ 디렉토리로 복사한다.
|
||||||
| ||||||
Training data를 realign하여 aligned.mlf를 생성한다. (이때, 사전에 ‘SILENCE sil’을 등록)
§ 기타 추가 옵션 : -b lab (확장자를 rec 대신에 lab로 저장) ß 손 레이블링 파일을 찾지않고 학습 |
||||||
§ 기타 추가 옵션 : -X rec (레이블 파일의 확장자를 선택) |
||||||
|
9. Tied-State Triphone 생성 단계 | ||||||
wintri.mlf는 학습에서 사용된 triphone list로 aligned.mlf를 이용하여 재구성된 트랜스크립션 파일이다. HLEd를 사용하면 wintri.mlf와 triphones0가 자동으로 생긴다.
| ||||||
% mktrihed < monophones0 > mktri.hed 예) mktri.hed
| ||||||
트라이폰 모델 학습
| ||||||
Tiedlist를 만드는데 사용하는 question
| ||||||
Question을 가지고 tiedlist를 만드는 과정
Tiedlist 트라이폰 모델을 학습하는 과정
|
10. Word network 생성 방법 | ||||||
FSN wdnet 작성 : 의미 문법 gram 작성 (HTK 책 참조)
back-off bigram : 통계적 언어모델
| ||||||
|
11. 인식 단계 | ||||
일반적으로 학습 데이터와 테스트 데이터를 분리하여 인식 실험을 한다. 간단하게 동작이 잘 되는지를 확인하기 위해 학습 데이터를 이용해 확인하는 경우도 있다. 테스트 데이터를 선정하는 방법 또한 다양하다. 선별된 테스트 데이터는 학습시 발생한 트라이폰 리스트에 없는 경우가 생겨 네트웍 loading시 에러가 나는 경우가 발생한다. 이때에는 tiedlist를 만드는 부분부터 다시 확인하여 테스트 데이터 내에 생길 수 있는 트라이폰 리스트가 모두 포함될 수 있도록 한다.
| ||||
|
||||
|
12. 인식 결과 평가 | ||
testref.mlf는 인식할 문장 순서대로 정답을 기술한 내용이 들어 있어야 한다. (words.mlf와 비슷) |
||
| ||
|
. 질문사항이 있으면 Research Bulletin을 활용해주세요. |
|
|