Brain's Pick
제주어 기계번역 모델과 음성합성 모델에 관한 연구를 소개합니다.
2020/03/18 by 이수경, 박규병

제주어는 제주도 지역에서 사용되는 언어를 가리킵니다. 제줏말, 제주방언, 제주지역어와 같은 표현도 있기는 합니다만, 지난 2007년 제주특별자치도가 '제주어 보전 및 육성 조례'를 제정하면서부터 제주어라는 표현이 널리 쓰이고 있습니다.

전라도, 경상도, 충청도와 같은 지역 방언과는 달리 제주어는 언어학적으로 연구 및 보존 가치를 인정받고 있습니다. 그 이유는 한국어의 원형과 한글의 제작 원리를 보여주는 언어라 평가받고 있기 때문입니다. 현재는 사용되지 않는 훈민정음 창제 당시의 아래아(ㆍ), 반치음(ㅿ), 순경음 비읍(ㅸ) 등과 중세에 사용하던 어휘가 상당수 남아 있죠.

제주어가 한반도에서 사용되는 언어에서 분리된 배경은 단순히 지리적 특성 때문만은 아닙니다. 고려시대 제주도는 원나라로부터 100년간 지배를 받았습니다. 원나라가 사용하던 언어는 자연스럽게 제주도민의 언어 사용에 많은 영향을 미쳤습니다. 실제로 몽골어에서 차용한 어휘를 현재 제주어에서도 찾아볼 수 있죠.

제주어 형성에 결정적인 영향을 미쳤을 것으로 추측되는 또 다른 사건은 바로 조선시대 출륙금지령입니다. 기근이 들어 살던 지역을 떠나려는 사람들로 인해 인구가 급격히 감소한 것을 염려한 조정에서 약 150년간 제주도를 벗어나지 못하게 하는 강경조치를 취했습니다. 그로 인해 오랜 세월 한반도와의 교류가 단절된 제주도는 독자적인 언어 체계를 구축해나간 것으로 보입니다.

[ 그림 1 ] 다른 지역 방언과는 달리 제주어는 언어학적으로 연구 및 보존 가치를 인정받고 있다.

이처럼 중세언어의 흔적이 남아 있어 학술 가치가 큰 제주어는 현재 사멸 위기에 처해있습니다. 제주어를 대체할 표준어(한국어)가 있어서죠. 현재 1950년대 이전에 태어난 70세 이상의 고령층 1만 명만이 제주어를 자유자재로 구사하는 실정입니다. 오늘날의 제주 지역 청소년이 학교에서 제주어를 따로 배우지 않고 있어 제주어를 구사하는 신규 연령층의 진입은 전무후무한 상황이죠. 이렇게 다음 세대로 계승되지 못한 채 제주어를 사용하는 사용자가 계속 줄어든다면 가까운 미래에 제주어는 지구상에 더는 존재하지 않을 수도 있습니다.

해법은 하나입니다. 제주어를 사용하지 않는 사람들에게 제주어를 가르치는 거죠. 이를 위해 제주도는 제주어 보전을 위한 다양한 방법을 모색하고 있습니다. 녹음, 구술 자료집 편찬, 제주어 교육, 연구 및 사전 편찬과 같은 활동이 바로 여기에 해당합니다. 그러나 이는 보존이나 유지를 위한 자료 구축에 그치는 수준에 불과합니다.

[표 1]에서 보듯이 유네스코(UNESCO)가 아주 심각한 위기에 처한 언어로 분류한 제주어 활성화를 위한 보다 적극적인 활동이 필요하다는 점에 공감한 카카오브레인 연구팀은 자사가 보유한 딥러닝 기술을 활용해 한국어-제주어 기계 번역과 제주어 음성합성(TTS) 모델을 구축했습니다.

[ 표 1 ] 유네스코는 세대 간 언어의 계승 정도를 다섯 단계로 구분했다.

