[Deep.人. Article] AdaSpeech: 개인화 음성 합성을 위한 적응형 TTS 모델 - DeepBrainAI

Technology
|
January 25, 2022
Deep Learning Team : Colin
들어가며

AI 스피커나 네비게이션을 사용하면서 안내 음성의 목소리를 바꿔본 경험이 있으실 겁니다. 필자도 좋아하는 배우인 유인나님의 음성으로 스피커 목소리를 설정해놨는데 이처럼 음성 합성 기술이 개인 비서, 뉴스 방송, 음성 길 안내 등 삶의 곳곳에 녹아들면서 여러 사람의 목소리로 음성을 합성해내는 것이 중요해졌습니다. 그리고 다른 사람들의 목소리 뿐만 아니라 본인의 목소리를 AI의 음성으로 사용하고자 하는 수요도 늘고 있는데 이를 음성 합성 연구 분야에서는 개인화 음성 합성(custom voice synthesis)이라고 부릅니다.

오늘은 개인화 음성 합성을 위해 등장한 AdaSpeech라는 text-to-speech(TTS) 모델을 살펴보겠습니다. 개인화 음성을 생성하는 기술은 주로 사전 학습된 소스 TTS 모델을 사용자의 음성에 맞춰 조정하는 과정을 통해 이루어집니다. 이때 쓰이는 사용자의 음성 데이터는 편의의 목적으로 양이 적은 경우가 대부분이며, 양이 적기 때문에 생성된 음성이 자연스러우면서 원래의 음성과 유사하도록 느껴지게 만드는 것은 매우 어려운 과제입니다. 개인화 음성으로 모델 학습 시에 생기는 문제는 크게 두 가지가 있습니다.

첫째, 특정 사용자의 음성은 소스 TTS 모델을 학습시킨 음성 데이터와는 다른 음향적 특징(acoustic conditions)을 가진 경우가 많습니다. 예를 들어, 말하는 사람의 운율, 스타일, 감정, 강세, 녹음 환경 등이 다양하고 이로부터 생기는 음성 데이터의 차이가 소스 모델의 일반화 성능을 저해하여 낮은 적응 품질을 야기할 수 있습니다.

둘째, 소스 TTS 모델을 새로운 음성에 대해 적응시킬 때 fine-tuning 파라미터와 음성 품질에 trade-off가 있습니다. 즉, 더 많은 적응 파라미터를 사용할수록 좋은 품질의 음성을 생성할 수 있지만 메모리 사용량이 증가하고 모델을 배포하는 데에 큰 비용이 따릅니다.

기존의 연구들은 전체 모델 혹은 일부(특히 decoder)를 fine-tuning하는 방식, 다화자 음성 합성에서 화자(speaker)의 구분을 위해 사용되는 speaker embedding 만을 fine-tuning하거나 speaker encoder module을 훈련시키는 방식, 소스 음성 데이터와 적응 데이터의 도메인이 같다는 가정을 하는 등의 방법으로 접근하여 개인화 음성을 생성하고 있지만 모델의 파라미터가 너무 많거나 만족할만한 품질을 내지 못하는 이유로 실사용에 문제가 있습니다.

AdaSpeech는 위의 문제들을 해결하면서 새로운 사용자(or 화자)의 음성을 높은 품질로 효율적이게 생성할 수 있는 TTS 모델입니다. 크게 pre-training, fine-tuning, inference의 3단계로 나누어 파이프라인을 구성했고 기존의 어려움을 해결하기 위해 두 가지 테크닉을 사용하는데 지금부터 함께 살펴보겠습니다.

 

바쁜 현대인을 위한 세 줄 요약
  • Acoustic condition modeling을 통하여 음성 데이터에서 scope에 따른 음향적 특징들을 추출하고 기존의 phoneme encoding 벡터에 더해줌으로써 모델의 일반화 성능을 향상시켰습니다.
  • Conditional layer normalization을 사용하여 소스 모델을 새로운 화자의 데이터에 대하여 적응시키는 과정을 효율적으로 개선하였습니다.
  • 기존의 Baseline 모델들보다 더 적은 파라미터, 적은 양의 새로운 음성 데이터를 가지고 고품질의 개인화 음성을 만드는게 가능해졌습니다.

 

모델 구조

AdaSpeech의 backbone 모델은 FastSpeech 2입니다. 크게 phoneme encoder, variance adaptor, mel decoder로 이루어져 있고 여기에 저자들이 고안한 새로운 두 가지 요소들(Figure 1에서 분홍색 영역)이 포함된 형태입니다.

 

Acoustic Condition Modeling

