Grad-TTS

Popov, Vadim, et al. “Grad-tts: A diffusion probabilistic model for text-to-speech.” arXiv preprint arXiv:2105.06337 (2021).

들어가며

요즘 분야를 가릴 것 없이 diffusion probabilistic model을 이용한 generative model이 인기다. stochastic calculus에 기반한 이 모델링 방법은 유연한 추론을 허용해주기 때문에 복잡한 데이터 분포를 모델링 하는 데 큰 잠재력을 가진다. 이를 TTS에 적용해보고자 하는 것이 Grad-TTS의 취지이다. 기본적으로 인코더-디코더 구조를 가지고 있으며 인코더에서 예측한 noise를 score-based 디코더를 사용해서 멜 스펙트로그램으로 점차 변형시켜 나가는 과정을 통해 음성을 합성한다.

핵심 요약

  • Glow-TTS의 Monotonic Alignment Search(MAS)를 활용한 인코더 구조를 사용하고 score-based 디코더를 통해 멜 스펙트로그램을 생성한다.
  • 인코더로부터 나온 출력을 파라미터로 사용하여 만들어낸 gaussian noise를 reverse diffusion 과정을 거쳐서 멜 스펙트로그램으로 복원하는 원리를 사용한다.
  • reverse diffusion의 iteration을 통해 생성되는 멜 스펙트로그램의 품질과 추론 속도 사이 trade-off를 조절할 수 있다.

모델 구조

Diffusion probabilistic modelling

diffusion process

수학자들의 연구를 통해 diffusion 과정은 아래와 같이 stochastic differential equation(SDE)로 표현될 수 있다.

sde

이때, 어떤 데이터를 gaussian noise로 변형시키는 forward diffusion인 n차원의 stochastic process Xt은 아래와 같이 나타낼 수 있다.

forward process

그리고 역과정인 reverse diffusion은 아래처럼 표현되며,

reverse process

이를 SDE 대신 ODE로 표현할 수 있다는 것이 증명되었다.

ode

forward와 reverse diffusion 식에서 forward kolmogorov equation을 구해보면 동일하다는 점을 통해, 두 과정에서 pdf의 진화과정이 일치함을 알 수 있다. 따라서 만약 우리가 noisy 데이터 log-density의 gradient를 뉴럴 넷으로 추정할 수 있으면 noisy 데이터에서 샘플링한 값을 통해 원래 데이터의 분포를 모델링할 수 있다.

Inference

model architecture

Glow-TTS에서 인코더 부분을 가져와서 MAS를 통해 text와 정렬된 시퀀스를 출력한다. 그리고 이 시퀀스를 평균으로 가지는 gaussian noise를 만들어 reverse diffusion 과정을 진행한다. 자세히는 위의 그림처럼 인코더의 출력을 noise인 Xt와 합치고 U-net을 통과시켜 score matching을 진행한다.

Training

Grad-TTS 학습의 목적은 인코더의 출력 시퀀스와 타겟 시퀀스 사이의 거리가 최소화되도록 하는 것이다. 직관적으로 생각해 봤을 때 이미 처음의 noise가 타겟과 가까운 상태라면 디코딩 과정은 더욱 쉽게 학습될 수 있다. 이로부터 정의되는 인코더 손실 함수는 아래와 같다.

encoder loss

인코더 손실 함수는 인코더의 파라미터와 alignment 함수에 대해서 최적화되어야 하는데 한 번에 학습시키는 것이 어렵기 때문에 두 단계로 나누어 학습을 진행한다. 먼저, 인코더 파라미터를 고정시킨 채 최적의 alignment를 찾고 그 다음엔 alignment를 고정시킨 상태로 인코더 파라미터를 업데이트하는 방식이다. 학습 시에는 alignment를 MAS로 계산하지만 추론 시에는 사용할 수 없으므로 duration predictor를 통해 duration을 구해야 하고 아래와 같은 손실 함수를 통해 학습시킨다.

duration loss

마지막으로 diffusion loss는 다음과 같이 계산된다.

diffusion loss

실험 결과

Baseline 비교

baseline comparison

iteration 10만 사용해도 Grad-TTS가 Glow-TTS보다 합성 품질이 좋은 것을 알 수 있고 1000까지 사용하면 autoregressive 모델인 Tacotron2을 능가하면서 GT와 가장 가까운 품질을 보여준다.

Ablation Study

ablation study

인코더 출력을 파라미터로 사용하여 noise를 출력하는 경우에 iteration 10을 사용한 모델을 Grad-TTS-10이라고 할 때, 일반적인 평균 0인 gaussian noise를 사용하는 경우와 차이가 있는지 비교하였다. iteration을 50까지 늘려도 Grad-TTS-10보다 품질이 떨어진다고 응답한 경우가 많았으므로, 처음의 noise를 인코더 출력으로부터 계산하는 것이 효과적인 방법이라고 판단된다.

Error Analysis

error analysis

모델별로 어떤 에러들이 많이 발생하는지 비교했다. 전반적으로 Grad-TTS가 Glow-TTS의 에러를 개선한 것으로 보이며, 특히 이상한 강세를 주거나(stress error), 로봇처럼 딱딱하게 읽는(robotic error) 현상이 현저하게 개선되었다.

Inference Speed

inference speed

입력 텍스트 길이가 길어질수록 Grad-TTS는 총 iteration 횟수가 배가 되기 때문에 추론 속도가 느려질 수 밖에 없다. 그렇지만 iteration 10을 사용하면 만족할만한 품질로 Tacotron2와 Glow-TTS 사이의 속도로 추론을 진행할 수 있다.

End-to-End TTS

간단하게 E2E TTS가 가능한지도 테스트했다고 한다. 디코더에서 U-Net 구조를 WaveGrad로 대체하면 되는데 충분히 들어줄만한 품질의 오디오를 생성할 수는 있었지만, 두 단계로 진행한 결과와 비교할만한 수준은 되지 못해서 이 모델을 논문에 자세히 언급하지는 않는다.

의견

  • WaveGrad를 디코더에 사용할 경우 어떻게 음성의 품질을 높일 수 있을지 고민해봐야겠다.
  • 추론 속도가 Glow-TTS에 비해 좀 뒤쳐지기는 하지만 발화의 자연스러움이 개선되었기 때문에 서비스에 적용하기 괜찮은 모델이라고 생각한다.
  • DPM을 TTS에 적용한 첫 모델이라 인상적이고, 앞으로 비슷한 연구들이 진행되면서 주류로 자리잡을 수 있을지 기대가 된다.

Leave a comment