brunch

매거진 AI

You can make anything
by writing

C.S.Lewis

카카오가 가지고 있는 음성처리 기술

[카카오 개발자 콘퍼런스] 발표: 노재근 / 글: 이형남


if kakao 2018 대학(원)생 기자단의 콘퍼런스 취재 글


01. 지식그래프 : 카카오미니와 검색 적용 소개 (발표: 남기훈 / 글: 김동현)

02. 눈으로 듣는 음악 추천 시스템 (발표: 최규민 / 글: 김태훈)

03. 이미지로 이미지 검색하기 (발표: 이주영 / 글: 이가람)

04. 딥러닝을 활용한 뉴스 메타 태깅 (발표: 김기도 / 글: 김규형)

05. 딥러닝을 이용한 실시간 인코딩 효율 최적화 (발표: 여욱형 / 글: 정소영)

06. 카카오 봇 플랫폼 소개 (발표: 황지수 / 글: 이형남)

07. 카카오가 가지고 있는 음성처리 기술 (발표: 노재근 / 글: 이형남)

08. 딥러닝을 이용한 얼굴 인식 (발표: 신종주 / 글: 김동현)

09. TOROS N2 (발표: 김성진 / 글: 김태훈)

10. 텐서플로로 OCR 개발해보기: 문제점과 문제점과 문제점 (발표: 모종훈·오형석 / 글: 이가람)

11. S2Graph와 GraphQL (발표: 윤도영 / 글: 김규형)

12. AI시대에 맞는 서비스 개발(발표: 이석영 / 글: 정소영)





‘카카오가 가지고 있는 음성처리 기술’ 세션은 카카오 음성처리파트의 노재근(jack.roh)님이 강연자로 나섰다. 노재근님은 출시된 지 채 1년이 되지 않은 카카오미니(Kakao mini)에 실제 접목된 따끈따끈한 음성처리 기술과 차세대 카카오미니에 탑재될 수 있는 신기술들을 소개하였다. 



음성기술(speech technology)이란

 

이번 강연에서 소개된 음성기술은 크게 음성인식기술(speech recognition technology)과 음성합성기술(text to speech, TTS)로 구분 지을 수 있다. 음성인식기술은 기계가 사람의 음성을 듣고 이해하는 일련의 과정을 구현하는 기술이며,  음성합성기술은 사전 녹음된 목소리 등의 음성자료를 가지고 새로운 텍스트에 대한 음성을 구현하는 기술이다. 

 

사실 음성기술은 10년 전에도 있었지만 음성기술이 널리 쓰이게 된 것은 불과 몇 년이 지나지 않았다. 독자들에게 몇 년 전에 음성으로 문자를 보내거나 검색을 시도해 본 경험이 있다면 차라리 타이핑(typing)을 하고 말지 싶은 경험이 있을 것이다. 과거에 음성인식이 잘 안 되었던 이유는 기계의 경우 사람과 다르게 음성만으로 정보를 이해해야 했기 때문이다. 사람은 대화를 할 때 언어 정보 뿐만 아니라 제스처, 말투, 문맥 등 비 언어적 요소까지 곁들여 의사소통을 한다. 마주보고 이야기할 때보다 전화 통화할 때 의사전달이 더 어려웠던 기억을 떠올려보면 이해가 빠를 것이다. 


그런데 기계학습(machine learning) 분야에서 제프리 힌튼(Geoffrey Everest Hinton) 교수가 심층 신뢰 신경망(deep belief network, DBN)을 발표하면서 기계가 무언가를 인식하는 방법에 혁신을 가져오게 되었다. 심층 신뢰 신경망이 발표된 이후, 관련 기술은 급속도로 발전되어 음성인식의 정확도가 획기적으로 높아졌다. 그리하여 아마존(Amazon)에서 알렉사(Alexa)가 탑재된 아마존 에코(Amazon Echo)를 출시하고 한국에서는 카카오의 카카오아이(Kakao i)가 탑재된 카카오미니가 출시되는 등 일반 소비자의 삶에도 녹아들고 있다. 이어서 카카오미니의 사례 위주로 음성기술이 실제 어떻게 구현되는지 살펴보자.



