디지털화한 텍스트를 음성으로 변환하는 text-to-speech(tts) 기술은 빠르게 발전해왔으나 speech-to-text(stt)는 상대적으로 발전이 느렸다. 유튜브에서 tts 기능을 활용한 동영상은 간편하게 찾아볼 수 있지만, 음성을 텍스트로 변환하여 인식하는 구글 어시스턴트와 같은 음성검색 기능은 발음이 불명확하거나 잡음이 섞여있는 경우, 텍스트로 변환하지 못하는 경우가 종종 있다. 유튜브에서 제공하는 자막 변환 기능의 정확도를 보면, 영어가 아닌 다른 언어의 경우에는 정확도가 많이 떨어져 이용할 때 불편함을 겪었던 일도 있었다. 이는 학습의 사용되는 음성 데이터셋의 크기가 한국어가 훨씬 적고, 때문에 모델의 발전속도도 더디고, 음성인식 오류를 교정하는 것에 관한 연구 또한 대부분 영어를 기준으로 연구되어 왔기 때문이다. 2020년 말, 네이버에서 출시한 클로바 노트는 녹음하거나 업로드한 음성을 텍스트로 자동변환하는 기능에 더불어 인공지능을 활용하여 내용을 요약하는 기능을 추가하면서 현재 혁신적인 앱으로 평가받고 있다.
이 책은 음성 처리에 관한 기초지식을 소개하고, GMM - HMM 기반 음성인식 기술, DNN - HMM 기반 음성인식 기술, 그리고 End to End 모델 기반 연속 음성인식 기술에 대헤 자세하게 알려준다. 특히, 실습 코드를 기반으로 각 모델들을 파이썬과 파이토치로 구현해보면서 기술들을 이해할 수 있도록 도와준다.
1장에서는 음성인식과 확률의 정의에 대해서 다음과 같이 소개한다.
수식과 함께 설명되어 있어서, 수학적으로 음성인식 기술을 이해하고 싶은 사람에게 추천하고 싶은 목차이다. 이후 2장에서는 마이크에 감지된 음파가 컴퓨터에 보관되기까지의 과정과 그 순서를 표시하여, 파형을 예시로 들어 특정 간격으로 구분된 값을 어떤 형태로 변환해야 하는지 음성인식 기술에 사용되는 단어들을 사용하여 정의한다. 시간변화에 따른 정보를 함께 표현하려면, 짧은 구간으로 음성을 구분하여 단기간 푸리에 변환을 적용시킨다. 아래는 이를 구현한 소스코드를 주석을 사용해 설명해놓았다.
또한, 음성인식을 위한 정보들을 최대한 보존하면서 적당한 수준에서 차원을 조절하는 방법에 대해서 설명하는데, 필터 뱅크 분석을 통해 수행한다. 여러 장에 걸친 소스코드와 함께, 로그 Mel 필터 뱅크 특징을 계산하는 과정을 친절하게 소개한다. 이처럼 3장에서는 음성 특징값 추출방법에 대해 설명하고, 4장에서 추출된 특징값을 이용해 음성 유사도를 측정하거나 음성인식을 실행하는 방법을 알려준다. 동적계획법을 사용해 음성인식 알고리즘을 구현하기 위한 수식을 간단히 정의하고, 파이썬으로 dp matching을 통해 얼라인먼트를 추정하는 간단한 발화인식을 진행한다. 4장에서도 역시 여러장에 걸친 자세한 주석과 함께, 발화인식을 진행하는 과정을 소스코드로 소개하여 이해하는데 큰 도움을 주었다. 여기에서 발화 문장 번호별 음성템플릿을 기반으로 음성인식을 수행하는데, 발화자에 따라 특징값이 바뀌는 음성인식 특성상 '은닉 마코프 모델'을 사용하여 템플릿 방식이 아닌 확률모델로 문제를 해결한다고 한다. 따라서 앞선 dp matching보다 실용적으로 음성인식을 수행할 수 있다.
5장에서 GMM - HMM 기반 음성인식을 소개하는데 앞서, 확률밀도 함수와 베이즈 정리를 이용하여 수학적으로 EM 알고리즘에 의한 GMM 최적화 방법을 정리해놓았다. 통계적 지식을 기반으로 모델을 이해할 수 있도록 그림과 함께 설명되어 있어 머릿속으로 구조를 파악하는데 도움이 되었다.
다음장에서 소개되는 DNN - HMM 기반 음성인식도 위와 같은 방식으로 소개되어 있는데, DNN 학습을 위해서 학습 데이터의 프레임들에 대한 정답라벨이 필요하므로 이를 생성하는 소스코드를 위와 같이 소개하고 있다. 이후 DNN 학습을 위해 모델을 직접 정의하고, 10가지의 고립단어 음성인식 과제를 수행하는 과정을 보여준다. 사용되는 알고리즘이 자세히 설명되어 있어서, 소스코드를 이해하는데 도움이 될 것이다. 실습코드를 통해 모델을 이해하는 것 뿐만 아니라, 수식을 통해 각 기술의 알고리즘을 이해할 수 있어서 음성인식의 원리를 파악하는데 큰 장점이 있었다. 마지막으로 소개된 End to End 기반 연속 음성인식 또한 각 모델의 확률구조에 대한 설명과 함께 소개되어 있어서 공부하는데 도움이 많이 될 것 같다. 주로 원서로만 음성인식 기술을 접할 기회가 있었는데, 자세하게 설명된 기본서를 통해 다양한 음성인식기술들을 이해할 수 있어서 기쁘다.
“YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다.” |
저는 불과 한 달 전 코팅을 시작한 코딩 초보입니다. 이번 겨울 동안 코딩을 끝장내주겠다는 마음으로 시작하면서 도서 리뷰 이벤트에 이 책이 있어 코딩을 실무에 적용하는 데에 도움이 되겠다 싶어 신청했고, 덜컥 운 좋게 당첨 되었습니다. 우선 이 책이 도착하자마자 쭉 훑어 봤는데 생각보다 수준 있는 내용에 조금 놀랐습니다. 저는 제가 바로 보면서 따라할 수 있을 줄 알았거든요. 그래서 잠시 책을 덮고 기초 코딩 책으로 잠깐 다녀온 뒤 찬찬히 봤습니다. 그래도 어렵긴 했지만 저는 오히려 좋았던 점이 다른 코딩 책들은 기초부터 다루느랴 앞 부분은 항상 똑같은 기초 부분이 반복되어서 책을 구입하는 게 아까운 느낌이었거든요. 그런데 이 책은 딱 정해진 '음성 인식'이라는 주제로 관련 내용들만 담겨있어 나중에 두고두고 활용하기 좋겠다는 생각이 들었습니다. 그리고 코딩 코드를 말로만 설명하는 게 아니라 딱 스크립트 창을 깔끔하게 보여줘서 제가 해본 것과 비교하며 공부하기 편했습니다. 코딩 초보보다는 전공 학생이나 비전공 실무자 분들이 '음성 인식'에 대한 코딩 공부를 할 때 활용도가 높은 책이라는 생각입니다. YES24 리뷰어 클럽 체험단 자격으로 작성한 리뷰입니다. |
파이썬은 모르더라도 음성인식은 우리의 일상에 너무 깊숙이 들어와서 잘 알 것 같다. 원리로서의 음성인식이 아니라 음성인식을 활용한 다양한 기술을 잘 활용해야 한다고 해야 할까? 예를 들면 사람이 기계에게 말을 걸거나 기계가 사람의 말을 듣고 문자로 변화해 주는 것(음성인식 노트 앱 포함) 등 모두 음성인식 기술을 사용한 것이다.
책 앞표지를 보니 음성인식의 기술 발전 동향을 알려줄 뿐만 아니라 딥러닝 실습까지 하는 실천서이다. 음성인식의 기초부터 최신 기법까지 차근차근 배우기에 적합한 책이다. 뒤표지에는 이 책의 구성이 일목요연하게 정리되어 있고, '음성인식의 핵심 원리를 파헤치고 실습까지 한 권으로 완성'할 수 있다고 강조하였다.
저자는 다카시마 료이치이다. 2013년 고베대학 대학원을 나왔고 시스템 정보학 연구과 박사 후기 과정을 수료한 공학박사이다. 옮긴이 정권우는 현재 네이버 파파고 팀에서 딥러닝을 통해 더 나은 번역기를 개발하고 있다. 옮긴이의 말에 의하면 "딥러닝을 이용한 최신 음성인식 시스템을 직접 개발해 보는 것이 이 책의 목표"이다. 서문과 목차부터 살펴보고 차근차근 배워보도록 하자.
저자는 음성인식과 관련된 기초 지식을 쉬운 예로 차근차근 설명하였고, 3장부터는 직접 파이썬으로 소스 코드와 더불어 실습해 보면서 그 과정을 설명하였다. 음성 특징값 추출 방법에 대해 설명하고, 이를 이용해 음성 유사도를 측정하고 음성인식을 실행하는 부분을 설명하였다. 음성인식에 활용되는 다양한 기법과 모델을 시간 흐름의 순으로 정리하며 그 원리와 장단점을 하나씩 짚어가면서 다음 순서로 넘어가는 방식을 취하여 독자가 이해하기 쉽다. 이 책을 음성인식 기술의 전반적인 흐름과 특징을 이해하고, 음성인식 기술 적용에 관심 있는 독자들에게 추천한다. 1장에서는 음성인식은 무엇이며, 어디에 사용되는지, 음성인식의 원리는 어떤 것인지에 대해 설명하였다. 음원 분리, 음원 음식, 자연어 처리 등 AI 스피커의 내부 처리 과정을 이해할 수 있었다. 소리 인식은 '지각 단계'와 '인식 단계'로 구분됨을 알 수 있고, 기계가 수행하는 음성인식 처리 과정, 음식인식 모델 내부 처리 과정 등을 이해할 수 있다. 최근 들어 음성인식의 정확도가 획기적으로 향상된 것은 딥러닝 모델로 전환되면서부터였고, 최근에는 End-to-End 모델이 음성 인식 최신 기법으로써 주목받고 있음을 알 수 있었다. 2장에서는 음성인식에 대해 알아야 할 기초 지식을 설명하였다. '음성인식과 확률'을 설명하고, '음성인식 문제를 수식으로 정의'하였다. 텍스트 종류와 발음 사전에 대해 설명하였고, 음성인식 실험 두 가지를 소개하였다. 쉬운 예로 확률, 확률의 연쇄 법칙, 확률의 주변화 등에 설명하였다. 그리고 고립 단어를 어떻게 인식하고 연속 음성을 어떻게 인식하는지, 음성인식 실험 프로세스를 설명하였다. 3장에서는 파이썬 소스 코드와 함께 설명하였다. 데이터를 준비하고, 음성 파일을 읽어보고, 푸리에 변환으로 음성을 주파수 분해하고, 음성을 단시간 푸리에 변화하여 스펙트럼을 생성하는 방법 등을 설명하였다. 이외 로그 Mel Fiter Bank의 특징, Mel 주파수 켑스트럼 특징을 설명하였고, 이 특징의 평균과 표준편차를 계산해 보게 하였다. 4장에서는 음성인식의 기본인 DP Matching에 대해 설명하였다. 초창기 음성인식 방법론, 발화 속도 차이에 효과적으로 대응하는 방법론으로 2020년대 현대 음성인식에는 사용하지 않는다. 음성인식에서 떼어놓을 수 없는 정렬(얼라인먼트) 문제를 언급하며, 얼라인먼트를 추정하면서 거리를 계산하는 기법 DP Matching에 대해 설명하고 구현해 보았다. 동일한 발화라도 길이와 속도에 따라 변동하므로, DP Matching을 이용한 인식 기법을 사용한 것이다. 5장에서는 혼합 정규 분포와 은닉 마코프 모델 기반 음향 모델을 설명하였다. 1980~2010년까지 음성인식을 지탱해온 기술이다. DP Matching을 이용한 인식 기법의 실제 음성인식 서비스에 적용할 때 2가지 큰 문제로 템플릿 방식을 대신할 분포와 빈도의 관점을 내놓았다. 정규분포와 최빈 추정법을 활용한 매개변수를 추정하는 법에 대해 설명하였다. 다만 정규분포가 알맞은 분포이지만, 근사 오차는 피할 수 없으므로 이 근사 오차를 줄이기 위해 분포보다 더 정밀한 기법을 설명하였다. 즉 혼합 정규분포와 EM 알고리즘에 대한 설명이다. 이외 은닉 마코프 모델(HMM)에 대해 소개하였고 얼라인먼트를 자동으로 설명하는 GMM-HMM과 비터비 알고리즘 조합이 자주 사용된다고 하며 실제 구현하여 실험을 수행하는 과정을 보여주었다. 6장에서는 딥러닝을 기반으로 한 음향 모델 중에서 실제 상용화된 제품에 가장 흔하게 적용되는 기법이라고 했다. GMM 대신 DNN를 사용해 성능을 향상시킨 것을 보여주었다. 이런 방식 때문에 음성인식 서비스가 널리 보급되기 시작했다. DNN이 등장하게 된 계기, 기본개념, 학습 방법, 학습에 활용되는 기술(Optimizer, DNN 매개변수 초기화) 등에 대해 설명하였다. 나아가 DNN과 HMM을 조합한 DNN-HMM 하이브리드 시스템을 소개하고 파이썬과 파이토치로 구현해 볼 수 있도록 하였다. 7장에서는 이 책의 핵심 주제인 End-to-End 모델에 대해 설명하였다. 기존 음성인식 모델을 단 하나의 DNN으로 모델링 한 것이 바로 End-to-End 모델인데, 구현도 쉬워서 향후 발전 가능성 매우 높다고 하였다. 직접 파이썬과 파이토치로 구현해 보고 활용해 보면 좋을 것 같다. YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. |
몇 년 전 구글 개발자 컨퍼런스의 한 세션에서 재미있는 시연이 있었습니다. 전화를 걸어서 예약하는 평범한 시나리오였지만 전화를 건 것은 사람이 아니라 AI 였습니다. 서로 대화를 주고 받았는데 너무나 자연스러워서 전화를 받은 사람도 자신이 사람이 아닌 AI 와 대화하고 있다는 것을 몰랐습니다. 구글, 애플, 아마존 등 거대 IT 기업에서는 앞다투어 음성 스피커를 내놓고 있는데 궁금해서 초반에 사서 쓰면서 오늘 날씨를 물어보거나 물을 끓일때 알람을 설정하는 등 재미있게 썼습니다. 이제는 번역기 앱에서도 일일이 글로 적지 않아도 말로 하면 번역을 한 후 다른 언어로 읽어주네요.
최근에는 ChatGPT 가 등장하면서 다시 AI 에 대한 관심이 크게 높아졌습니다. 정말 사람과 대화하는것 같아서 많은 사람들을 놀라게 하였는데 지금은 입력을 해야하지만 언젠가는 말로 해도 알아듣겠죠? IT 와 관련된 일을 하면서 음성 인식에 관심이 있었는데 이번에 '파이썬으로 배우는 음성인식' 이 새로 나오면서 궁금한게 많아서 책을 읽어보았습니다.
컴퓨터가 우리가 하는 말을 알아듣는 것을 보면 신기한데 많은 데이터를 이용해 학습 과정을 거쳐 거대한 언어 모델을 만들 수 있기 때문이네요. 컴퓨터가 텍스트를 이해할 수 있다면 음성을 텍스트로 바꾸는 것만으로도 컴퓨터와 말로 소통할 수 있을 것입니다. 언어 모델에서는 텍스트의 단어를 숫자로 치환해서 처리하는 것처럼 사람의 음성도 숫자로 된 주파수로 바꿀 수 있습니다. 성별이나 연령에 따라 사람의 목소리가 다르지만 발음의 파형은 비슷하게 그려지는데 음성은 푸리에 변환 과정을 통해 수학의 영역으로 바뀔 수 있네요. 앞부분에서는 수학적인 배경이 필요하지만 가능한 쉽게 설명하고 있어서 원리를 이해할 수 있었습니다.
음성 데이터를 준비해서 하나하나 읽어들이고 주파수를 추출하는 과정은 음성 인식의 기초이기 때문에 하나씩 직접 해보지 않으면 나중에 막상 프로젝트를 해볼때 쉽지 않을 것입니다. 책에서는 각 단계마다 파이썬 코드가 주석과 함께 나와 있어서 한줄씩 따라가보면서 할 수 있네요. 이 책은 번역서인데 원서는 일본어여서 음성 인식을 개발하는 과정에서는 일본어가 예제로 나옵니다. 조금 아쉽기는 하지만 그래도 음성 인식의 기본 원리는 동일해서 책에서 언급하고 있는 예제들을 따라가면서 공부하는데 문제는 없었습니다.
요즘은 AI 를 학습하는데 딥러닝이 널리 활용되고 있으며 딥러닝에서는 CNN, RNN, LSTM 등의 개념이 나옵니다. 원래 데이터가 텍스트인지 음성인지 관계없이 모든 데이터는 숫자로 바꿔서 처리되므로 텍스트와 동일하게 음성 인식에서도 이러한 개념이 그대로 사용됩니다. 책 마지막에서는 음성 인식의 처음부터 끝까지를 설명하면서 사람이 말을 하는 단계에서부터 컴퓨터가 주파수를 분석해 어떤 글자인지 확률적으로 계산하고 이를 보완하는 CTC, Attention 등을 이용해 최종적으로 인식한 텍스트 결과를 보여주는 과정까지 자세히 나와 있어서 정리하는데 좋았습니다.
음성 인식에 관심이 있었지만 어떻게 공부하는게 좋을지 잘 몰랐는데 이번에 반갑게 입문자를 위한 책이 나왔네요. 특히 번역자 역시 우리나라 대표 IT 기업 중 한 곳에서 관련된 일을 하고 있고 어릴때 일본에서 살았어서 기술적인 부분이 충실하고 매끄럽게 번역이 된 것 같아요. 공부를 시작하는 입장에서 많은 도움이 되었습니다. * YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. |
일상생활에서 음성인식이라는 존재는 어느 순간 우리에게 다가왔다. '시리'나 '빅스비' 등 요즘은 누구나 음성인식 기능을 가지고 있는 핸드폰을 가지고 있다. 이것을 익숙하게 사용하는 사람들과 아직은 익숙하게 사용하지 못하는 사람들 그리고 이것을 만드는 사람들 이 책은 음성인식을 만드는 사람들을 위한 책이다.
이 책은 과거부터 현재까지 음성인식 기술에 대해 소개해 주고 있다. 깃허브와 책에서 소개해 주는 사이트에서 여러 파일들을 받아 실습도 해볼 수 있다.
초반에는 음성인식의 원리를 설명하면서 음성인식에 기초에 대해 설명해 준다. 뒤에 갈수록 실습을 통해 음성인식을 이해하고 음성인식에 사용되는 기술 그리고 최근 주목받고 있는 E2E 음성인식을 소개하고 E2E 방식 중 하나인 CTC 등을 실습 할 수 있게 되어있다.
또한 파이썬으로 실습을 하기 때문에 문법적인 어려움도 많이 없다. 하지만 파이토치를 활용해 E2E 음성인식을 실습하는 과정에서 약간의 전문지식이 필요하다. 또한 책에 많은 수식이 포함되어 있고 뒤로 갈수록 난이도가 있는 내용을 다루기 때문에 비전공자나 가볍게 이 책을 읽어보자는 사람들에게는 추천하지 않는다.
하지만 조금의 전문지식이 있거나 음성인식을 제대로 공부하고자 하는 사람들에게는 추천하는 좋은 책이다
[YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다] |