티스토리 뷰
Paper/TTS
[Paper 리뷰] FLY-TTS: Fast, Lightweight and High-Quality End-to-End Text-to-Speech Synthesis
feVeRin 2024. 7. 8. 09:37반응형
FLY-TTS: Fast, Lightweight and High-Quality End-to-End Text-to-Speech Synthesis
- Fast, Lightweight Text-to-Speech 모델에 대한 요구사항이 커지고 있음
- FLY-TTS
- Decoder를 Fourier spectral coefficient를 생성하는 ConvNeXt block으로 대체하고, inverse STFT를 적용하여 waveform을 합성
- Model size를 compress 하기 위해 text encoder와 flow-based model에 grouped parameter-sharing을 도입
- 추가적으로 합성 품질 향상을 위해 large pre-trained WavLM을 통해 adversarial training 함
- 논문 (INTERSPEECH 2024) : Paper Link
1. Introduction
- Text-to-Speech (TTS)는 input text를 speech waveform으로 변환하는 것을 목표로 함
- 특히 Glow-TTS, VITS, NaturalSpeech 등의 최신 TTS 모델은 합성된 음성의 naturalness를 크게 향상함
- BUT, 해당 TTS 모델들을 실적용하기에는 다음의 한계가 있음:
- Edge/mobile device에 배포하기에는 model size가 상당히 큼
- 느린 추론 속도로 인해 low-resource 환경에서 사용하기 어려움
- 일반적으로 model size가 클수록 성능이 향상되지만 trade-off가 존재함
-> 그래서 앞선 문제들을 해결할 수 있는 Fast, Lightweight, high-qualitY-TTS 모델인 FLY-TTS를 제안
- FLY-TTS
- VITS를 기반으로 뛰어난 합성 품질을 유지하면서 추론 속도와 model size를 줄이는 것을 목표로 함
- 특히 VITS의 HiFi-GAN decoder는 추론 속도에 대한 주요 bottleneck이므로 ConvNeXt block을 도입해 Fourier spectral coefficient를 생성하고, inverse STFT를 적용해 raw waveform reconstruction 속도를 향상
- Text encoder, Flow-based model에는 grouped parameter-sharing을 적용해 model size를 크게 절감
- Model compression으로 인한 합성 품질 저하를 완화하기 위해 adversarial training을 위한 discriminator로써 large pre-trained WavLM을 채택
- 이를 통해 self-supervised representation을 generator에 제공함으로써 음성 품질을 향상 가능
- VITS를 기반으로 뛰어난 합성 품질을 유지하면서 추론 속도와 model size를 줄이는 것을 목표로 함
< Overall of FLY-TTS >
- Fourier coefficient를 생성하는 ConvNeXt decoder와 grouped paramter-sharing을 활용한 경량 TTS 모델
- 결과적으로 기존 TTS 모델 수준의 합성 품질을 유지하면서 훨씬 적은 parameter 수와 빠른 추론 속도를 달성
2. Method
- FLY-TTS는 end-to-end TTS 모델인 VITS를 기반으로 구성됨
- 먼저 VITS는 input condition $c$가 주어졌을 때, target data $x$의 log-likelihood $p_{\theta}(x|c)$의 variational lower bound를 최대화하는 conditional VAE:
(Eq. 1) $\log p_{\theta}(x|c)\geq \mathbb{E}_{q_{\phi}(z|x)}\left[\log p_{\theta}(x|z)-\log \frac{q_{\phi}(z|x)}{p_{\theta}(z|c)}\right]$
- $z$ : latent variable, $p_{\theta}(z|c)$ : condition $c$가 주어졌을 때 $z$의 prior distribution
- $p_{\theta}(x|z)$ : $z$가 주어졌을 때 likelihood, $q_{\phi}(z|x)$ : 근사 posterior distribution - VITS는 각각 $q_{\phi}(z|x), p_{\theta}(z|c), p_{\theta}(x|z)$에 해당하는 posterior encoder, prior encoder, decoder로 구성되고, adversarial training을 위한 discriminator를 도입해 합성 품질을 향상함
- Prior Encoder
- Prior encoder $E_{prior}$는 input phoneme $c$를 receive 하고 prior distribution을 예측함
- 구조적으로는 input processing을 위한 text encoder와 prior distribution의 flexibility를 향상하는 normalizing flow $f_{\theta}$로 구성 - Posterior Encoder
- Posterior encoder $E_{posterior}$는 linear spectrum에서 동작하여 근사 posterior distribution의 평균/분산을 예측함
- 해당 module은 training에서만 사용되므로 추론 속도에는 영향을 주지 않음 - Decoder
- Decoder $E_{decoder}$는 latent $z$로부터 waveform을 생성함
- 일반적으로 HiFi-GAN generator로 구성됨 - Discriminator
- Discriminator $D$는 HiFi-GAN을 따라 구성됨
- Adversarial training을 위한 Multi-Period Discriminator, Multi-Scale Discriminator를 포함
- Prior Encoder
- 결과적으로 해당 VITS 구조를 기반으로 FLY-TTS는 몇 가지 수정을 통해 lightweight TTS 모델을 구축함
- 먼저 VITS는 input condition $c$가 주어졌을 때, target data $x$의 log-likelihood $p_{\theta}(x|c)$의 variational lower bound를 최대화하는 conditional VAE:
- Grouped Parameter-Sharing
- Parameter-sharing은 parameter efficiency를 향상하기 위해 사용됨
- 논문에서는 model size와 expressiveness power 간의 trade-off를 만족하기 위해 prior encoder의 text encoder와 flow-based model에 grouped parameter-sharing을 적용함
- 먼저 VITS의 original text encoder는 multi-layer transformer encoder로 구성됨
- 해당 transformer layer에는 redundancy가 존재하므로 parameter-sharing을 통해 성능을 크게 저하시키기 않으면서 model size를 줄일 수 있음
- 따라서 group parameter-sharing strategy를 적용해, 동일한 parameter를 sequential $m_{1}$ layer에 할당하는 방식으로 총 $g_{1}\times m_{1}$개의 layer 만을 사용하도록 함
- 여기서 $g_{1}$은 group 수이고, $g_{1}=1$이면 grouped parameter-sharing은 complete parameter-sharing이 됨
- 한편 flow-based model 역시 large memory footprint로 인한 문제가 존재함
- 따라서 앞선 text encoder의 grouped parameter-sharing과 마찬가지로, flow $\mathbf{f}_{1}, \mathbf{f}_{2}, ..., \mathbf{f}_{K}$의 $K=g_{2}\times m_{2}$ step을 $g_{2}$ group으로 나눔
- 이때 각 group은 $m_{2}$ flow step을 포함 - 추가적으로 PortaSpeech와 같이 affine coupling layer의 모든 module의 parameter를 share 하지 않음
- 대신 NanoFlow를 따라 WaveNet으로 구성된 projection layer의 parameter만을 share 하여 각 module 간의 parameter independence를 유지함
- 따라서 앞선 text encoder의 grouped parameter-sharing과 마찬가지로, flow $\mathbf{f}_{1}, \mathbf{f}_{2}, ..., \mathbf{f}_{K}$의 $K=g_{2}\times m_{2}$ step을 $g_{2}$ group으로 나눔
- ConvNeXt-based Decoder
- VITS decoder는 HiFi-GAN vocoder를 기반으로 transposed convolution을 통해 representation $z$로부터 waveform을 합성함
- 따라서 VITS에는 upsampling process의 time-consuming nature로 인해 추론 속도에 대한 bottleneck이 존재함
- 이를 해결하기 위해, 논문은 Vocos를 따라 ConvNeXt block을 backbone으로 하여 동일한 temporal resoultion의 Fourier time-frequency coefficient를 생성함
- 이후 inverse STFT (iSTFT)를 적용해 raw waveform을 합성하여 계산 비용을 크게 줄임 - 구조적으로 ConvNeXt module은 $7\times 7$ depthwise convolution과 2개의 $1\times 1$ pointwise convolution, GELU activation으로 구성됨
- 구체적으로 latent variable $z$가 주어지면, feature sequence $S=[s_{1}, s_{2},...,s_{T}],\,\, s_{i}\in \mathbb{R}^{D}$를 얻기 위해 sampling을 수행함
- $D$ : hidden representation dimension, $T$ : acoustic frame 수 - 이후 feature는 iSTFT의 frequency bin 수 $N$과 match 되도록 embedding layer를 통과함
- 결과적으로 ConvNeXt block의 stacked layer는 Fourier time-frequency coefficient $M=[m_{1},m_{2},...,m_{T}], P=[p_{1},p_{2},...,p_{T}]$를 생성함:
(Eq. 2) $[M,P]=\text{ConvNeXts}(\text{Embed}(S))$
- $m_{i}\in \mathbb{R}^{N}$ : complex Fourier coefficient의 amplitude, $p_{i}\in \mathbb{R}^{N}$ : phase
- 구체적으로 latent variable $z$가 주어지면, feature sequence $S=[s_{1}, s_{2},...,s_{T}],\,\, s_{i}\in \mathbb{R}^{D}$를 얻기 위해 sampling을 수행함
- iSTFT transform은 waveform $\hat{y}$를 얻기 위해 사용됨:
(Eq. 3) $\hat{y}=\text{iSTFT}(M,P)$ - 실제로 iSTFT 구현에는 Fast Fourier Transform (FFT) algorithm이 적용됨
- 이때 Fourier transform coefficient의 temporal resolution $T$는 raw waveform의 sample 수보다 훨씬 작으므로 합성 속도를 가속할 수 있음
- Pre-trained Speech Model for Adversarial Training
- VALL-E, AudioLM에서와 같이 pre-trained large speech model은 rich acoustic, semantic information을 포함하므로 고품질 합성을 지원할 수 있음
- BUT, generator에 pre-trained large speech model을 적용하면 일반적으로 상당한 computational overhead가 발생하므로 빠른 합성에는 적합하지 않음
- 따라서 FLY-TTS는 adversarial training을 위한 discriminator로써 pre-trained WavLM을 활용해 해당 문제를 회피함
- 이를 통해 generator의 model size, 추론 속도에 영향을 주지 않으면서 self-supervised model에서 학습된 rich acoustic, semantic information을 반영하여 generator를 업데이트할 수 있음 - 구조적으로 WavLM은 wav2vec2를 backbone으로 하여 convolutional feature encoder와 transformer encoder로 구성된 self-supervised model
- 이때 speech waveform은 16kHz로 resampling 된 다음, WavLM을 통해 intermediate feature를 추출함
- 이후 prediction head는 feature를 기반으로 discriminative prediction을 수행함
- Prediction head는 StyleTTS2를 따라 Leaky ReLU activation을 사용하는 convolution network로 구성됨
- 여기서 FLY-TTS는 additional adversarial loss로써 least square loss를 사용함:
(Eq. 4) $\mathcal{L}_{adv}(D_{w})=\mathbb{E}_{(y,z)}\left[(D_{w}(y)-1)^{2}+(D_{w}(\hat{y}))^{2}\right]$
(Eq. 5) $\mathcal{L}_{adv}(G)=\mathbb{E}_{z}\left[(D_{w}(\hat{y})-1)^{2}\right]$
- $D_{w}$ : WavLM discriminator, $G$ : FLY-TTS generator
- $y$ : real speech, $\hat{y}=G(z)$ : synthesis speech - 결과적으로 WavLM으로 인한 computational overhead를 완화하기 위해 WavLM의 parameter를 수정하고 prediction head만 업데이트하므로 overfitting의 위험도 줄일 수 있음
3. Experiments
- Settings
- Dataset : LJSpeech
- Comparisons : VITS, MB-iSTFT-VITS
- Results
- RTF, parameter 수 측면에서 FLY-TTS는 기존보다 훨씬 효율적임
- 합성 품질 면에서도 FLY-TTS는 VITS 수준의 성능을 달성함
- Ablation study 측면에서 ConvNeXt와 WavLM discriminator가 대체되는 경우, 성능 저하가 발생함
반응형
'Paper > TTS' 카테고리의 다른 글
댓글