음성인식의 첫 단계 : 잘 듣기

 

음성을 인식해야 하는 상황은 다양할 수 있다. 소란스럽거나 여러 명이 동시에 말해 집중이 되지 않는 상황이 있을 수도 있고, 멀리서 말할 수도 있으며 음악을 재생하는 등 기계 스스로가 말을 하는 중일 수도 있다. 이런 다양한 환경에서 어떻게 카카오는 음성을 인식하는지, 카카오미니에 탑재된 기술 몇 가지를 소개한다. 

 

우선, 쉽게 떠올릴 수 있는 상황은 시끄럽고 사용자가 멀리 있어서 기계가 듣기에 힘든 경우이다. 노이지(noisy)한 실제 환경에 제품이 노출되기 전에, 이러한 노이즈(noise)를 음성인식 모델에 학습시키는 방식으로 문제를 해결했다. 먼저 실제 카카오미니가 사용될 법한 사용자와의 거리, 공간의 구조를 설계하여 다양한 상황의 실내 충격 응답(room impulse response, RIR)을 측정했다. 그리고 학습시키려는 명령어, 가령 ‘음악 틀어줘’의 볼륨을 키우고 줄이는 방식으로 노이지(noisy)한 음성을 만들었다. 그 뒤 두 상황을 복합적으로 고려해 음성인식모델에 학습시켜 다양한 상황에서도 명령어를 인식할 수 있게 되었다.

 

다음으로는 스피커 스스로 말을 하고 있는 상황이다. 음악을 재생하는 등 기능을 수행하고 있을 때는 스피커 스스로가 출력하고 있는 음성 또한 듣게 된다. 이 때 사용자의 명령어만 인식하고 스스로가 출력 중인 음성은 무시할 필요가 있다. 여기서 반향 제거(echo cancellation) 기술이 활용된다. 카카오미니는 스스로 재생하고 있는 음원(노래 혹은 TTS)에 대한 정보를 가지고 있다. 반향 제거 기술은 외부 노이즈가 아닌, 카카오미니가 출력하고 있는 음성이 마이크로 들어왔을 때 딜레이를 계산해서 에코(echo)를 빼주는 기술이다.



음성인식의 두번째 단계: 이해하기

 

스피커가 음성을 듣는데 성공했다면 다음은 그 음성이 무슨 뜻인지 이해하는 단계이다. 앞서 기계가 정보를 이해하는 기술이 최근 급격하게 발전했다고 밝힌 바 있다. 대부분 관련 기술들은 기계학습의 일종인 딥러닝(deep learning 또는 deep neural net, DNN)을 기반으로 한 다양한 신경망(neural net) 기법을 활용하고 있다. 딥러닝을 활용해서 소리 정보를 기계가 처리하도록 어떻게 학습시키는지에 대해 집중해서 알아보자. 

 

음성 정보를 이해하는 과정은 크게 세 부분으로 나눌 수 있다. 철자와 발음을 매칭하는 과정, 다양한 발음을 이해하는 과정, 단어 자체를 학습하는 과정이다. 먼저 철자와 발음을 매칭하는 발음모델(pronunciation model, PM)부터 살펴보자. 발음모델은 다른 말로 G2P(grapheme to phoneme)라고도 하는데 철자와 단어에 대한 발음 사전을 만들어서 음성 정보와 텍스트 정보를 상호 변환해주는 역할을 한다.

 

