본문 바로가기

audio/audio generation (tts)

[논문리뷰] Grad-TTS: A Diffusion Probabilistic Model for Text-to-Speech (ICML21)

제목: Grad-TTS: A Diffusion Probabilistic Model for Text-to-Speech

저자: Cadim Popov, Ivan Vovk, Vladimir Gogoryan, Tasnima Sadekova, Mikhail Kudinov

소속: Huawei Noah's Ark Lab, Higher School of Economics

발표: ICML 2021

논문: https://arxiv.org/abs/2105.06337

코드: https://github.com/huawei-noah/speech-backbones

오디오샘플: https://grad-tts.github.io/

 

- Grad-TTS
- 멜스펙트로그램을 생성하는 디코더에서 diffusion model을 사용하는 모델.
- 따라서 좀 더 좋은 멜 이미지를 생성할 수 있고, 스텝사이즈 N에 따라 퀄리티/속도의 조정을 할 수 있음.
- 그 외의 구조는 Glow-TTS[Kim20]을 참고하였음(MAS등)
- 결과적으로 다른 모델들을 퀄리티 면에서 이기는 결과가 나옴. 속도도 괜찮은 RTF를 기록.
- end-to-end도 시도해 보았는데 이 부분에서는 아직 만족한 결과는 나오지 않는 듯. 

 

Story

TTS분야에서 최근에 DPMs(Diffusion Probabilistic Models)을 성공적으로 활용한 모델이 나왔음[Chen21][Kong21]. 하지만 이들은 보코더에 대한 결과들이고 DPMs를 사용해서 멜스펙트로그램같은 feature generator를 제안한 논문은 아직  나오지 않았음. 여기서 보여주겠음.

 

Diffusion probabilistic modelling

간단하게 말해 diffusion 타입의 프로세스들은 아래의  stochastic differential equation (SDE)를 만족하는 stochastic process들임.

여기서 $W_t$는 standard Brownian motion 이고 $t \in [0, T]$ 는 0부터 어떤 finite time horizon $T$ 사이임. 그리고 $b$는 drift, $a$는 diffusion이라고 불리는 계수임. 

 

$Law(X_0)$으로 시작해서 마지막 distribution $Law(X_T)$($T$가 무한대로 갈때)가 결국 standard normal $\mathcal{N}(0, I)$로 수렴하는 stochastic process를 찾는건 쉬움. 이러한 성질을 지닌 어떠한 diffusion 타입의 프로세스들은 모두 forward diffusion이라고 불리고, diffusion probabilistic modelling의 목적은 이러한 trajectory를 최대한 역으로 되돌릴 수 있는 reverse diffusion을 찾는 것임. 물론 foward방향보다는 훨씬 힘들일이긴 하지만 그래도 많은 경우 적당한 neural netowrk으로 잘 parameterize를 한다면 찾아낼 수 있음.

 

만일 이를 찾는다고 가정하면 어떤 데이터의 생성은 일단 $\mathcal{N}(0, I)$에서 랜덤 노이즈를 하나 샘플링하고, 적당한 solver를 써서(보통은 first-order Euler-Maruyama scheme) 찾아낸 reverse diffusion의 SDE를 플면됨. 만일 forward와 reverse diffusion process가 유사한 trajectory를 갖는다면, 결과로 얻어진 샘플은 원래의 데이터 $Law(X_0)$과 매우 유사할것임. 아래에 간단하게 이미지로 표현하였음.

최근까지 score-based and denoising diffusion probabilistic model들은 Markov chain을 이용해서 표현되곤 했었음. 하지만 [Song21]에서 사실 이러한 Markov chain은 알고보면 어떤 SDE를 만족하는 stochastic process이라는 것을 보였음. 이 논문에서도 최신 표현 방식을 따를 거임. 그리고 이 논문에서는 보다 generalized DPMs를 제안하는데, forward diffusion transform이 $\mathcal{N}(0, I)$가 아니라 $\mathcal{N}(\mu, \Sigma)$로 바꿀 수 있다는 것을 보일거임. 

 

Forward diffusion

우선, 일정한 infinite time horizon $T$에서 어떠한 데이터를 가우시안 노이즈로 바꾸는 forward diffusion process를 정의함. 만일 $n$차원 stochastic process $X_t$가 아래의 SDE를 만족한다면,

(Equation 2)