위 성과를 정리한 논문인 'Jejueo Datasets for Machine Translation and Speech Synthesis'(박규병, 최요중, 함지연)은 제주어를 전산학적으로 접근한 최초의 연구 성과를 인정받아 LREC 학회[1]에 논문 게재 승인됐습니다. 이번 글에서는 학습 데이터셋 구축과 딥러닝 번역모델 및 딥러닝 음성합성 모델 개발 과정을 상세히 다뤄보고자 합니다. 카카오브레인에서 딥러닝을 활용한 자연어처리와 음성 연구를 이끄는 박규병 연구원을 만나 이 제주어 활성화 프로젝트에 관한 이야기를 자세히 들어봤습니다.


1.제주어 학습 데이터셋 구축

딥러닝 모델의 일반화 성능을 높이기 위해서는 무엇보다 양질의 데이터의 대량 확보가 중요합니다. 하지만 제주어 번역 모델 훈련에 적합한 형태의 텍스트 데이터는 물론 잡음(noise)이 섞이지 않은 음성 데이터를 보유한 기관을 찾을 수가 없었습니다. 이런 이유로 카카오브레인은 제주어-표준어 병렬 코퍼스와 제주어 화자의 음성 데이터셋을 자체적으로 확보하는 데 주력했습니다.

[ 그림 2 ] 카카오브레인 연구팀은 제주어 기계 번역과 음성 합성을 위한 모델 훈련에 필요한 데이터셋을 자체적으로 구축했다.

JIT(Jejueo Interview Transcripts)은 <제주어 문장, 한국어 문장>으로 구성된 17만 개의 병렬 말뭉치입니다. JSS(Jejueo Single Speaker Speech)는 <화자가 말한 내용을 옮겨 적은 텍스트(스크립트), 제주어 단일 화자의 발화 음성 오디오>로 이뤄진 병렬 데이터셋입니다. 오픈소스 형태로 공개된 두 데이터셋은 누구나 무료로 활용할 수 있습니다.

연구팀은 JIT 구축을 위해 제주학연구센터가 비상업적인 목적[2]으로 사용할 수 있게끔 제공한 ‘제주어구술자료집’ 2017년과 2018년 버전을 가공했습니다. 이 자료집은 국내 최대 규모의 제주어를 한국어로 대역한 자료라는 점에서 매우 귀중한 자료로 평가받고 있습니다. 연구팀은 총 20개의 PDF 파일을 텍스트 파일(*.txt)로 변환한 후, 이 파일을 학습에 적합한 형태로 정제했습니다. 그 결과, 훈련 데이터 160,356쌍, 검증 데이터와 테스트 데이터 각각 5,000쌍을 얻을 수 있었습니다.

[ 표 2 ] JIT 데이터셋 통계 자료

이후 연구팀은 JSS 개발을 위해 JIT 데이터셋에서 1만 개의 문장을 무작위로 선정했습니다. 3개 단어 미만 또는 35개 이상의 단어로 구성된 문장은 제외했습니다. 지나치게 짧은 문장과 긴 문장이 모델에 동시에 입력되면 GPU를 효율적으로 사용할 수 없기 때문입니다. 연구팀은 완성된 대본을 읽을 제주 출신의 30대 아마추어 성우를 섭외했습니다. 이렇게 해서 최종 획득한 녹음 데이터 분량은 총 13시간 47분입니다.

[ 표 3 ] JSS 데이터셋 통계 자료


2.딥러닝 기계번역 모델 구축

모든 단어(또는 형태소)를 임베딩 벡터(embedding vector)[3]로 표현하는 데에는 한계가 있습니다. 딥러닝 모델에서 사용하는 일반적인 단어 사전[4]의 크기는 3만 개에서 5만 개 수준입니다. 하지만 이는 각종 신조어나 변형어, 약어를 비롯해 사람의 이름과 같은 고유명사와 같은 세상에 존재하는 모든 단어를 포함하기에는 지극히 작은 규모입니다. 그렇다고 단어 사전 크기를 무한정 늘릴 수도 없습니다. 텍스트 데이터를 학습한 모델의 계산 복잡도는 단어의 수에 비례해 증가하기 때문입니다.

