- 기본 카테고리

Snoopy
- 작성일
- 2023.2.16
파이썬으로 배우는 음성인식
- 글쓴이
- 다카시마 료이치 저
비제이퍼블릭(BJ퍼블릭)
디지털화한 텍스트를 음성으로 변환하는 text-to-speech(tts) 기술은 빠르게 발전해왔으나 speech-to-text(stt)는 상대적으로 발전이 느렸다. 유튜브에서 tts 기능을 활용한 동영상은 간편하게 찾아볼 수 있지만, 음성을 텍스트로 변환하여 인식하는 구글 어시스턴트와 같은 음성검색 기능은 발음이 불명확하거나 잡음이 섞여있는 경우, 텍스트로 변환하지 못하는 경우가 종종 있다. 유튜브에서 제공하는 자막 변환 기능의 정확도를 보면, 영어가 아닌 다른 언어의 경우에는 정확도가 많이 떨어져 이용할 때 불편함을 겪었던 일도 있었다. 이는 학습의 사용되는 음성 데이터셋의 크기가 한국어가 훨씬 적고, 때문에 모델의 발전속도도 더디고, 음성인식 오류를 교정하는 것에 관한 연구 또한 대부분 영어를 기준으로 연구되어 왔기 때문이다. 2020년 말, 네이버에서 출시한 클로바 노트는 녹음하거나 업로드한 음성을 텍스트로 자동변환하는 기능에 더불어 인공지능을 활용하여 내용을 요약하는 기능을 추가하면서 현재 혁신적인 앱으로 평가받고 있다.
이 책은 음성 처리에 관한 기초지식을 소개하고, GMM - HMM 기반 음성인식 기술, DNN - HMM 기반 음성인식 기술, 그리고 End to End 모델 기반 연속 음성인식 기술에 대헤 자세하게 알려준다. 특히, 실습 코드를 기반으로 각 모델들을 파이썬과 파이토치로 구현해보면서 기술들을 이해할 수 있도록 도와준다.
1장에서는 음성인식과 확률의 정의에 대해서 다음과 같이 소개한다.
이와 같이 어떤 사건을 관측한 후에 고려하는 확률을 "사후 확률", 혹은 조건 x를 전제로 사건 y가 발생하는 "조건부 확률"이라 한다. 음성인식에서는 "이런 음성이 입력되었다"라는 사건을 관측한 후에 "뭐라고 발화되었는가?"에 대한 확률을 계산하므로 음성인식은 사후 확률 문제로 분류된다.
수식과 함께 설명되어 있어서, 수학적으로 음성인식 기술을 이해하고 싶은 사람에게 추천하고 싶은 목차이다. 이후 2장에서는 마이크에 감지된 음파가 컴퓨터에 보관되기까지의 과정과 그 순서를 표시하여, 파형을 예시로 들어 특정 간격으로 구분된 값을 어떤 형태로 변환해야 하는지 음성인식 기술에 사용되는 단어들을 사용하여 정의한다. 시간변화에 따른 정보를 함께 표현하려면, 짧은 구간으로 음성을 구분하여 단기간 푸리에 변환을 적용시킨다. 아래는 이를 구현한 소스코드를 주석을 사용해 설명해놓았다.
또한, 음성인식을 위한 정보들을 최대한 보존하면서 적당한 수준에서 차원을 조절하는 방법에 대해서 설명하는데, 필터 뱅크 분석을 통해 수행한다. 여러 장에 걸친 소스코드와 함께, 로그 Mel 필터 뱅크 특징을 계산하는 과정을 친절하게 소개한다. 이처럼 3장에서는 음성 특징값 추출방법에 대해 설명하고, 4장에서 추출된 특징값을 이용해 음성 유사도를 측정하거나 음성인식을 실행하는 방법을 알려준다. 동적계획법을 사용해 음성인식 알고리즘을 구현하기 위한 수식을 간단히 정의하고, 파이썬으로 dp matching을 통해 얼라인먼트를 추정하는 간단한 발화인식을 진행한다. 4장에서도 역시 여러장에 걸친 자세한 주석과 함께, 발화인식을 진행하는 과정을 소스코드로 소개하여 이해하는데 큰 도움을 주었다. 여기에서 발화 문장 번호별 음성템플릿을 기반으로 음성인식을 수행하는데, 발화자에 따라 특징값이 바뀌는 음성인식 특성상 '은닉 마코프 모델'을 사용하여 템플릿 방식이 아닌 확률모델로 문제를 해결한다고 한다. 따라서 앞선 dp matching보다 실용적으로 음성인식을 수행할 수 있다.
5장에서 GMM - HMM 기반 음성인식을 소개하는데 앞서, 확률밀도 함수와 베이즈 정리를 이용하여 수학적으로 EM 알고리즘에 의한 GMM 최적화 방법을 정리해놓았다. 통계적 지식을 기반으로 모델을 이해할 수 있도록 그림과 함께 설명되어 있어 머릿속으로 구조를 파악하는데 도움이 되었다.
다음장에서 소개되는 DNN - HMM 기반 음성인식도 위와 같은 방식으로 소개되어 있는데, DNN 학습을 위해서 학습 데이터의 프레임들에 대한 정답라벨이 필요하므로 이를 생성하는 소스코드를 위와 같이 소개하고 있다. 이후 DNN 학습을 위해 모델을 직접 정의하고, 10가지의 고립단어 음성인식 과제를 수행하는 과정을 보여준다. 사용되는 알고리즘이 자세히 설명되어 있어서, 소스코드를 이해하는데 도움이 될 것이다.
실습코드를 통해 모델을 이해하는 것 뿐만 아니라, 수식을 통해 각 기술의 알고리즘을 이해할 수 있어서 음성인식의 원리를 파악하는데 큰 장점이 있었다. 마지막으로 소개된 End to End 기반 연속 음성인식 또한 각 모델의 확률구조에 대한 설명과 함께 소개되어 있어서 공부하는데 도움이 많이 될 것 같다. 주로 원서로만 음성인식 기술을 접할 기회가 있었는데, 자세하게 설명된 기본서를 통해 다양한 음성인식기술들을 이해할 수 있어서 기쁘다.
“YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다.”
- 좋아요
- 6
- 댓글
- 0
- 작성일
- 2023.04.26
댓글 0
댓글이 없습니다.
첫 번째 댓글을 남겨보세요.