(여기서 $\beta_t$는 noise schedule이라고 부르는 non-negative 함수이고, $\mu$와 diagonal 행렬 $\Sigma$는 양수) 이 솔루션은 아래와 같음.

만일 아래와 같이 $\rho$와 $\lambda$를 정의하면,

(Equation 5)

Ito's integral의 성질로 인해 conditional distribution $(X_t|X_0)$은 가우시안임.

(Equation 6)

즉 아래 조건을 만족하는 어떠한 noise schedule $\beta_t$에 대해서 infinite time horizon을 고려한다면,

아래의 성질을 만족한다는 의미임.

따라서 $X_0$에 상관없이 $X_t$는 $\mathcal{N}(\mu, \Sigma)$로 수렴한다는 것이고, 이는 이 논문에서 필요한 성질임. Equation 2를 만족하는 forward diffusion은 어떠한 데이터 분포 $Law(X_0)$라고 Gaussian noise $\mathcal{N}(\mu, \Sigma)$로 변형할 수 있음.

 

Reverse diffusion

DPM에 대한 이전 논문들은 reverse diffusion을 forward diffusion의 trajectory와 유사하도록 훈련을 시키곤 했지만, [Song21]은 diffusion타입의 stochastic process의 reverse-time dynamic에 대한 explicit formula를 제안하였음. 이 논문 형태로 바꾼다면 아래와 같음.

(Equation 8)

여기서 $\widetilde{W_t}$는 reverse-time Brownian motion 이고 $p_t$는 $X_t$의 probability density function임. 이 SDE는 terminal condition $X_T$부터 시작하여 역순으로 풀릴 수 있음.

 

게다가 [Song21]에서는 위 식 대신 아래식을 이용할 수 있다고 제안함.

(Equation 9)

Equation 2과 Equation 9의 Forward Kolmogorov equation은 동일한데, 즉 두 식의 stochastic process의 probability density function의 evolution 또한 동일하다는 의미임. 따라서 noisy data $X_t$의 log-density의 gradient를 예측하는 neural network $s_\theta (X_t, t)$가 있다면 우리는 Equation 8혹은 9를 풀어서 model data distribution $Law(X_0)$을 모델링할 수 있다는 의미.

 

Loss function

noisy data $X_t$의 log-density의 gradient를 예측하는 것은 보통 score matching이라고 불리고, 이를 다루는 논문들에서는 보통 $L_2$ 로스를 사용하여 이 gradient를 계산하곤 함. 여기서도 그렇게 해봄. 

 

Equation 6을 보면 단지 초기 데이터 $X_0$만 주어지면 $X_t$를 샘플할 수 있음. 게다가 $Law(X_t|X_0)$은 가우시안이기 때문에 log-density 형태는 간단한 closed form으로 구할 수 있음. 만일 $\epsilon_t$를 $N(0, \lambda(\Sigma, t))$에서 샘플링한 다음 아래식으로 $X_t$를 만든다면,

(Equation 10)

$X_t$의 log-density의 gradient는 아래와 같이 구할 수 있음.

고로 loss function은 아래와 같은 형태가 됨.

(Equation 12)

 

Grad-TTS

이 논문에서 제안하는 acoustic feature generator는 encoder, duration predictor, decoder 이렇게 3부분으로 되어 있음. 전체 구조는 Glow-TTS[Kim20]과 상당히 유사한 형태임. 하지만 decoder부분이 가장 다름. 아래는 전체 구조도.

 

Inference

encoder는 인풋 텍스트 시퀀스 $x_{1:L}$(character 혹은 phoneme)를 feature sequence $\tilde{\mu_{1:L}}$로 바꿈. 그리고 duration predictor에서는 encoded 텍스트 시퀀스 $\tilde{\mu_{1:L}}$와 frame-wise feature \mu_{1:F} 사이의 hard monotonic alignment $A$를 구함. 즉 duration predictor는 각 text input이 몇개의 frame에 해당하는지를 계산함. $A$의 monotonicity와 surjectiveness 덕분에 텍스트는 건너뛰는 것 없이 정확한 순서를 지키게 됨. 또한 duration predictor를 사용하는 다른 모델과 마찬가지로 여기에서 일정 값을 곱해서 전체 스피치의 템포를 조정할 수 있음.

 

