음성인식과 발음 모델(G2P)
전통적인 HMM 기반 모델
- HMM 기반 모델 : 음향모델, 발음모델, 언어모델로 나눌 수 있음.
- 발음 모델 : 단어를 음소로 매핑하는 과정에서 발음 모델 사용. 발음 모델 정의할 때는 타겟 언어에 대한 특별한 지식 필요.
- G2P (Grapheme to Phoneme) = 발음 모델
- 철자와 발음을 매칭하는 모델
- 발음변이 규칙을 찾고 예외처리를 적용해주는 모델
- 이러한 발음 모델(G2P)을 통해 철자와 단어에 대한 발음 사전을 만들어서 음성 정보와 텍스트 정보를 상호 변환해주는 역할
- 즉, 음소 시퀀스를 단어 시퀀스로 변경하기 위해 참고하는 모델
- 음향 모델 : 입력 오디오와 HMM 상태 간의 매핑을 모델링
- 위에서 발음 모델(G2P)을 통해 발음 사전이 만들어졌다면, 이제 다양한 발음과 억양에 대한 학습이 필요
- 모든 사람들이 아나운서와 같은 발음은 아니기 때문에 이러한 다양한 억양과 발음에 대한 학습 필요 - 언어 모델 : 단어 시퀀스를 문장으로 매핑
- 들은 정보를 실제 사람이 사용하는 말인 '자연어' 로 인식하는 과정
- 단어의 연속성을 기준으로 n-gram 언어 모델을 사용해 인접한 단어들이 연속적으로 나올 확률 계산
- ex) "오늘 날씨" 다음에는 "종이컵" 이라는 쌩뚱맞은 단어보다는 "어때" 가 더 자연스러움
아무리 음향 모델을 통해서 '종이컵' 이 인식되더라도 이는 언어 모델에서 확률값이 매우 낮기 때문에 첫번째 인식 어휘인 1-best 에서 빠지게 될 확률이 높음.
https://nongnongai.tistory.com/63?category=924001
위의 포스팅에서 자세한 음성인식 과정을 확인할 수 있다.
- 음성 frame에서 음소로 mapping 되는 음소인식 과정을 거친 후, 출력된 음소의 sequence 를 보고 어떤 단어인지 추정하는 과정에서 G2P 가 사용된다.
G2P (grapheme to phoneme)
발음사전 제작을 위해 필요한 "G2P" 과정
ex) 한글의 경우, 단어의 철자와 발음이 항상 일치하지 않기 때문에 단어와 단어에 대응되는 발음열이 명시된 발음사전을 제작하여 사용
- 한국어 문자는 앞과 뒤에 이어지는 문자에 따라 다양한 발음
- 살구[살구], 볼살[볼쌀], 살의[사릐] : '살' 은 동일한 문자로 표기되지만 모두 다른 발음
- 이러한 문자표기와 실제 발음 사이의 불일치를 극복하기 위해 발음사전 이용
이러한 발음사전을 만들기 위해서 발음변이 규칙을 찾고 예외처리를 적용하는G2P (grapheme to phoneme) 과정이 필요
ex) 한국어의 경우
- 자소-음소간, 음소-변이음간 변환규칙, 예외 발음에 대해 일관적으로 적용할 수 있는 발음변이 규정 필요
- 국내 여러 연구기관별로 발음변이를 규정하는 규정집 보유
- 이 규정집 이용하여 문자표기를 음소열로 치환 가능
음소기반 음성인식
- 음소기반 음성인식에서 음향 모델 : 음성의 특정 구간을 입력 받아 음소를 출력
- 즉, 음소들의 존재 확률 분포를 출력
- 출력된 음소존재 확률 분포를 이용해 음성인식의 최종 출력인 문장을 얻는 것임
- 음소 확률분포에서 문장, 즉 단어를 얻기 위해서는 음소열과 단어의 철자를 연결해주는 매개가 필요
- 그 매개체가 "발음사전"
G2P 와 end-to-end 음성인식
- end-to-end 음성인식 방식은 전통적인 음성인식 방법과 비교했을 때 구조적인 문제로 인해 외부 발음열 정보와 언어 모델의 정보를 사용하지 못함
- 따라서 학습 자료에 없는 발음열 변환 규칙에 대한 대응이 쉽지 않음
- 예를 들어 '학교'
- 자소열 : 'ㅎ ㅏ ㄱ ㄱ ㅛ'
- 첫번째 'ㄱ' 과 두번째 'ㄱ' 은 동일한 소이지만 실제로는 다르게 발음됨 - end-to-end 모델의 경우, 학습 자료에 위와 같은 발음열 규칙이 포함된 문장 데이터가 없는 경우 올바른 정답 출력하기 어려움
- Table 1 & Table 2 : end-to-end 음성인식에서 발생한 오류 예시
- Table 1 : 소수의 프레임에서 올바른 확률 분포를 출력하지 못한 경우의 예
- Table 2 : 올바른 발음열 변환이 되지 않은 경우 - 그래서 "Lexicon transducer를 적용한 conformer 기반 한국어 end-to-end 음성인식(손현수, 서강대학교)" 논문에서는 발음열 정보를 담고 있는 L transducer를 Weighted Finite State Transducer(WFST)를 통해 미리 가능한 음소열에 대한 정보를 그래프화하여 end-to-end 모델의 탐색 범위를 제한하여 앞서 언급한 문제를 해결하고자 했음
- 위의 논문처럼 end-to-end 에서도 결국 '발음열 정보' 는 간과해서는 안될 중요한 정보.
- end-to-end 모델에서는 전통적 HMM 방법의 발음사전, G2P 의 역할을 보완하는 연구가 필요할 것임
Reference
- 한국어 종단간 음성인식에서의 성능 향상을 위한 Lexicon Transducer를 적용한 Convolution Augmented Transformer - 손현수
https://scienceon.kisti.re.kr/commons/util/originalView.do?cn=JAKO202128837800053&oCn=JAKO202128837800053&dbt=JAKO&journal=NJOU00297548
- 문자소 기반의 한국어 음성인식 - 이문학, 장준혁
http://koreascience.or.kr/article/JAKO201929565689470.pdf - 카카오가 가지고 있는 음성처리 기술
https://brunch.co.kr/@kakao-it/302
'Spoken Language Processing' 카테고리의 다른 글
kaldi 설치하기 (0) | 2022.11.17 |
---|---|
kaldi CSID (substitution, insertion, deletion) 발음 오류 패턴 분석, wer 계산 (0) | 2022.11.17 |
Huggingface 튜토리얼 (1) 기초 개념 소개 (0) | 2022.09.15 |
Huggingface 로 wav2vec2.0 실습 - 영어 (0) | 2022.08.18 |
wav2vec2.0 pretrained 모델로 디코딩하기 (0) | 2022.08.17 |
댓글