이 문제를 해결하고자 에든버러 대학교(University of Edinburgh) 연구진은 문장을 서브워드(subword)[5] 단위로 분절하는 알고리즘인 BPE(Byte-Pair Encoding)를 머신러닝에 적용했습니다. 처음 본 단어를 효과적으로 처리하는 BPE 덕분에 기계번역 모델은 괄목할만한 성능 개선을 이루게 됐습니다. 그 이후 BPE는 현재 자연어처리 알고리즘에서 대표적인 전처리 방법론으로 자리매김하고 있습니다.

연구팀은 이 BPE와 유니그램 언어 모델(Unigram LM)[6]을 합친 최신 단어 분절 프로그램인 SentencePiece를 이용해 제주어-한국어 번역을 위한 최적의 BPE 사전 크기를 결정하는 실험을 진행했습니다. 그 결과, 한국어를 제주어로, 제주어를 한국어로 번역하는 모델 모두 단어 크기가 4,000개일 때 가장 좋은 성능을 냄을 확인할 수 있었습니다([그림 3]).

[ 그림 3 ] 단어 분절 알고리즘인 StencePiece를 적용해본 결과, 한국어를 제주어로 또는 제주어를 한국어로 번역하는 모델에 적합한 단어 사전의 크기는 4,000개인 것으로 확인할 수 있었다.

연구팀은 BLEU(bilingual evaluation understudy)로 번역 모델의 성능을 평가했습니다. IBM에서 개발한 성능 평가 척도인 BLEU는 기계가 번역한 문장과 정답 문장 간의 정확도(precision)를 측정합니다. 숫자가 클수록 번역된 문장과 정답 문장의 유사성이 높다고 보면 됩니다. 물론 BLEU가 높더라도 사람의 번역 품질보다 훨씬 떨어질 수는 있습니다. 그런데도 불구, 언어에 구애받지 않고 계산 속도가 빠르며 현존하는 방법 중 가장 객관적이라는 점에서 그 공신력을 인정받고 있습니다.

표준 transformer[7] 아키텍처를 활용해 만든 연구팀의 기계 번역 모델은 3가지 태스크를 배웠습니다([표 4]). 입력값을 그대로 출력하는 태스크(Copy)와 제주어 또는 한국어를 번역하는 태스크(JIT), JIT 데이터와 한국어 위키 데이터셋(KorWiki)를 함께 훈련한 태스크(JIT+KorWiki)[8]가 바로 그것입니다.

[ 표 4 ] 카카오브레인 연구팀은 JIT 데이터셋과 한국어 위키 데이터셋을 함께 훈련한 태스크에서의 성능이 가장 높음을 확인했다.

똑같은 문자(한글)을 이용해 글자를 표기하는 특성상 제주어와 한국어에는 겹치는 어휘가 상당히 많습니다. 한국어 또는 제주어 문장을 그대로 출력하는 것만으로도 번역했다고 볼 수 있기에 학습이 제대로 이뤄졌는지를 평가하기가 어려운 구조죠. 이에 연구팀은 번역 모델의 성능이 입력값을 그대로 출력하는 태스크를 상회하는지를 기준으로 삼았습니다. 이 태스크에서보다는 점수가 높게 나와야 한국어-제주어 번역 모델이 제 기능을 한다고 본 거죠. 그 결과, JIT 데이터셋과 한국어 위키 데이터셋을 함께 훈련한 태스크에서의 성능이 가장 높음을 확인할 수 있었습니다.