아웃풋 시퀀스 $\mu = \mu_{1:F}$는 (Diffusion Probabilistic Model) decoder로 들어감. 이제 파라미터 $\theta$로 조정되는 뉴럴 네트워크 s_{\theta}(X_t, \mu, t)를 사용하여 아래와 같은 ODE를 정의할 수 있음.

 

위 식은 first-order Euler scheme을 사용하여 역방향으로(backwards) 풀릴 수 있음. $\mu$는 terminal condition $X_T \sim \mathcal{N}(\mu, I)$ 를 정의할 때도 사용됨. 여기서 사용자가 데이터를 보고 정의해야 하는 파라미터는 noise schedule $\beta_t$와 time horizon $T$가 있음. 스텝 사이즈 $h$또한 선택해야 할 하이퍼파라미터인데, 이를 이용하여 output 멜스펙트로그램의 퀄리티와 인퍼런스 속도를 조정할 수 있음.

 

또한 몇가지를 덧붙여보자면, Equation 8보다는 Equation 9를 사용했을 때 실제적으로 더 좋은 결과를 얻을 수 있었음. 스텝 사이즈 $h$가 작은 경우에는 거의 비슷하게 좋았지만 만일 $h$가 큰 경우에는 차이가 제법 났음. 또한 전체 과정을 간단하게 하기 위하여 $\Sigma = I$로 두었음. 뉴럴 네트워크의 추가적인 입력으로 $\mu$도 넣었는데, 이는 네트워크가 데이터 $X_0$에 더해지는 가우시안 노이즈를 더욱 잘 예측할 수 있게 만들기 위해서임. 

 

또한 추가적인 temperature hyperparameter $\tau$를 사용하여 $X_T$를 $\mathcal{N}(\mu, I)$가 아닌 $\mathcal{N}(\mu, \tau^{-1} I)$에서 샘플링하게 하여 $h$값에 따라 이 값을 조정하면 결과의 퀄리티를 유지하는데 도움을 줄 수 있음.

 

Training

로스는 총 3개를 사용. 첫번째는 인코더에 대한 로스. 제안하는 시스템에서 디코딩은 random noise $\mathcal{N}(\mu, I)$에서 시작하게 됨. 그럼 만일 인코더의 아웃풋 또한 이러한 모양이라면 디코딩은 더 쉬워질거임. 따라서 aligned encoder output $\tilde{\mu}$을 normal distribution이라고 가정하고 아래와 같은 engative log-likelihood encoder loss를 정의함.

여기서 $\varphi (\dot ; \tilde{\mu_i}, I)$는 $\mathcal{N} (\tilde{\mu_i}, I)$의 probability density function. $y$는 타겟 멜스펙트로그램을 의미. 다른 종류의 로스를 정의할 수도 있고, 사실 이러한 로스를 사용하지 않아도 되지만, 실제로 해보면 이 로스가 없으면 alignment를 제대로 배우지 못했음.

 

$L_{enc}$는 encoder parameter와 alignment function $A$에 대해서 함께 최적화가 되야함. 이걸 같이 하기는 쉽지 않으므로 [Kim20]에서 제안한대로 하나씩 하나씩 반복해서 최적화하게 됨. 즉 1) 고정된 encoder parameter안에서 optimal alignment $A^*$를 찾고, 2) 이 $A^*$을 고정하고 encoder parameter에 대한 loss function을 최적화함. $A^*$를 찾을 때는 Monotonic Alignment Search(MAS)[Kim20]를 이용함.

 

인퍼런스에서 $A^*$를 찾기 위해서 여기서는 duration predictor network을 이용함. 이 역시 [Kim20]와 동일한 방식으로 MSE로 차이를 줄이게 됨. 

 

여기서 $\mathbb{I}$는 indicator function이고, $sq[]$는 stop gradient operator로 이 부분이 encoder parameter에 영향을 못미치게 하기 위함.

 

이제 DPM과 관련된 로스를 정의할 차례. 앞서 언급한데로 계산을 간편하게 하기 위하여 $\Sigma = I$를 가정하였으므로 Equation 5에 따라 $\lambda$는 아래와 같이 단순해짐.

그리고 Equation 10에서 $\epsilon_t = \sqrt{\lambda_t} \xi_t$ 라 가정하면($\xi \sim \mathcal{N} (0, I)$) Equation 12는 아래와 같이 표현 될 수 있음.

 

