티스토리 뷰

반응형

Flow-TTS: A Non-Autoregressive Network for Text to Speech Based on Flow


  • Non-autoregressive Text-to-Speech를 위해 generative flow를 활용할 수 있음
  • Flow-TTS
    • Single feed-forward network 만을 사용하여 고품질의 음성을 합성
    • Spectrum 생성을 위해 flow를 활용하고 single network를 통해 alignment와 spectrogram 생성을 jointly learn
  • 논문 (ICASSP 2020) : Paper Link

1. Introduction

  • Text-to-Speech (TTS)는 input text sequence $\{ x_{1}, x_{2}, ..., x_{N}\}$로부터 output acoustic sequence $\{ y_{1}, y_{2}, ..., y_{T}\}$를 생성함
    • Concatenative TTS와 statistical TTS는 pipeline이 복잡하고 부자연스러운 음성을 생성하는 단점이 있음
    • End-to-End TTS는 이러한 한계를 극복할 수 있고, 두 부분으로 구성
      1. Normalized text symbol을 mel-spectrogram과 같은 time-aligned feature로 변환하는 spectrogram generation network
      2. Time-aligned feature를 audio로 변환하는 vocoder
    • 논문에서는 spectrogram generation network 구성에 집중하고 vocoder로써는 WaveGlow를 채택 
  • 이때 spectrogram generation network는 아래와 같이 2가지 범주로 분류할 수 있음
    1. Autoregressive model
      - 높은 음성 품질을 달성할 수 있지만, 느린 decoding 속도를 가짐
      - Teacher forcing technique을 활용하여 학습 과정을 개선할 수 있지만, 예측 분포와 실제 data 분포 간의 mismatch가 발생할 수 있음
    2. Non-autoregressive model
      - Autoregressive model에 비해서는 추론 속도를 크게 개선할 수 있지만, text sequence와 spectrogram sequence 사이의 alignment를 학습하는 것이 어려움
      - 결과적으로 well-trained autoregressive teacher를 통한 guide가 필요하기 때문에 학습 과정이 복잡해짐

-> 그래서 non-autoregressive TTS의 한계를 극복하기 위해 generative flow를 활용한 Flow-TTS를 제안

 

  • Flow-TTS
    • Generative flow (Glow)를 활용하여 효율적인 density 추정과 sampling을 지원
    • Teacher model에 기반한 parameter distillation을 사용하지 않고 single feed-forward network만을 활용
    • Single feed-forward network를 통해 alignment, spectrogram generation을 jointly learning

< Overall of Flow-TTS >

  • Generative flow를 TTS에 활용하는 최초의 시도
  • Single feed-forward network를 통해 alignment와 spectrogram generation을 jointly learn
  • 결과적으로 기존 autoregressive model 보다 우수한 합성 품질을 달성

End-to-End TTS Model의 종류

2. Flow-Baed Generative Model

  • Flow-based generative model은 invertible transform의 sequence를 적용하여 Guassian 분포와 같은 단순한 probability density를 복잡한 density로 변환하는 것
    • Random variable $\mathbf{z}$와 known probability density function $\mathbf{z} \sim \pi(\mathbf{z})$가 주어졌을 때,
      - Flow-based generative model은 transformation function의 sequence $f=f_{1} \circ f_{2} \circ ... \circ f_{L}$을 사용하여 $\mathbf{z}$를 새로운 random variable $\mathbf{y}$에 mapping
      - 이때 $\mathbf{y}$는 동일한 dimension을 가지고, 각 $f_{i}$는 invertible 함
    • 여기서 $\mathbf{y}$의 probability density function은 variable transformation을 통해 계산됨:
      (Eq. 1) $\log p_{Y}(\mathbf{y}) = \log \pi(\mathbf{z})+\sum_{i=1}^{L} \log \left| \det \frac{\partial f_{i}}{\partial f_{i-1}} \right|$
      - $\det \frac{\partial f_{i}}{\partial f_{i-1}}$ : $f_{i}$의 Jacobian determinant
    • 이때 효율적인 계산을 위해 flow-based generative model은 triangular matrix를 Jacobian transformation으로 사용하고, $\pi(\mathbf{z})$로써 isotropic Gaussian을 사용
      - 이를 통해 flow-based generative model은 (Eq. 1)을 최대화함으로써 high-dimensional data를 모델링

3. Flow-TTS

  • Flow-TTS는 generative flow (Glow)를 기반으로 함
    - 전체 architecture는 Encoder, Decoder, Length predictor, Positional attention layer로 구성

Overall of Flow-TTS

- Encoder

  • Encoder는 text symbol을 trainable embedding으로 변환한 다음, convolution block을 적용
    • 각 convolution block은 1D convolution layer, ReLU activation, Batch Normalization, Dropout으로 구성됨
    • 추가적으로 long-range textual inforamtion을 추출하기 위해 encoder 끝에 LSTM layer가 사용
      - Text length는 output spectrogram length 보다 훨씬 짧으므로 LSTM은 추론 속도에는 영향을 미치지 않으면서 model의 수렴성을 크게 개선할 수 있음