같은 기계번역임에도 불구, 제주어를 한국어로 번역하는 모델의 점수가 더 높은 이유는 무엇일까요? 이는 제주어 문장에 한국어 단어가 등장하는 특성에 기인한 것으로 분석됩니다. 예를 들어, 제주어 문장에 ‘아버지’라는 한국어 단어가 530번, 같은 의미를 지닌 제주어 단어 ‘아방’은 332번 등장합니다. 하지만 한국어 문장에는 ‘아버지’라는 단어만 등장하죠. 즉, 더 많은 어휘 수가 등장하는 제주어를 한국어로 성공적으로 번역할 확률이 높습니다. 이런 이유로 모델에게는 한국어를 제주어로 변환하는 일이 더 어렵게 느껴졌을 것으로 보입니다.


3.딥러닝 음성합성 모델 구축

WaveNet(구글 딥마인드), Tacotron12(구글), char2Wav(MILA), DeepVoice123(바이두), VoiceLoop(페이스북)처럼 우수한 성능을 자랑하는 딥러닝 음성합성 모델이 잇따라 나왔습니다. 그중에서도 카카오브레인 연구팀은 DCTTS(deep convolutional text to speech)를 사용했습니다. RNN 대신 CNN에 기반한 DCTTS는 가볍고 합성 속도가 빠르며, 합성 안정성이 높습니다. 다른 연구를 통해 DCTTS의 효용성을 입증해 본 연구팀은 JSS 데이터셋을 훈련할 때도 이 모델을 사용했습니다.

음성합성의 모델의 품질은 어떻게 평가할까요? 사람이 이를 직접 듣고 점수로 평가하는 실험(MOS, mean opinion score)이 주로 사용됩니다. 하지만 사람마다 주관적인 평가가 이뤄지고 평가 비용이 높아서 음성합성 모델의 효용성을 평가하는 데 한계가 있을 수 있습니다. 제주어에 능통한 외부 전문가를 영입하기도 쉽지 않죠. 이런 이유로 연구팀은 객관적인 성능 지표 중 하나인 MCD(Mel Cepstral Distortion)로 모델의 성능을 평가했습니다. MCD는 입력된 음성과 합성된 음성의 멜-켑스트럼[9] 차이를 측정합니다. 숫자가 낮을수록 합성 품질이 높다고 보면 됩니다.

연구팀은 JSS의 스크립트를 자소(grapheme)[10]와 음소(phoneme)[11] 중 어떤 방식으로 입력하는 게 좋을지 고민했습니다. 발음은 단어의 의미를 나타내는 가장 중요한 기준으로, 문장 전체의 의미에도 큰 영향을 미칠 수 있기 때문입니다. 연구팀은 지금까지 축적해온 연구 경험을 바탕으로 자소만 입력해도 충분하다고 판단했습니다.

연구팀은 자소를 구성하는 자음과 모음(이를 합쳐서 자모라고 부른다)을 어떤 단위로 입력했을 때 제주어 음성합성에 가장 효과적일지를 추가로 고려했습니다. 입력 방법으로 크게 다섯 가지를 고려해볼 수 있습니다([도표 5]). 첫번째, 텍스트를 그대로 입력합니다(character). 두번째, 초성(onset) 자모와 종성(coda) 자모를 구분하고, 겹자음을 표기합니다(Hangul Jamo). 세번째, 초성과 종성 자모를 구분하고, 홑자음을 표기합니다.(Hangul Jamo(S)). 네번째, 자모를 구분하되, 쌍자음을 표기합니다(HCJ). 다섯번째, 자모를 구분하되, 쌍자음을 표기하지 않습니다(HCJ(S)).

[ 표 5 ] 카카오브레인 연구팀은 100개의 테스트 샘플 문장의 MCD를 측정했다. 그 결과, 초성 자모과 종성 자모를 구분하고, 겹자음을 표기하는 토큰형의 MCD 점수가 가장 낮음을 확인할 수 있다.

이 다섯 가지 방식으로 100개의 테스트 데이터를 입력한 결과, 두번째 방식에서의 MCD가 가장 낮음을 확인할 수 있었습니다. 정보를 보존하는 최소 단위로 상세하게 쪼갠 덕분이라고 연구팀은 분석했습니다.

이 연구의 한계는 있습니다. 상용화가 가능한 수준의 제주어 번역 모델과 음성합성 모델을 만들기 위해서는 지금보다 더 많은 데이터셋을 갖춰야 합니다. 시중 번역 서비스에 활용된 데이터와 비교했을 때 학습에 사용한 데이터양이 턱없이 부족하기 때문입니다. 물론 학습에 용이한 형태로 정제하는 데 막대한 시간과 비용이 필연적으로 따를 수밖에 없습니다.

박규병 연구원은 “이번 연구가 국내외 학자가 제주어에 대한 지속적인 관심을 쏟는 계기가 되었으면 한다”며 “더불어 제주어를 전산학적으로 접근하는 데 있어서 산학 협력 및 지자체 차원에서의 지원이 활발해지길 바란다”고 말했습니다.


👏음성 및 자연어 처리 분야 리서치 사이언티스트・리서치 엔지니어 모집 영입공고 : https://kakaobrain.com/career


참고
[1] The International Conference on Language Resources and Evaluation의 약자. 언어 자원과 평가를 주제로 하는 국제학회로, 격년으로 열린다.
[2] '공공누리 출처표시' 조건에 따라 제주학연구센터 자료는 출처를 표시하면 상업적, 비상업적 이용은 물론, 변형 등 2차적 저작물 작성이 가능하다.
[3] 데이터의 특성을 잘 반영하고 편리한 계산을 위해 사용된다.
[4] 텍스트에서 추출한 토큰 순서대로 번호를 매겨 둔 데이터베이스
[5] 형태소와 비슷한 개념이다.
[6] 주어진 m개의 모든 단어가 서로 완전히 독립적이라고 가정하고 각 단어의 확률을 곱한 값을 출력한다.
[7] 컨볼루션(convolution)이나 순환(recurrence) 기법 대신, 모든 단어가 현재 결과에 기여하는 정도를 반영할 수 있도록 각 입력 단어가 출력 상태에 연결하는 어텐션(attention) 신경망 구조를 활용한 seq2seq 모델이다. 어텐션을 이용해 거리가 먼 단어 간의 관계를 효과적으로 표현이 가능한 덕분에 학습 성능이 좋아졌다.
[8] 한국어위키에서 뽑은 16만 356개의 한국어 문장 데이터셋
[9] 음성파일을 음성인식에서 주로 사용되는 음성분석 매개변수
[10] 한글 맞춤법 규정에 따른 텍스트를 표기한다.(예:능막염, 금융)
[11] 표준 발음법 규정에 따라 텍스트를 표기한다.(예:[능망념], [그뮹])
이 글을 쓴 사람들
samantha.lee
이수경 | 글,정리
지난 2016년 3월 알파고와 이세돌 9단이 펼치는 세기의 대결을 취재한 것을 계기로 인공지능 세계에 큰 매력을 느꼈습니다. 인공지능을 알고 싶어하는 사람들을 위한 콘텐츠를 쓰고자 카카오브레인에 합류했습니다. 현재는 분야별 인공지능 전문가와 함께 기술 콘텐츠를 생산하는 재미에 푹 빠져 있습니다. 인공지능을 만드는 사람들의 이야기와 인공지능이 바꿀 미래 사회에 대한 글은 누구보다 쉽고, 재미있게 쓰는 사람이 되고 싶습니다.
ryan.ai
박규병 | 감수
카카오브레인에서 언어를 재료로 한 딥러닝 연구를 하고 있습니다. 언어와 교육, 생명정보, 환경 등에 관심이 있습니다. 기술을 중시하지만, 기술이 아닌 사람이 중심이 되어야 한다고 믿습니다. https://github.com/kyubyong에서 그동안의 연구 활동과 사진을 보실 수 있습니다.