즉 전체 diffusion loss function $L_{diff}$은 각기 다른 시간 $t \in [0, T]$에서 noisy data의 log-density의 그래디언트에 대한 weighted loss(의 기대값)라고 표현할 수 있음. 여기서 $X_0$은 훈련 데이터에서 샘플링된 타겟 멜스펙트로그램 $y$이고, $t$는 $[0, T]$의 uniform distribution에서 샘플링됨. 

 

훈련 과정을 정리하면 아래와 같은 순서로 이루어짐

1) 먼저 encoder, duration predictor, decoder parameter를 고정해두고, MAS알고리즘을 돌려 $L_{enc}$를 최소화하는 $A^*$를 찾음

2) 다음으로 $A^*$를 고정하고 encoder, duration predictor, decoder parameter에 대하여 $L_{enc} + L_{dp} + L_{diff}$를 최소화여 구함

3) 수렴될때까지 1)과 2)반복.

 

Model architecture

encoder와 duration predictor는 Glow-TTS와 동일한 구조를 사용. duration predictor는 두개의 convolution layer다음으로 duration을 구하는 project layer로 되어 있음. encoder는 pre-net 6개의 Transformer block, linear projection layer로 구성됨. pre-net은 3개의 conv + FS로 구성. decoder는 [Ho20]과 동일하게 U-Net[Ronneberger15]을 이용함(모델 사이즈는 좀 줄임). 

 

Experiments

LJSpeech 데이터셋을 이용. 인풋은 phoneme으로 바꾸어 사용. $T$=1을 사용하고, 노이즈 스케줄은 $\beta_t = \beta_0 + (\beta_1 - \beta_0) t$을 사용. $\beta_0$=0.05, $\beta_1$=20. 이전 연구들[Binkowski20]과 유사하게 고정된 길이(2초)의 멜스펙트로그램을 랜덤하게 골라 훈련시킴. MAS나 duration predictor 훈련에는 모든 멜을 다사용.

 

$L_{diff}$가 처음을 지나면 매우 천천히 수렴함.

하지만 이래도 인내심을 가지고 계속 오랫동안 훈련하는 것이 좋은 모델을 얻는데 무척 중요함. 왜냐하면 뉴럴 네트워크 $s_{\theta}$는 모든 $t$에 대해서 정확한 그래디언트를 학습해야 하기 때문. 

 

훈련이 완료되면 이제 Grad-TTS는 ODE의 step $N$을 조절하여 퀄리티와 인퍼런스 속도를 조정할 수 있음. 총 4가지의 값(4, 10, 100, 1000)을 이용하여 실험을 함. 비교를 위해 Glow-TTS, FastSpeech[Ren19], Tacotron2[Shen18]를 이용함. 보코더로는 HiFi-GAN[Kong20]을 이용. 

 

Subjective evaluation

AMT를 사용하여 구한 MOS점수는 아래와 같음.

(Table 2)

N을 증가할 수록 성능은 좋아지긴 하지만, 사실 N=10부터 성능향상은 크지 않음(하지만 N=4와 N=10의 차이는 큼). 그리고 N=10버전부터 다른 모든 모델들을 다 이겼음. GT와도 차이가 크지 않음. 

 

generalized DPM즉, $\mathcal{N}(0, I)$ 대신 $\mathcal{N}(\mu, I)$을 사용한 모델이 장점이 있을까? N의 수를 바꿔가면서 두 모델을 비교했는데 차이가 제법 크게 났음.

$\mathcal{N}(0, I)$ 모델은 높은 퀄리티의 멜을 구하기 위해서는 더 많은 N이 필요했음. 아마도 순수한 노이즈 $\mathcal{N}(0, I)$ 로부터 데이터를 복원하는 것보다는 좀 더 유사한 노이즈 $\mathcal{N}(\mu, I)$에서 복원하는 것이 더 쉽기 때문이 아닐까 생각됨. 

 

다음으로 각 모델들이 생성한 결과에서 어떤 실수들이 있는지를 측정해 보았음. 

'sonic'은 clicking 사운드나 백그라운드 노이즈 같은 것. 'mispron'은 잘못된 발음들, 'pause'는 어색한 멈춤, 'monotonic'은 monotone speech, 'robotic'은 robotic voice, 'stress'는 단어의 강세가 틀렸을 때를 나타냄. Glow-TTS가 가장 많이 강세를 틀리고 로보트 같은 소리를 만드는 것으로 나타났음. 

 

Objective evaluation

