2 minute read

Abstract

  • 다양한 리듬을 합성하기 위해서 stochastic duration predictor를 제안했다.
  • variational autoencoder(VAE)와 GAN 학습 방법을 사용하였다.
  • single-stage E2E TTS 시스템으로 가장 좋은 MOS를 얻었다.

Method

Variational Inference

  • VITS는 conditional VAE로서 evidence lower bound (ELBO)를 최대화하면서 학습한다.
  • variational autoencoder(VAE)에 대한 자세한 설명은 여기를 참고해주세요.

Alignment Estimation

  • likelihood를 최대화하는 Monotonic Alignment Search를 사용했다.
  • 사람이 말하는 것처럼 speech의 리듬을 매번 다르게 하는 stochastic duration predictor를 사용했다.
  • stochastic duration predictor도 MLE(maximum likelihood estimation)로 학습하는 flow-based 생성 모델이다.
  • 근데 각 input phoneme의 duration이 정수 값이어서 직접적으로 MLE를 적용하기 어려웠다.
  • 그래서 variational dequantization과 variational data augmentation을 적용했다.

Adversarial Training

  • HiFi-GAN처럼 GAN loss와 feature matching loss를 사용했다.
  • feature matching loss는 VAE의 reconstruction loss처럼 discriminator의 hidden layers에서 측정된다.

Final Loss

VAE와 GAN training을 결합하여 다음과 같다.

image

Model Architecture

image

  • posterior encoder
  • prior encoder
  • decoder
  • discriminator
  • stochastic duration predictor

posterior encoder와 discriminator는 학습에서만 사용한다.

Posterior encoder

  • WaveGlow와 Glow-TTS에서 사용한 non-causal WaveNet residual blocks을 사용한다.
  • dilated convolutions layer로 구성
  • layer들 맨 위에 linear layer가 normal posterior distribution의 평균과 분산을 생성한다.

Prior encoder

  • text encoder로 구성되어있다.
  • relative positional representation을 사용하는 transformer encoder
  • block 맨 위에 linear layer가 prior distribution의 평균과 분산을 생성한다.
  • normalizing flow는 affine coupling layers들이 쌓여있는 것이고, 그것은 WaveNet residual blocks으로 구성되어있다.

Decoder

  • HiFi-GAN V1 generator를 사용했다.
  • multi-speaker인 경우, speaker embedding에 Conv1d 통과시키고 input latent variables z 에 더한다.

Discriminator

  • HiFi-GAN에서 제안한 multi-period discriminator를 사용했다.

Stochastic duration predictor

  • conditional input 으로 부터 phoneme duration의 분포를 추정한다.
  • dilated된 residual blocks과 depth-separable convolutional layers를 쌓는다.
  • invertible nonlinear transformations으로 구성되어있는 neural spline flows를 적용한다.
  • neural spline flows는 유사한 많은 파라미터들의 표현력을 증가시킨다.
  • multi-speaker인 경우, speaker embedding에 Conv1d 통과시키고 input에 더한다.

Experiments

Datasets

  • LJ Speech, VCTK 데이터셋 사용.

Preprocessing

  • posterior encoder의 input으로 linear spectrogram을 사용했다.
  • FFT size, window size : 1024
  • hop size : 256
  • reconstruction loss로 사용할 mel-spectrogram에서 80 bands mel-scale을 사용했다.
  • 각각의 token 사이에 blank token을 추가했다.

Training

  • 학습동안 메모리 사용과 학습 시간을 줄이기 위해서 waveform의 일부분만 생성하는 windowed generator training을 적용하였다. 즉, decoder에게 전체 latent representations을 전달하는 것이 아니라 랜덤하게 window size 32로 latent representations의 segment를 추출하여 전달하였다.
  • batch size는 GPU당 64
  • 4 NVIDIA V100 GPUs로 mixed precision training 적용.
  • 800k steps까지 학습 진행.

Experimental Setup for Comparison

  • HiFi-GAN을 Glow-TTS로 fine-tuning한 것보다 Tacotron 2로 fine-tuning한 것이 Tacotron 2, Glow-TTS 둘 다에게 좋았다.
  • 랜덤성을 컨트롤하기 위해서 하이퍼파라미터를 고정했다.

Results

Speech Synthesis Quality

image

  • stochastic duration predictor가 deterministic duration predictor(DDP)보다 현실적인 phoneme duration을 생성한다.
  • 유사한 duration predictor architecture를 사용해도 1-stage end-to-end training이 효과적이다.

image

  • prior encoder에서 normalizing flow를 제거했을 때, 1.52 MOS가 떨어졌다.
  • posterior input으로 linear-scale spectrogram을 mel-spectrogram으로 대체했을 때, 0.19 MOS가 떨어졌다. 즉, high resolution information가 효과적이다.

Generalization to Multi-Speaker Text-to-Speech

image

  • 우리 모델이 다양한 speech characteristics를 배운다.

Speech Variation

image

  • 모든 sample은 “How much variation is there?” 이다.
  • Figure 2a는 model이 100번 생성한 발화의 길이 histogram이다.
  • Glow-TTS는 deterministic duration predictor 때문에 항상 고정된 길이의 발화를 생성한다.
  • Figure 2b는 model이 speaker에 독립적인 phoneme duration을 배우는 것을 알 수 있다.

image

  • 다양한 pitches와 rhythms을 생성한다.

Synthesis Speed

image

  • batch size 1, single NVIDIA V100 GPU로 100개의 문장을 생성하는 시간을 측정해보았다.

Conclusion

  • stochastic duration predictor가 다양한 리듬을 표현할 수 있다.
  • 텍스트로부터 한번에 speech를 생성할 수 있다.
  • two-stage TTS system을 능가하고, 인간의 퀄리티와 유사한 결과를 얻었다.

Tags:

Categories:

Updated:

Leave a comment