- Length Predictor

  • Length predictor는 output spectrogram sequence의 length를 예측하는 데 사용됨
    • Autoregressive model은 special stop token을 사용하여 length를 예측할 수 있지만, Flow-TTS는 output frame을 병렬로 예측하기 때문에 sequence length를 미리 예측해야 함
    • 구조적으로는 2-layer 1D convolution network로 구성되고 각 network는 Layer Normalization, Dropout을 포함
    • 추가적으로 length predictor의 끝에는 accumulated layer가 사용되어 모든 symbol duration을 final length까지 accumulate 함
      - Length predictor는 encoder 다음에 위치하여 안정적인 학습을 위해 logarithmic doamin에서 length를 예측

- Positional Attention

  • Positional attention은 input text sequence와 output spectrogram sequence 간의 alignment를 학습
    • 이를 위해 multi-head dot-product attention mechanism을 적용
      - Encoder의 output hidden state를 key, value로, spectrogram length의 positional encoding을 query로 사용
    • 학습 과정에서 spectrogram length는 ground-truth spectrogram으로부터 얻어지고 추론 시에는 length predictor에 의해 예측됨

- Decoder

  • Decoder는 multi-scale architecture와 일련의 flow step들로 구성된 Glow architecture를 활용
    • flow step은 2개의 invertible transformation layer, invertible $1 \times 1$ convolution, affine coupling layer로 구성
    • Positional attention layer에서 생성된 condition을 flow에 공급하는 coupling block을 활용
      - 이러한 squeeze operation을 위해 8의 group size를 사용하여 spectrogram을 grouping 함
  • Affine Coupling Layer
    • Affine coupling layer는 forward/reverse가 모두 계산 효율적이고 log-determinant를 가지는 invertible transformation으로:
      (Eq. 2) $\mathbf{z}_{a}, \mathbf{z}_{b} = split(\mathbf{z})$
      (Eq. 3) $(\log \mathbf{s},\mathbf{t}) = NN(\mathbf{z}_{b})$
      (Eq. 4) $\mathbf{s}=\exp(\log \mathbf{s})$
      (Eq. 5) $\mathbf{y}_{a} = \mathbf{s}\cdot \mathbf{z}_{a}+\mathbf{t}$
      (Eq. 6) $\mathbf{y}_{b} = \mathbf{z}_{b}$
      (Eq. 7) $\mathbf{y} = concat(\mathbf{y}_{a}, \mathbf{y}_{b})$
      - $split()$ : input tensor를 절반으로 split, $concat()$ : output tensor concatenation
      - $NN()$ : non-linear transformation
  • Invertible $1\times 1$ Convolutional Layer
    • Channel ordering을 permute 하기 위해 $1\times 1$ invertible convolution layer가 affine coupling layer 앞에 적용됨
    • 이때 weight matrix를 log-determinant가 0인 random orthogonal matrix로 initialize
  • Multi-Scale Architecture
    • Multi-scale architecture는 deep flow step을 학습하는데 유용
      - Flow-TTS는 4 step flow를 활용
    • 각 scale 후에 tensor의 일부 channel이 flow step에서 drop 되고, 모든 flow step이 지난 다음 한 번에 concatenate 됨
  • Coupling Block
    • Coupling block은 $NN()$ transformation의 역할을 수행
    • Coupling block은 kernel size 1의 1D convolution layer와 Gated Tanh Unit (GTU) layer로 구성됨:
      (Eq. 8) $\mathbf{z} = \tanh (\mathbf{W}_{f,k}*\mathbf{y}) \odot \sigma(\mathbf{W}_{g,k}*\mathbf{c})$
      - $k$ : layer index, $f$ : filter, $g$ : gate, $c$ : attention context vector
      - $\mathbf{W}$ : 1D convolution layer
    • Deep network 구성을 위해 GTU layer에는 residual connection이 사용됨
      - 이후 channel size를 맞추기 위해 kernel size가 1인 1D convolution layer가 끝에 추가됨
      - 마지막 convolution layer의 weigh는 0으로 initialize 되어 각 affine coupling layer가 초기에 identity function으로 동작하도록 함

3. Experiments

- Settings

  • Dataset : LJSpeech
  • Comparisons : FastSpeech, Tacotron2

- Results

  • MOS 측면에서 합성 품질을 비교해 보면, Flow-TTS가 가장 우수한 성능을 보이는 것으로 나타남

합성 품질 비교

  • Mel-Cepstral Distortion (MCD) 측면에서 정량적인 평가를 수행해 보면, 마찬가지로 Flow-TTS가 가장 우수한 성능을 기록

MCD 비교 결과

  • 합성된 mel-spectrogram을 ground-truth와 비교해 보면Flow-TTS로 합성된 음성의 prosody는 ground-truth와 유사하게 나타남

Mel-spectrogram 비교

  • F0 trajectory 측면에서도 Flow-TTS는 ground-truth와 가장 비슷한 결과를 보임

F0 trajectory 비교

  • 추론 속도 측면에서 Flow-TTS의 latency는 0.021초인 반면 Tacotron2는 0.483초로, 23배의 가속 효과를 얻을 수 있음
    - FastSpeech의 0.025초와 비교했을 때도 Flow-TTS가 근소하게 더 우수한 추론 속도를 보임

 

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
«   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