DPM은 정확한 data likelihood를 구하는 것이 아니라 이에 대한 ELBO를 구하는 것임. [Song21]에서 제안한 log-likelihood를 구하는 방법을 따라 구해보니 Glow-TTS보다 더 나은 Log-likelihood를 구할 수 있었음(Table 2). 이는 사실 재미있는 결과인데, Glow-TTS는 capacity도 3배나 더 많은 디코더를 사용하고, 정확한 data likelihood를 최적화하기 위해 훈련되기 때문임. 사실 이미지 분야에서도 비슷한 결과가 나오긴 했음[Song21].

 

Efficienty estimation

Real-Time Factor(RTF, 1초의 오디오를 생성하기 위해 몇초나 걸리는가?)를 이용하여 각 모델들의 효율성을 구했음. Table 2에서 결과를 볼 수 있는데, 아래 그림으로도 그려봤음.

만일 N이 100보다 작다면 RTF < 0.37을 기록할 수 있음. 속도면에서는 FastSpeech와 Glow-TTS가 더 빠르지만, Grad-TTS-10 모델의 경우 Tacotron2 보다는 두 배 더 빠름. 그리고 파라미터 수로도 다른 모델보다 더 작음.

 

End-to-end TTS

만일 디코더의 U-Net을 WaveGrad[Chen21]같은 보코더로 바꾼다면 오디오를 생성할 수도 있을 것임. 이러면 WaveGrad는 멜대신 aligned encoder output $\mu$를 받게 됨. 그런데 한번 해보니까 들을만한 오디오는 나왔는데 다른 모델들이랑 경쟁하기에는 좀 부족했음. 그래서 MOS테스트는 하지 않았지만 데모 페이지에서는 들을 수 있음.  

 

 

멜을 예쁘게 생성하는 것은 TTS시스템의 핵심 중 하나.
핫한 diffusion model로 멜을 생성하니 역시나 더 좋았음

 

 

  • [Ronneberger15] Ronneberger, O., Fischer, P., and Brox, T. U-Net: Convo- lutional Networks for Biomedical Image Segmentation. In Medical Image Computing and Computer-Assisted Intervention – MICCAI 2015, pp. 234–241. Springer International Publishing, 2015.
  • [Shen18] J.Shen, R.Pang, R.J.Weiss, M.Schuster, N.Jaitly, Z.Yang, Z.Chen, Y.Zhang, Y.Wang, RJ S.Ryan, R.A.Saurous, Y.Agiomyrgiannakis, Y.Wu. Natural TTS synthesis by conditioning WaveNet on mel spectrogram predictions. ICASSP 2018. [논문리뷰]
  • [Ren19] Y.Ren, Y.Ruan, X.Tan, T.Qin, S.Zhao, Z.Zhao, T.Y.Liu. FastSpeech: Fast, robust and controllable text to speech. NeurIPS 2019. [논문리뷰]
  • [Binkowski20] M.Binkowski, J.Donahue, S.Dieleman, A.Clark, E.Elsen, N.Casagrande, L.C.Cobo, K.Simonyan. High fidelity speech synthesis with adversarial networks. ICLR 2020. [논문리뷰]
  • [Kim20] J.Kim, S.Kim, J.Kong, S.Yoon. Glow-TTS: A generative flow for text-to-speech via monotonic alignment search. NeurIPS 2020 [논문리뷰]
  • [Kong20] J.Kong, J.Kim, J.Bae. HiFi-GAN: Generative adversarial networks for efficient and high fidelity speech synthesis. NeurIPS 2020. [논문리뷰]
  • [Ho20] Ho, J., Jain, A., and Abbeel, P. Denoising Diffusion Probabilistic Models. NeurIPS 2020.
  • [Chen21] N.Chen, Y.Zhang, H.Zen, R.J.Weiss, M.Norouzi, W.Chan. WaveGrad: Estimating gradients for waveform generation. ICLR 2021. [논문리뷰]
  • [Kong21] Z.Kong, W.Ping, J.Huang, K.Zhao, B.Catanzaro. DiffWave: A versatile diffusion model for audio synthesis. ICLR 2021. [논문리뷰]
  • [Song21] Song, Y., Sohl-Dickstein, J., Kingma, D. P., Kumar, A., Ermon, S., and Poole, B. Score-Based Generative Modeling through Stochastic Differential Equations. In International Conference on Learning Representations, 2021.