티스토리 뷰

반응형

Guided-TTS: A Diffusion Model for Text-to-Speech via Classifier Guidance


  • Classifier guidance를 활용하여 target speaker의 transcript 없이 고품질의 text-to-speech를 수행할 수 있음
  • Guided-TTS
    • Classifier guidance를 위해 개별적으로 train된 phoneme classifier와 unconditional diffusion model을 결합
    • Unconditional diffusion model은 untranscribed speech data로부터 context 없이 음성을 생성하는 방법을 학습
    • Phoneme classifier를 사용하여 diffusion model의 generative process를 guide 하고 classifier guidance의 error를 줄이는 norm-based scaling을 도입
  • 논문 (ICML 2022) : Paper Link

1. Introduction

  • Text-to-Speech (TTS)는 주어진 text로부터 음성을 생성하는 것을 목표로 함
    • 일반적으로 TTS 모델은 text를 hidden representation으로 encoding 하고 encoded representation에서 음성을 생성하는 conditional generartive model임
      - 이를 위해 autoregressive 모델을 활용했지만 느린 추론 속도로 인해 non-autoregressive 방식이 도입되었음
    • 따라서 대부분의 TTS 모델은 target speaker의 transcribed data가 주어지는 경우에만 training이 가능함
      - 즉, audiobook이나 podcast 같은 untranscribed data는 기존 TTS 모델에서 활용하기 어려움
    • 한편으로 untranscribed speech를 적용하기 위해 few-shot TTS와 같은 방식이 제안되었음
      - BUT, generalization의 어려움으로 인해 Glow-TTS, Grad-TTS 같은 single-speaker TTS 모델에 비해 성능이 떨어짐

-> 그래서 target speaker에 대한 transcript 없이 고품질 TTS가 가능한 Guided-TTS를 제안

 

  • Guided-TTS
    • Unconditional DDPMclassifier guidance를 도입하여 text-to-speech 합성을 수행함
    • Untranscribed data로 학습된 unconditional diffusion model은 context 없이 mel-spectrogram을 생성함
      - 특히 untranscribed data는 text sequence와 align될 필요가 없으므로, untranscribed speech의 random chunk를 사용하여 untconditional diffusion model을 training
    • Unconditional DDPM을 guide하기 위해 large-scale speech recognition data로 학습된 phoneme classifier를 활용
      - Guided-TTS는 해당 phoneme classifier를 통해 transcript를 사용하지 않는 uncoditional DDPM이 transcript를 반영한 mel-sepctrogram을 효과적으로 생성하도록 함
      - 여기서 guiding error로 인한 mispronunciation 문제를 해결하기 위해 norm-based guidance를 도입

< Overall of Guided-TTS >

  • Unconditional diffusion model은 untranscribed speech data로부터 context 없이 음성을 생성하는 방법을 학습
  • Phoneme classifier를 사용하여 diffusion model의 generative process를 guide 하고 classifier guidance의 error를 줄이는 norm-based scaling을 도입
  • 결과적으로 기존 TTS 모델들과 비교하여 우수한 합성 품질을 달성

2. Background

- Denoising Diffusion Probablistic Models (DDPM) and Its Variant

  • DDPM은 data $X_{0}$를 $T$ timestep에 걸쳐 random noise $X_{T}$로 점진적으로 변환하는 forward process를 정의하고, pre-defined forward process의 reverse trajectory를 따라 random noise로부터 data를 생성하는 reverse process를 학습
    • 이때 discrete-time Markov process 대신 continuous stochastic differential equation (SDE)로 data와 noise 간의 trajectory를 formulate 할 수 있음
      - 대표적으로 Grad-TTS는 TTS에 이러한 SDE를 도입하여 우수한 성능을 달성함
    • Grad-TTS의 formulation을 따라, data $X_{0}$를 standard Gaussian $X_{T}$로 corrupt 하는 forward process는:
      (Eq. 1) $dX_{t}=-\frac{1}{2}X_{t}\beta_{t}dt+\sqrt{\beta_{t}}dW_{t}$
      - $\beta_{t}$ : pre-defined noise schedule, $\beta_{t}=\beta_{0}+(\beta_{T}-\beta_{0})t$
      - $W_{t}$ : Wiener process
    • 이때 noise $X_{T}$에서 $X_{0}$까지의 trajectory를 나타내는 reverse process는 다음의 SDE로 formulate 됨:
      (Eq. 2) $dX_{t}=\left( -\frac{1}{2}-\nabla_{X_{t}}\log p_{t}(X_{t})\right)\beta_{t}dt+\sqrt{\beta_{t}}d\tilde{W}_{t}$
      - $\tilde{W}_{t}$ : reverse-time Wiener process
    • Score가 주어지면, data에 대한 log density의 graident $\nabla_{X_{t}}\log p_{t}(X_{t}), \,\, t\in [0,T]$에 대해 (Eq. 2)를 solve 하여 random noise $X_{T}$에서 data $X_{0}$를 sampling 함
      - 이때 data를 생성하기 위해 DDPM은 $\theta$로 parameterize 된 neural network $s_{\theta}$를 사용하여 score를 추정하는 방법을 학습함
    • Score 추정을 위해 $X_{t}$는 다음의 data $X_{0}$가 주어졌을 때, (Eq. 1)에서 파생된 분포로부터 sampling 됨:
      (Eq. 3) $X_{t}|X_{0}\sim \mathcal{N}(\rho(X_{0},t),\lambda(t))$
      - $\rho(X_{0},t)=e^{-\frac{1}{2}\int_{0}^{t}\beta_{s}ds}X_{0}$, $\lambda(t)=I-e^{-\int_{0}^{t}\beta_{s}ds}$
      1. 여기서 score는 (Eq. 3)으로부터 유도됨:
        $\nabla_{X_{t}}\log p_{t}(X_{t}|X_{0})=-\lambda(t)^{-1}\epsilon_{t}$
        - $\epsilon_{t}$ : 주어진 $X_{0}$에서 $X_{t}$를 sampling 하는 데 사용되는 standard Gaussian noise
      2. $\forall \,\, t\in[0,T]$에 대해 모델 $s_{\theta}(X_{t},t)$를 training 하기 위해 다음의 loss가 사용됨:
        (Eq. 4) $L(\theta)=\mathbb{E}_{t}\mathbb{E}_{X_{0}}\mathbb{E}_{\epsilon_{t}}\left[ || s_{\theta}(X_{t},t)+\lambda(t)^{-1}\epsilon_{t}||_{2}^{2}\right]$
    • 모델 $s_{\theta}(X_{t},t)$를 사용하여 (Eq. 2)를 solve 함으로써 noise로부터 sample $X_{0}$를 생성할 수 있고, 이때 Grad-TTS는 $T=1$로 설정하고 fixed discretization strategy를 사용하여 $X_{T}$에서 data $X_{0}$를 생성함:
      (Eq. 5) $X_{t-\frac{1}{N}}=X_{t}+\frac{\beta_{t}}{N}\left(\frac{1}{2}X_{t}+\nabla_{X_{t}}\log p_{t}(X_{t})\right)+\sqrt{\frac{\beta_{t}}{N}}z_{t}$
      - $N$ : SDE solve를 위한 step 수, $t\in \left\{ \frac{1}{N},\frac{2}{N},...,1 \right\}$, $z_{t}$ : standarad Gaussian noise

- Classifier Guidance

  • DDPM은 classifier guidance를 통해 fine-tuning 없이 desired condition의 sample을 생성하도록 guide 할 수 있음
    • Conditional generation의 경우, classifier $p_{t}(y|X_{t})$는 noisy data $X_{t}$를 condition $y$로 classifiy 하도록 training 됨
    • Conditional generation을 위한 discretized SDE는 (Eq. 5)의 unconditional score $\nabla_{X_{t}}\log p_{t}(X_{t})$를 conditional score $\nabla_{X_{t}}\log p_{t}(X_{t}|y)$로 대체하여 얻어짐:
      (Eq. 6) $X_{t-\frac{1}{N}}=X_{t}+\frac{\beta_{t}}{N}\left(\frac{1}{2}X_{t}+\nabla_{X_{t}}\log p_{t}(X_{t}|y)\right)+\sqrt{\frac{\beta_{t}}{N}}z_{t}$
      (Eq. 7) $\nabla_{X_{t}}\log p_{t}(X_{t}|y)=\nabla_{X_{t}}\log p_{t}(X_{t})+\nabla_{X_{t}}\log p_{t}(y|X_{t})$
      - Target condition에 대한 unconditional score와 classifier gradient가 주어지면, condition이 $y$인 sample $X_{0}$는 (Eq. 6)을 사용해 생성됨
    • Classifier를 사용하여 unconditional/conditional DDPM을 guide 할 때, $s\cdot \nabla_{X_{t}}\log p_{t}(y|X_{t})$과 같이 gradient scale $s$와 classifier gradient를 곱하여 scale을 adjust 할 수 있음
      - $s>1$을 사용하면 fidelity는 높지만 less diverse 한 sample을 얻을 수 있음

3. Guided-TTS

  • Guided-TTS는 target speaker의 transcript 없이 고품질 TTS 모델을 구축하는 것을 목표로 함
    • 기존의 TTS 모델들은 text에서 음성을 생성하는 방법을 직접 학습하지만, Guided-TTS는 unconditional 음성 분포를 모델링하는 방법을 학습하고 classifier guidance를 사용하여 text에서 음성을 생성함
    • 이때 classifier guidance를 위해 untranscribed speech data에 대한 unconditional diffusion model을 training 하고, large-scale speech recognition data로 학습된 phoneme classifier를 활용함
    • Guided-TTS는 unconditional generative model을 사용하는 TTS모델로써:
      - Unconditional DDPM, Phoneme Classifier, Duration Predictor, Speaker Encoder 4가지 module로 구성됨
      - Unconditional DDPM은 unconditional 하게 mel-spectrogram을 생성하고, 나머지 3개 module은 guidance를 통해 TTS를 수행함

Overall of Guided-TTS

- Unconditional DDPM

  • Unconditional DDPM은 transcript 없이 음성 $P_{X}$의 unconditional 분포를 모델링함
    • 이를 위해 single target speaker $S$의 untranscribed speech data를 diffusion model의 training data로 사용하여 speaker $S$에 대한 TTS를 구축함
    • 이때 Guided-TTS의 diffusion model은 transcript 없이 학습되므로 training sample을 align 할 필요가 없음
      - 따라서 target speaker $S$에 대해 long-form untranscribed data를 사용하는 경우, untranscribed speech data의 random chunk를 training data로 사용함
    • Mel-spectrogram $X=X_{0}$가 주어지면,
      1. (Eq. 1)과 같이 forward process를 정의하여 점진적으로 data를 noise로 corrupt 한 다음,
      2. (Eq. 2)의 reverse process를 근사하여 각 timestep $t$에 대해 unconditional score $\nabla_{X_{t}}\log p(X_{t})$를 추정함
      3. 각 iteration에서 $X_{t}, t\in[0,1]$은 (Eq. 3)과 같이 mel-spectrogram $X_{0}$에서 sampling 되고, score는 $\theta$로 parameterize 된 neural network $s_{\theta}(X_{t},t)$를 사용하여 추정됨
        - 이때 unconditional model의 training objective는 (Eq. 4)와 같음
    • Grad-TTS와 유사하게 Guided-TTS는 mel-spectrogram을 single channel을 가지는 2D image로 취급하여 U-Net architecture를 $s_{\theta}$로써 사용

- Text-to-Speech via Classifier Guidance

  • TTS 합성을 위해 frame-wise phoneme classifier를 도입하고 classifier guidance를 적용하여 unconditional DDPM을 guide 함
    • Classifier guidance를 사용하는 TTS는 text information을 conditioning 하여 음성의 generative modeling을 decouple 함
      - 이를 통해 기존 TTS 모델 training에서는 사용하기 어려운 noisy speech recognition dataset을 phoneme classifier를 위한 training set으로 활용할 수 있음
    • Guided-TTS에서 주어진 text에 대한 mel-spectrogram을 생성하기 위해,
      1. Duration predictor는 각 text token의 duration을 output 하고 transcript $y$를 frame-level phoneme level $\hat{y}$로 expand 함
      2. 이후 standard normal 분포에서 $\hat{y}$와 동일한 length의 random noise $X_{T}$를 sampling 하고, conditional score를 사용하여 conditional sample을 생성함
      3. 이때 (Eq. 8)과 같이 우측의 두 term을 추가하여 좌측의 conditional score를 추정할 수 있음:
        (Eq. 8) $\nabla_{X_{t}}\log p(X_{t}| \hat{y},spk=S)=\nabla_{X_{t}}\log p_{\theta}(X_{t}|spk=S)+\nabla_{X_{t}}\log p_{\phi}(\hat{y}|X_{t},spk=S)$
        - 여기서 첫 번째 term은 unconditional DDPM에서 얻어지고 두 번째 term은 phoneme classifier를 사용하여 계산됨
    • 즉, Guided-TTS는 generative process에서 phoneme classifier의 gradient를 추가한 unconditional model을 사용하여 TTS 모델을 구축함
      - 이때 target speaker $S$에 대한 unconditional DDPM을 guide 하기 위해, phoneme classifier와 duration predictor는 large-scale speech recognition dataset에서 training 됨
      - 추가적으로 unseen speaker에 대한 generalization을 위해 speaker-dependent module로 설계되고, pre-trained speaker verification network를 두 module의 condition으로 사용함
  • Phoneme Classifier
    • Phoneme classifier는 input mel-spectrogram의 각 frame에 해당하는 phoneme을 recognize 하는 large-scale speech recognition dataset으로 train 된 network
      - Frame-wise phoneme classifier를 training 하기 위해 Montreal Forced Aligner (MFA)를 사용하여 transcript와 speech를 align 하고 frame-level phoneme label $\hat{y}$를 추출함
    • 이때 phoneme classifier는 (Eq. 3)에서 sampling 된 corrupted mel-spectrogram $X_{t}$를 frame-level phoneme label $\hat{y}$로 classifiy 하도록 training 됨
      - 즉, phoneme classifier의 training objective는 phoneme label $\hat{y}$와 $t\in [0,1]$에 대한 output probability 간의 cross-entropy expectation을 최소화하는 것
    • Guided-TTS는 phoneme classifier로써 WaveNet-like architecture를 채택함
      - 여기서 Grad-TTS와 동일한 방식으로 추출되는 time embedding $e_{t}$를 사용해 WaveNet의 global condition으로써 timestep $t$에서 corrupted input $X_{t}$에 대한 noise level information을 제공
      - 추가적으로 speaker-dependent classification을 위해 speaker encoder의 speaker embedding $e_{S}$를 global condition으로 사용함
  • Duration Predictor
    • Duration predictor는 주어진 text sequence $y$에 대한 각 text token의 duration을 예측하는 module
    • Phoneme classifier를 train 한 동일한 data에 대해 MFA를 사용하여 각 text token의 duration label을 추출함
      - 이때 duration predictor는 duration label과 예측 duration 사이의 $L_{2}$ loss를 최소화하도록 training 되고, 추론 시에는 추정된 duration을 round-up 함
    • Duration predictor architecture는 text encoder를 사용하는 Glow-TTS와 동일
      - 이때 speaker-dependent duration을 예측하기 위해 text embedding과 speaker embedding $e_{S}$를 concatenate 함
  • Speaker Encoder
    • Speaker encoder는 input mel-spectrogram으로부터 speaker information을 encode 하고 speaker embedding $e_{S}$를 output 함
    • 이때 각 training data에 대한 clean mel-spectrogram $X_{0}$에서 speaker embedding $e_{S}$를 추출
      - 즉, guidance를 위해서 target speaker $S$에 대한 untranscribed speech embedding을 평균하고 normalizing 하여 $e_{S}$를 추출함

- Norm-based Guidance

  • 먼저 gradient scale $s$를 사용하여 (Eq. 8)의 classifier $\nabla_{X_{t}}\log p_{\phi}(\hat{y}|X_{t}, spk=S)$에 대한 gradient를 scaling 하는 방식을 고려할 수 있음
    • BUT, 해당 방식은 frame-wise phoneme classifier를 사용하여 unconditional DDPM을 guiding 할 때 unconditional score의 norm이 $t=0$에서 sudden increase 하는 것으로 나타남
      - 즉, data $X_{0}$에 가까울수록 phoneme classifier는 DDPM의 generative process에 영향을 주지 못함
      - 결과적으로 text가 주어졌을 때 sample을 mispronouncing 하게 됨
    • 따라서 unconditional DDPM을 guide 하기 위해 frame-level phoneme label $\hat{y}$에 따라 condition 된 norm-based guidance를 도입함
      - Norm-based guidance는 score가 steeply increase 할 때 gradient의 효과가 미미해지는 것을 방지하기 위해, score의 norm에 비례하여 classifier gradient를 scaling 하는 방식
    • 이때 scaled gradient와 score norm 간의 ratio는 gradient scale $s$로 정의되고, 해당 $s$를 adjust 함으로써 classifier guidance가 unconditional DDPM에 미치는 정도를 결정할 수 있음
      - 추가적으로 DDPM을 guiding 할 때 temperature parameter $\tau$를 사용함
      - $\tau$를 1보다 큰 값으로 설정하면 고품질 mel-spectrogram을 생성하는데 도움이 됨

Norm-based Guidance

4. Experiments

- Settings

  • Dataset : LJSpeech, HiFi-TTS, Blizzard
    - Classifier training : LibriSpeech, VoxCeleb2
  • Comparisons : Glow-TTS, Grad-TTS

- Results

  • Model Comparison
    • Guided-TTS는 LibriSpeech에서 training 된 phoneme classifier를 활용하여 LJSpeech의 transcript 없이도 다른 TTS 모델들과 비슷한 성능을 보임
    • 특히 Guided-TTS는 conditional TTS 모델들과 유사한 CER을 보임
      - 이는 unconditional DDPM이 norm-based classifier guidance를 사용하여 정확한 음성을 생성할 수 있다는 것을 의미

모델 성능 비교

  • Generalization to Diverse Datasets
    • Guided-TTS는 LJSpeech, HiFi-TTS, Blizzard dataset 모두에서 우수한 성능을 보임
    • 결과적으로 Guided-TTS는 여러 dataset에 대해 Out-of-Distribution (OOD) text를 robust 하게 생성할 수 있음

다양한 Dataset에서의 성능 비교

  • Norm-based Guidance
    • 일반적인 classifier guidance와 norm-based classifier guidance를 비교해 보면
    • 기존 방식을 사용해 생성된 sample은 더 나쁜 CER을 보여 TTS에 적합하지 않은 것으로 나타남
    • 반면 norm-based classifier guidance는 text가 주어졌을 때 sample을 정확하게 생성할 수 있음

Classifier Guidance 비교

  • Amount of Data for Phoneme Classifier
    • Phoneme classifier 학습에 사용되는 LJSpeech dataset의 크기에 따른 성능을 비교해 보면
    • Phoneme classifier를 100%의 dataset으로 training 했을 때 Guided-TTS도 가장 낮은 CER을 보임
    • 결과적으로 phoneme classifier에 사용된 data가 많을수록 Guided-TTS의 pronunciation accuracy는 향상됨

Training Dataset 크기에 따른 CER 비교
Training Dataset 크기에 따른 Phoneme Classifier Accuacy 비교

 

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
Today
Yesterday