발음모델을 통해 발음 사전이 만들어졌다면, 모든 사람이 아나운서는 아니기에 다양한 발음과 억양에 대한 학습이 이뤄져야 한다. 음향모델(acoustic model, AM)이 그 역할을 수행하는데 처음부터 전세계 모든 사람의 발음을 학습할 수는 없다. 때문에 음향모델 알고리즘의 경우 실제 서비스를 제공하면서도 새로운 사용자들의 발음 데이터를 수집해 꾸준히 추가로 학습한다. 이런 학습 방식을 온라인 학습(online learning)이라 하며 시간이 흘러 데이터셋이 변경됨에 따라 모델 또한 변화하는 장점이 있다. 더불어 온라인 학습은 새로운 학습 자료가 추가되더라도 처음부터 다시 배울 필요가 없어 학습 시간을 절약할 수 있다.

 

마지막으로 들은 정보를 자연어(실제 사람이 사용 하는 말)로 인식할 차례이다. 여기서는 학습 코퍼스(corpus)에서 단어의 연속성을 기준으로 n-gram 언어 모델을 사용해서, 인접한 단어들이 연속적으로 나올 확률을 계산한다. 예를 들면, “오늘 날씨” 다음에는 “어때”가 나올 확률이 높기 때문에, “오늘 날씨” 다음에 쌩뚱맞게 “종이컵” 이라는 단어가 들어가면, 다른 사람이 발화한 말이거나, 노이즈가 오인식된 경우일 것이다. 그러면 어쿠스틱 모델로 종이컵이 인식되었더라도, 언어 모델에서 그 확률값이 매우 낮기 때문에 1번째 인식 어휘인 1-best에서 빠지게 될 확률이 높다. 카카오에서는 1등 인식 결과 외에도 추가로 카카오에서 처리할 수 있는 발화인지 확인하기 위해 인식 후에 언어처리 부분에서 n-best 를 더 확인해서 오인식을 최소화 시키려고 노력하고 있다. 그런데 이렇게 학습된 언어모델은 n-gram 사전에 등록되어 있지 않은 신조어 등은 이해를 하지 못하는 치명적인 단점을 갖고 있다. 이 단점을 극복하기 위해서는 온라인 학습을 짧은 주기로 반복할 필요성이 있다. 하지만 딥러닝 학습은 한 번 수행하는 데에도 막대한 컴퓨팅 자원과 시간이 소요되기 때문에 아무리 온라인 학습으로 나눠 학습된다 하더라도 자주 시행하고 빨리 결과를 받기 어렵다. 그래서 카카오에서는  스파크(spark)를 활용한 병렬 컴퓨팅(parallel computing) 기술로 균형점을 찾았다. 



카카오미니에서 딥러닝 활용하기

 

지금까지 음성인식을 어떻게 하는지 살펴보았다. 그런데 컴퓨팅 파워(computing power)가 약한 스피커에는 정밀한 딥러닝 모델을 내장할 수가 없다. 엄청난 컴퓨팅 파워가 필요하다는 딥러닝 기술을 어떻게 작은 스피커에서 사용할 수 있는 것일까? 그 대답은 ‘스피커가 처리하는 게 아니다’이다. 스피커는 단지 듣고, 음성정보를 서버로 전달하고 다시 음성정보를 받아와서 출력하는 역할만 할 뿐이다.

 

여기서 새로운 의문이 생긴다. 그럼 웨이크 업(wake-up) 단어는 어떻게 인식하는 걸까? 잠깐 웨이크 업 단어에 대해 짚고 넘어가자면, 웨이크 업 단어란 카카오미니의 경우 ‘헤이 카카오’처럼 음성인식장치를 사용하기 위해 사용한다는 신호를 보내는 말을 의미한다. 이 웨이크 업 단어를 인식하기 위해서 항상 서버로 음성정보를 보낸다면 사용자에게 심각한 사생활 침해가 발생할 것이다. 카카오의 경우 웨이크 업 신호에 대해서만 2중 확인을 하는 방식으로 문제를 해결했다. 조금 정확도가 떨어지는 스피커 내장 모델이 덮어 쓰는 방식으로 2초 정도의 음성 정보만 항상 저장하고 들으며 웨이크 업 신호를 기다린다. 웨이크 업 신호로 판단되면 2초의 음성정보와 더불어 그 이후의 음성정보를 서버로 전송하여 서버에서 웨이크 업 신호인지부터 다시 한 번 확인하고 음성정보를 처리한다.



