티스토리 뷰

반응형

WaveGlow: A Flow-Based Generative Network for Speech Synthesis


  • Flow-based network는 autoregression 없이 mel-spectrogram에서 고품질 음성을 합성할 수 있음
  • WaveGlow
    • 고품질 음성 합성을 위해 Glow와 WaveNet의 아이디어를 활용
    • Training data의 likelihood를 최대화하여 training 단계를 간단하고 안정적으로 만듦
  • 논문 (ICASSP 2019) : Paper Link

1. Introduction

  • 효율적이고 고품질의 음성 합성에 대한 요구사항은 점차 증대되고 있음
    • 음성 품질, latency에 대한 작은 변화도 customer experience와 preference에 큰 영향을 미치기 때문
    • BUT, 고품질 실시간 음성 합성은 여전히 어려움
      - Strong long term depedency를 갖는 높은 차원의 sample을 생성해야 하기 때문
      - Audio sample의 통계적 불완전성에 민감하기 때문
    • 속도, 연산량 제약은 음성 품질뿐만 아니라 실시간 합성도 어렵게 함
      - Sampling rate가 16kHz 미만인 경우 품질이 크게 떨어지지만, 실생활 적용을 위해서는 16kHz 보다 빠른 합성 속도를 요구함
  • Text-to-Speech (TTS)는 일반적으로 2단계로 수행됨
    1. Text를 mel-spectrogram이나 F0 frequency, linguistic feature와 같은 time-aligned feature로 변환하는 모델
    2. Time-aligned feature를 audio sample로 변환하는 vocoder
      • Vocoder는 TTS 작업에서 가장 계산이 까다롭고 음성 품질에 큰 영향을 미침
      • 일반적인 neural vocoder는 long term dependency를 모델링하기 위해 autoregressive approach를 활용
        - 구현, 학습이 비교적으로 간단하다는 장점
        - GPU, TPU와 같은 병렬 프로세서를 효과적으로 활용할 수 없다는 단점
  • Autoregressive model 대신 Parallel WaveNet, ClariNet, MCNN 등을 활용할 수 있음
    • 해당 모델들은 GPU에서 500kHz 이상의 오디오를 합성할 수 있음
      - BUT, 품질 향상과 mode collapse 문제를 해결하기 위해 compound loss function이 필요함
    • 특히 Parallel WaveNet과 ClariNet은 student/teacher network를 활용함
      - Student network는 Inverse Autoregressive Flow (IAF)에 기반을 두고 있음
      - IAF network는 추론 과정에서 병렬 실행이 가능하지만, flow의 autoregressive 특성으로 인해 비효율적임
      - 이를 위해 해당 모델들은 teacher network를 사용해 student network를 학습시킴
      -> 결과적으로 수렴이 복잡해지기 때문에 효과적인 배포가 어려움

-> 그래서 autoregressive 방식을 사용하지 않고 고품질의 음성을 합성할 수 있는 flow-based network인 WaveGlow를 제안

 

  • WaveGlow
    • Mel-spectrogram에서 고품질 음성을 합성하는 flow-based network
    • Glow와 WaveNet의 아이디어를 결합한 방식
    • Likelihood loss function를 통해 학습된 single network만을 활용

 

< Overall of WaveGlow >

  • Glow와 WaveNet을 결합하여 autoregressive 접근을 활용하지 않는 flow-based network를 구성 
  • 단순한 구조에도 불구하고 WaveNet 보다 우수한 합성 품질과 25배 빠른 음성 합성 속도 달성

2. WaveGlow

  • WaveGlow는 분포로부터 sampling을 통해 audio를 생성하는 생성 모델
    • Neural network를 생성 모델로 사용하기 위해,
      - 단순 분포(평균 0을 가지는 spherical Gaussian)에서 sample을 가져오고, 해당 sample을 layer에 입력해 단순 분포를 원하는 분포로 변환함
      - Mel-spectrogram에 대해 condition 된 audio sample의 분포를 모델링하면:
      $z \sim \mathcal{N} (z;0, I)$
      $x=f_{0} \circ f_{1} \circ ... f_{k}(z)$
    • 이때 data의 negative log likelihood를 최소화하여 모델을 학습시키려면, flow-based model을 활용해야 함
      - 임의의 neural network는 intractable 하지만, flow-based network는 neural network mapping이 invertible 하기 때문
      - 각 layer를 bijective 하다고 제한함으로써 likelihood를 계산할 수 있음:
      $log \, p_{\theta} (x) = log \, p_{\theta} (z) + \sum^{k}_{i=1} log | det (J(f^{-1}_{i}(x)))|$
      $z = f^{-1}_{k} \circ f^{-1}_{k-1} \circ ... f^{-1}_{0} (x)$
    • 위 식에서 첫 번째 항은 spherical Gaussian의 log-likelihood로 변환된 sample의 L2 norm에 penalty를 주고, 두 번째 항은 variable change로부터 발생함
      - 두 번째 항의 Jacobian $J$에 대한 log-determinant는 forward pass 과정에서 space의 volume을 증가시키는 모든 layer에 reward를 제공하고, layer가 0을 곱하여 L2 norm을 최적화하는 것을 방지함
      -> 이러한 변환 sequence를 normalizing flow라고 부름
    • WaveGlow는 Glow와 유사한 구조를 활용함
      - Squeeze : 8개의 audio sample group을 vector로 사용해 forward pass를 수행하는 단계
      - Flow : invertible $1 \times 1$ convolution, affine coupling layer를 활용해 vector를 변환하는 단계