일반적으로 모델 학습에 쓰인 소스 음성이 새로운 사용자 음성의 음향적 특징들을 모두 커버할 수 없기 때문에 모델의 일반화 성능을 끌어올리는 것이 중요합니다. TTS에서 모델의 입력으로 들어간 텍스트에 이러한 음향적 특징들이 담기기는 어려우므로 모델은 학습 데이터에서 음향적 특징을 기억하는 편향을 가지게 되는데 이는 개인화 음성을 생성할 시 일반화 성능을 저해하는 요소로 작용합니다. 이를 해결하기 위한 가장 단순한 방법은 모델의 입력으로 음향적 특징들을 제공해주는 것으로, AdaSpeech에서는 speaker level, utterance level, phoneme level로 나누어 광역적인 정보부터 지엽적인 정보까지 다양한 scope의 음향적 특징들을 입력으로 함께 넣어주는 방식을 택했고 이를 acoustic condition modeling이라고 부릅니다. 각각의 레벨은 아래와 같은 정보들을 담습니다.

  • Speaker level: 화자의 전체적인 특징을 잡아내는 레벨로, 가장 큰 범위의 음향적 특징을 나타냅니다(예: speaker embedding).
  • Utterance level: 문장을 발음할 때 나타나는 특징을 잡아내는 레벨로, 입력으로 레퍼런스 음성의 멜 스펙트로그램이 쓰이고 이로부터 특징 벡터를 출력합니다. 모델을 훈련시킬 때는 타겟 음성이 레퍼런스 음성이 되고, 추론 시에는 합성하고자 하는 화자의 음성 중 하나를 무작위로 골라서 레퍼런스 음성으로 활용하는 방식을 사용합니다.
  • Phoneme level: 문장의 음소들 단위로 특징을 잡아내는 가장 작은 범위의 레벨입니다(예: 특정 음소에 대한 강세, 피치, 운율, 일시적 주변 소음). 이때는 같은 음소에 해당하는 멜 프레임들을 구간 내 평균으로 치환하여 나타낸 음소 레벨 멜 스펙트로그램을 입력으로 넣어줍니다. 그리고 추론 시에는 구조는 동일하지만, phoneme encoder로부터 나온 hidden vector를 입력으로 받아 음소 레벨 벡터를 예측하는 acoustic predictor를 사용합니다.

 

Conditional Layer Normalization

 

AdaSpeech의 mel decoder는 Transformer 모델에 기반해서 self-attention과 feed-forward network로 이루어져 있는데 이 부분에서 많은 파라미터가 사용되기 때문에 새로운 음성에 맞춰 fine-tuning 시키는 과정이 효율적이지 않을 것입니다. 그래서 저자들은 각 층의 self-attention과 feed-forward network에 conditional layer normalization을 적용했고 여기에 사용되는 scale과 bias를 사용자에 맞게 업데이트 해주는 식으로 fine-tuning 시 업데이트되는 파라미터의 수를 줄였습니다. 그리고 여기서 사용되는 scale과 bias는 위와 같이 각각 linear layer을 통과하여 나오게 되고 speaker embedding으로부터 이 벡터들이 계산되기 때문에 conditional이라는 이름이 붙었습니다.

 

학습 및 추론 과정

AdaSpeech를 학습시키고 새로운 화자에 맞춰 음성을 추론하는 과정은 위의 알고리즘으로 요약할 수 있습니다. 먼저, 가능한 많은 양의 텍스트-음성 데이터로 소스 모델을 pre-training 시키고 그 후에 새로운 화자의 음성 데이터로 conditional layer normalization과 speaker embedding을 위해 쓰이는 파라미터들을 fine-tuning을 통해 업데이트합니다. 추론 시에는 화자 정보로부터 계산해야 하는 파라미터(fine-tuned)와 학습을 통해 고정된 파라미터(not fine-tuned)의 값을 함께 활용하여 멜 스펙트로그램을 만드는 것을 알 수 있습니다.

 

실험 결과
개인화 음성 품질 평가

 

보코더로 MelGAN을 사용하였고 합성된 개인화 음성의 자연스러움을 MOS로, 유사성을 SMOS라는 척도로 평가하였습니다. AdaSpeech가 baseline보다 적거나 비슷한 수준의 파라미터만을 가지고 우수한 품질의 음성을 합성할 수 있다는 것을 알 수 있습니다. 그리고 소스 TTS 모델을 LibriTTS라는 데이터셋에 대해 pre-train하였기 때문에 당연하게도 LibriTTS의 새로운 화자로 적응시켰을 때 가장 높은 점수를 받는 것이 보입니다.

 

Ablation Study

상대적 품질을 평가할 수 있는 CMOS(comparison MOS)를 활용해 본 논문에서 contribution으로 주장하는 테크닉들에 대한 ablation study를 진행하였습니다. Table 2에서 특정 부분을 제거한 AdaSpeech의 CMOS 수치들이 기본 AdaSpeech보다 낮게 나왔으므로 모든 테크닉들이 품질 향상에 기여한다는 결론을 내릴 수 있습니다.

 

Acoustic Condition Modeling 분석

학습된 화자들의 utterance-level acoustic vector를 t-SNE로 나타낸 결과가 위의 Figure 4(a)와 같습니다. 동일한 화자가 발음한 다른 문장들이 같은 군집으로 분류되어 있는 것을 확인할 수 있고, 이로부터 한 화자가 문장을 말할 때 가지는 고유한 특징을 모델이 잘 학습한 것으로 판단됩니다. 몇몇 예외들도 보이긴 하는데 이 문장들은 대개 짧거나 감정적인 음성이기 때문에 다른 화자의 발화와 구분하기가 힘든 경우라고 합니다.

 

Conditional Layer Normalization 분석

speaker embedding을 컨디셔닝하지 않고 scale, bias를 fine-tuning 한 경우와 mel decoder의 다른 파라미터들을 fine-tuning한 경우를 CMOS로 비교해 봤을 때 conditional layer normalization을 사용한 경우의 음성 품질이 가장 좋다는 것을 알 수 있습니다. 그러므로 layer normalization을 수행해줄 때 scale과 bias를 화자의 특징을 반영해 수정해주는 것이 좋고 이들만을 업데이트 하는 것이 모델의 적응 능력에 긍정적인 영향을 끼치는 것으로 종합해 볼 수 있겠습니다.

 

적응 데이터의 양에 따른 품질 평가

마지막으로 저자들은 이 모델이 실용적인지 판단해보기 위해 새로운 사용자의 음성 데이터가 얼마나 필요한지 테스트 해보는 실험을 진행하였습니다. Figure 4(b)를 보면 알 수 있듯이 10개 샘플을 사용할 때까지는 합성된 음성의 품질이 급속도로 향상되지만, 그 이후부터는 큰 개선이 보이지 않으므로 화자별 10개의 샘플만 사용하여 AdaSpeech 모델을 fine-tuning해도 된다고 판단됩니다.

 

결론 및 의견

AdaSpeech는 기존에 parallel한 음성 합성으로 속도를 향상시킨 FastSpeech의 장점을 잘 살리면서도 새로운 사용자에 대한 적응 능력을 갖춘 TTS 모델입니다. acoustic condition modeling으로 음성의 특징을 잡아줌으로써 모델의 일반화 성능을 향상시켰는데 이 모델링이 더 세분화된다면 사용자의 특징과 더욱 유사하게 말을 하는 AI를 만들 수도 있을 것입니다. 또한 10개 샘플만으로도 만족할만한 개인화 음성 TTS가 가능한 모델이라는 점에서 활용 가치가 무궁무진하다고 생각되지만, 그렇다 하더라도 사용자 음성과 그에 해당하는 텍스트가 함께 fine-tuning을 위한 데이터로 쓰여야 한다는 점이 실용적인 면에서 아쉽습니다. 실제로 AI 음성 합성 서비스를 사용하는 사람 중에서 자신의 목소리를 녹음할 수는 있더라도 텍스트까지 함께 입력하라고 하면 귀찮아 할 사용자가 더 많을테니까요. 그래서 다음 시간에는 이렇게 텍스트-음성 쌍의 데이터가 없어도 개인화 음성 합성이 가능한 AdaSpeech의 변형된 버전들을 소개해 드리겠습니다.

 

Reference

(1) [FastSpeech 2 논문] FastSpeech 2: Fast and High-Quality End-to-End Text to Speech

(2) [AdaSpeech 논문] AdaSpeech: Adaptive Text to Speech for Custom Voice

(3) [AdaSpeech 음성 데모] https://speechresearch.github.io/adaspeech/

Reference

(1) [FastSpeech 2 Paper] FastSpeech 2: Fast and High-Quality End-to-End Text to Speech

(2) [AdaSpeech Paper] AdaSpeech: Adaptive Text to Speech for Custom Voice

(3) [AdaSpeech Demo] https://speechresearch.github.io/adaspeech/

 

Most Read

Event & Webinar
December 17, 2021

NRF 2022에서 딥브레인AI를 방문해주세요. - DeepBrainAI

딥브레인AI는 2022년 1월 미국 뉴욕에서 NRF2022에 참가합니다. 

News
September 13, 2021

수백억 투자 감사합니다… AI스타트업들 싱글벙글 - DeepBrainAI

AI(인공지능) 분야 창업 초기 단계의 토종 스타트업에 최근 투자가 몰리고 있다. AI 앵커 같은 가상 인간을 개발하는 딥브레인AI는 지난 3일 500억원의 초기 투자를 유치했다.

News
August 12, 2021

서울대-머니브레인, 딥페이크 탐지 AI 경진대회 개최 - DeepBrainAI

이번 대회는 인공지능 영상합성과 딥페이크 분야에서 세계적인 선두기업인 머니브레인과 서울대학교의 인공지능 연구실(DSAIL)이 주최, 데이콘이 주관, 한국정보화진흥원이 후원한다.