앞으로 추가될 기능들

 

강연자 노재근님은 현재 카카오미니에 녹여낸 음성기술 뿐만 앞으로 구현 예정인 기술들에 대해 강연 이후 열띤 질의응답 시간을 가지면서까지 설명해주셨다.

 

먼저 음성합성기술을 활용한 다양한 목소리의 카카오미니를 제공할 계획이라고 한다. 딥러닝 기법 중 순환 신경망(recurrent neural net, RNN) 기법의 일종으로 순서가 있는 정보를 받아서 학습한 뒤 순서가 있는 결과를 되돌려 주는 시퀀스 투 시퀀스(seq2seq) 기술 기반으로 엔드 투 엔드(end-to-end) 학습하여 음성 합성한다. 딥러닝 이전의 실제 음성을 이어 붙이는 편집 합성 기술보다 훨씬 적은 음성DB로 고품질의 음성을 합성 할 수 있게 되었다. 다만 서비스로 하기까지 최종 품질은 현재 레거시 방식인 유닛 셀렉션(USEL) 방식을 따라올 수 없고, 특정 화자의 목소리 특징으로 변환(style transfer)하는 재미 기능이 조금 더 고민해 볼만하다. 실시간으로 합성하는 컴퓨팅 파워 문제도 있지만, 목소리 주인(셀럽이라면)의 라이선스 이슈 혹은 법적인 이슈(voice phishing) 에 봉착 할 수 있어서 빠른 시일 내의 상용화는 아직 넘어야 할 산이 많다고 한다. 

 

그리고 음성으로 개인을 식별하는 기능을 추가할 계획도 있다고 한다. 개인화가 진행되면 가족들이 스피커를 같이 쓰더라도 누가 실행하느냐에 따라 선호도에 맞는 서비스를 제공할 수 있고, 메신저나 결제 같은 보안이 필요한 서비스를 제공하는 것 또한 가능해진다. 하지만 개인을 식별하는 학습을 위해서는 여러 번 목소리를 반복해서 녹음해야 하는 불편이 있어서 사용자 경험 증대를 위해 어떻게 하면 짧은 음성 정보만으로 개인 식별을 학습시킬지를 고민 중이라고 한다.

 

음성인식은 그래픽 사용자 인터페이스(graphical user interface, GUI) 플랫폼에서 음성 사용자 인터페이스(voice user interface, VUI)로 넘어가는 지점의 중요한 기술이며 AI의 시대를 알리는 신호탄이다. 음성기술의 최전선에서 어떤 변화가 일어나고 있는지 알 수 있었던 뜻 깊은 시간이었다.



본문에 삽입된 슬라이드 자료는 'if kakao 2018' 개발자 콘퍼런스 발표자료에서 인용하였습니다.
(출처: https://if.kakao.com)




콘퍼런스 발표 | 노재근 jack.roh@kakaocorp.com


글 | 이형남 su8189@gmail.com 

건국대학교에서 경제학과 통계학을 공부하고 있습니다. 머신러닝, 특히 딥러닝에 관심을 갖고 기술이 사람들에게 어떤 미래를 보여줄 수 있을지 꿈꾸며 학부 시절을 보내고 있습니다. 기술과 지식으로 쌓아올린 지혜는 삶을 풍요롭게 변화시킬 것이라 믿고 오늘도 배움의 길을 걷고 있으며, 기술과 문화예술 등 모든 분야의 흥미로운 생각을 사람들과 나누는 것을 좋아합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari