티스토리 뷰
Paper/TTS
[Paper 리뷰] Guided-TTS: A Diffusion Model for Text-to-Speech via Classifier Guidance
feVeRin 2024. 4. 2. 10:55반응형
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 모델에 비해 성능이 떨어짐
- 일반적으로 TTS 모델은 text를 hidden representation으로 encoding 하고 encoded representation에서 음성을 생성하는 conditional generartive model임
-> 그래서 target speaker에 대한 transcript 없이 고품질 TTS가 가능한 Guided-TTS를 제안
- Guided-TTS
- Unconditional DDPM과 classifier 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를 도입
- Unconditional DDPM과 classifier guidance를 도입하여 text-to-speech 합성을 수행함
< 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}$- 여기서 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 - $\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]$
- 여기서 score는 (Eq. 3)으로부터 유도됨:
- 모델 $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
- 이때 discrete-time Markov process 대신 continuous stochastic differential equation (SDE)로 data와 noise 간의 trajectory를 formulate 할 수 있음
- 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를 수행함
- 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}$가 주어지면,
- (Eq. 1)과 같이 forward process를 정의하여 점진적으로 data를 noise로 corrupt 한 다음,
- (Eq. 2)의 reverse process를 근사하여 각 timestep $t$에 대해 unconditional score $\nabla_{X_{t}}\log p(X_{t})$를 추정함
- 각 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을 생성하기 위해,
- Duration predictor는 각 text token의 duration을 output 하고 transcript $y$를 frame-level phoneme level $\hat{y}$로 expand 함
- 이후 standard normal 분포에서 $\hat{y}$와 동일한 length의 random noise $X_{T}$를 sampling 하고, conditional score를 사용하여 conditional sample을 생성함
- 이때 (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으로 사용함
- Classifier guidance를 사용하는 TTS는 text information을 conditioning 하여 음성의 generative modeling을 decouple 함
- 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으로 사용함
- Phoneme classifier는 input mel-spectrogram의 각 frame에 해당하는 phoneme을 recognize 하는 large-scale speech recognition dataset으로 train 된 network
- 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을 생성하는데 도움이 됨
- BUT, 해당 방식은 frame-wise phoneme classifier를 사용하여 unconditional DDPM을 guiding 할 때 unconditional score의 norm이 $t=0$에서 sudden increase 하는 것으로 나타남
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 하게 생성할 수 있음
- Norm-based Guidance
- 일반적인 classifier guidance와 norm-based classifier guidance를 비교해 보면
- 기존 방식을 사용해 생성된 sample은 더 나쁜 CER을 보여 TTS에 적합하지 않은 것으로 나타남
- 반면 norm-based classifier guidance는 text가 주어졌을 때 sample을 정확하게 생성할 수 있음
- 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는 향상됨
반응형
'Paper > TTS' 카테고리의 다른 글
댓글