WaveGlow의 구조

- Affine Coupling Layer

  • Invertible neural network는 일반적으로 coupling layer를 통해 구성됨
    • WaveGlow는 affine coupling layer를 활용
      - Channel의 절반은 input으로 사용되어 나머지 channel을 scale 하는 데 사용되는 곱셈, 덧셈 항을 생성
      $x_{a}, x_{b} = split(x)$
      $(log \, s,t) = WN(x_{a}, mel-spectrogram)$
      $x_{b'} = s \odot x_{b} + t$
      $f^{-1}_{coupling} (x) = concat(x_{a}, x_{b'})$
    • $WN()$은 임의의 변환으로, invertible 하지 않더라도 coupling layer는 전체 network에 대한 invertibility를 유지함
      - $WN()$의 input으로 사용된 channel ($x_{a}$)이 layer의 output으로 바뀌어서 전달되지 않기 때문
      - 결과적으로 network inverting시, output $x_{a}$에서 $s,t$를 계산한 다음, $WN(x_{a}, mel-spectrogram)$을 계산하여 $x_{b'}$를 $x_{b}$로 inverting 할 수 있음
    • WaveGlow에서 $WN()$은 gated tanh를 포함한 dilated convolution layer와 residual connection을 사용
      - WaveNet, Parallel WaveNet과 유사하지만 3개의 tap을 가지고 non-casual 함
    • 추가적으로 Affine coupling layer는 input에 대해 생성된 결과를 condition 하기 위해 mel-spectrogram을 포함함
      - 이때, upsampled mel-spectrogram은 각 layer의 gated-tanh 앞에 추가됨
    • Affine coupling layer에서, $s$ 항은 mapping의 volume을 변경하고 variable 항에 대한 변화를 loss에 반영함
      - 해당 항은 non-inveritble affine mapping에 대해 모델에 penalty를 주는 역할을 수행:
      $log | det (J (f ^{-1}_{coupling} (x)))| = log |s|$

- $1 \times 1$ Invertible Convolution

  • Affine coupling layer에서 각 절반의 channel은 서로 직접적으로 수정되지 않음
    • Channel 간에 information mixing이 없으면 성능의 제한이 있을 수 있음
      - 각 affine coupling layer 앞에 $1 \times 1$ invertible convolution을 추가하여 channel에 대한 information mixing을 반영
      - 이때, 해당 convolution의 weight $W$는 orthogonal 하므로 invertible 함
    • 해당 변환에 대한 Jacobian의 log-determinant는 variable 변화에 대한 loss로 반영되고, network 학습 과정에서 invertible 함을 유지하는 역할을 수행:
      $f^{-1}_{conv} = Wx$
      $log | det (J(^{-1}_{conv}(x))) | = log |det W|$
    • Coupling layer의 모든 항들을 추가한 최종 log-likelihood는:
      $log \, p_{\theta}(x) = - \frac{z(x)^{T}z(x)} {2\sigma^{2}} + \sum^{\# coupling}_{j=0} log \, s_{j} (x, mel-spectrogram) + \sum^{\# conv}_{k=0} log \, det |W_{k}|$
      - 첫째항은 spherical Gaussian의 log-likelihood, $\sigma^{2}$는 Gaussian 분포의 분산, 나머지항은 variable의 변동을 설명

- Early Outputs

  • 모든 channel이 모든 layer를 통과하는 것보다 4개의 coupling layer 마다 2개의 channel을 loss function으로 출력하는 것이 유용함
    • Network의 모든 layer를 통과한 최종 vector는 이전 output channel들과 concat 되어 최종적인 $z$를 생성
    • Early output은 network가 여러 time scale로 정보를 추가하기 쉽게 만들고, skip connection과 마찬가지로 gardient가 이전 layer로 잘 propagate 되도록 함

- Inference

  • 추론은 학습된 network를 통해 Gaussian에서 $z$값을 무작위로 sampling 하는 과정
    • 학습 과정에서 가정한 것보다 표준편차가 낮은 Gaussian에서 $zs$를 sampling 하면 audio 품질이 향상될 수 있음
    • 학습에서는 $\sigma = \sqrt{0.5}$를 사용하고, 추론에서는 0.6 표준편차에서 sampling을 수행
    • 이때 $1 \times 1$ convolution을 inverting 하는 것은 weight matrix의 invert를 계산하는 것과 동일하고, mel-spectrogram도 추론과정에서 coupling layer에 포함됨
      - 결과적으로 affine 변환이 invert 되므로 loss에 의해 그 역이 보장됨:
      $x_{a} = \frac {x_{a'}-t} {s}$

3. Experiments

- Settings

  • Dataset : LJSpeech
  • Comparisons : Griffin-Lim, WaveNet

- Audio Quality Comparison

  • WaveGlow가 가장 높은 MOS 품질을 달성

MOS 비교 결과

- Speed of Inferenece Comparison

  • Unoptimized WaveGlow는 NVIDIA V100 GPU에서 520kHz로 10초의 utterance를 합성 가능
    • Parallel WaveNet의 500kHz 보다 빠른 속도를 보임
    • 비교대상인 Griffin-Lim은 507kHz, WaveNet은 0.11kHz으로 실시간 보다 느린 속도로 합성이 가능

 

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