티스토리 뷰

반응형

WaveFlow: A Compact Flow-based Model for Raw Audio


  • Raw audio 합성을 위해 maximum likelihood를 활용하는 generative flow model을 구성할 수 있음
  • WaveFlow
    • Dilated 2D convolution을 활용하여 1D waveform의 long-range structure를 capture 하고, expressive autoregressive function을 통해 local variation을 모델링
    • 효율적인 합성을 위해 likelihood gap을 줄임
  • 논문 (ICML 2020) : Paper Link

1. Introduction

  • 기존의 autoregressive model은 raw audio에 대해 가장 높은 likelihood score를 제공하여 high-fidelity의 auido를 생성함
    • BUT, 추론 과정에서 1D waveform sample을 sequential하게 생성하므로 매우 느린 추론 속도를 보임
    • Flow-based modelinvertible transform을 활용하여 단순한 initial density를 복잡한 density로 변환하는 generative model
    • Flow-based model은 주로 Autoregressive Flow (AF)와 Inverse Autoregressive Flow (IAF)를 활용하는 autoregressive transformation에 기반을 두고 있음
      1. AF는 parallel density evaluation과 sequential synthesis를 수행
      2. IAF도 parallel synthesis를 수행할 수 있지만, sequential density evaluation이 필요하므로 likelihood-based training을 느리게 만듦
        - 이를 해결하기 위해 Paralle WaveNet, CalriNet 등이 제안되었지만, intractable KL divergence를 근사하는 Monte Carlo method와 같은 복잡한 pipeline이 필요
    • Flow-based model의 다른 측면에서는, bipartite transformation을 활용하는 방법도 있음
      1. 대표적으로 WaveGlow가 이 방식을 통해 우수한 성능을 달성함
      2. BUT, bipartite flow는 autoregressive model 보다 더 많은 layer와 parameter 수가 요구
        - i.e.) WaveNet은 4.57M의 parameter를 가지는 반면, WaveGlow는 182.64M이 필요
      3. 추가적으로 bipartite transformation을 적용하기 전에 channel dimension에서 time-domain sample을 squeeze 하므로 temporal order information이 손상되는 문제점이 존재

-> 따라서 raw audio 합성을 위해 기존 flow-based model의 한계점을 개선한 WaveFlow를 제안

 

  • WaveFlow
    • 추가적인 density distillation이나 auxiliary loss 없이 maximum likelihood을 통해 직접적으로 학습됨
      - 1D waveform sample을 2D matrix로 squeeze하고 temporal order information을 잃지 않도록 autoregressive function을 통해 local adjacent sample을 처리
    • Raw audio에 대한 likelihood-based model의 unified view를 제공
      - Autoregressive model과 flow-based model 사이의 likelihood gap을 줄임

< Overall of WaveFlow >

  • Dilated 2D convolution을 활용하여 1D waveform의 long-range structure를 capture
  • Expressive autoregressive function을 통해 local variation을 모델링
  • 결과적으로 WaveFlow는 real-time보다 40배 빠른 합성 속도를 달성하고 고품질의 음성 합성이 가능

2. Flow-based Generative Models

  • Flow-based model은 bijection $x=f(z)$를 적용하여 isotropic Gaussian과 같은 단순한 density를 복잡한 분포 $p(x)$로 변환
    • 여기서 $x, z$은 모두 $n$-dimensional
    • 이때 $x$의 probability density는: 
      (Eq. 1) $p(x)=p(z)\left| \det \left( \frac{\partial f^{-1}(x)}{\partial x}\right)\right|$
      - $z = f^{-1}(x)$ : bijection의 inverse
      - $\det \left( \frac{\partial f^{-1}(x)}{\partial x}\right)$ : 해당 Jacobian의 determinant
    • 일반적으로 determinant를 계산하는데 $O(n^{3})$이 필요하므로, 위 식은 high-dimension에서는 적용하기 어려움
      - 대신 triangular Jacobian과 tractable determinant를 사용하는 flow-based model의 경우, Autoregressive transformation과 Bipartite transformation2가지 접근 방식을 활용할 수 있음

Density Evaluation을 위해 필요한 Flow Model의 최소 Sequential Operation 수

- Autoregressive Transformation

  • Autoregressive Flow와 Inverse Autoregressive Flow는 autoregressive transformation을 활용
    1. Autoregressive Flow (AF)는,
      • $z=f^{-1}(x;\vartheta)$를 정의함:
        (Eq. 2) $z_{t}= x_{t}\cdot \sigma(x_{<t};\vartheta)+\mu_{t}(x_{<t};\vartheta)$
        - Shifting variable $\mu_{t}(x_{<t};\vartheta)$와 Scaling variable $\sigma_{t}(x_{<t};\vartheta)$는 $\vartheta$에 의해 parameterize 되는 autoregressive architecture에 의해 모델링 됨
      • 이때 $t$-th variable $z_{t}$는 $x\leq t$에만 의존하므로 Jacobian은 triangular matrix
        - 해당 determinant는 diagonal entry의 곱으로: $\det \left( \frac{\partial f^{-1}(x)}{\partial x}\right) = \prod_{t}\sigma_{t}(x_{<t};\vartheta)$
      • $z=f^{-1}(x)$를 계산하기 위한 최소 squential operation 수는 $O(1)$이기 때문에 density $p(x)$는 (Eq. 1)을 통해 parallel evaluation 될 수 있음
        - 이때 AF는 $x=f(z)$가 autoregressive 하기 때문에 sequential synthesis를 수행해야 함: $x_{t} =\frac{z_{t}-\mu_{t}(x_{<t};\vartheta)}{\sigma_{t}(x_{<t};\vartheta)}$
    2. Inverse Autoregressive Flow (IAF)는,
      • Inverse mapping $z = f^{-1}(x)$에 autoregressive transformation을 적용함:
        (Eq. 3) $z_{t} = \frac{x_{t}-\mu_{t}(z_{<t};\vartheta)}{\sigma_{t}(z_{<t};\vartheta)}$
      • 이때 likelihood-based sampling은 density evaluation이 매우 느리지만, $x_{t} = z_{t} \cdot \sigma_{t}(z_{<t};\vartheta) + \mu_{t}(z_{<t};\vartheta)$를 통해 $x=f(z)$를 parallel sampling 할 수 있음

(a) Autoregressive Transform (b) Bipartite Transform에 대한 Jacobian

- Bipartite Transformation

  • RealNVP와 Glow는 data $x$를 2개의 group $x_{a}, x_{b}$로 partitioning 하여 bipartite transformation을 적용
    • 여기서 index는 $a \cup b = \{ 1,...,n\}$, $a \cap b = \phi$
    • Inverse mapping $z= f^{-1}(x, \theta)$는:
      (Eq. 4) $z_{a} = x_{a}, \,\,\, z_{b}=x_{b}\cdot \sigma_{b}(x_{a};\theta)+\mu_{b}(x_{a};\theta)$
      - Shifting variable $\mu_{b}(x_{a};\theta)$와 Scaling variable $\sigma_{b}(x_{a};\theta)$는 feed-forward network에 의해 모델링 됨
      - 이때 Jacobian $\frac{\partial f^{-1}(x)}{\partial x}$는 special triangular matrix
    • 정의에 따라, $x=f(z,\theta)$는:
      (Eq. 5) $x_{a}=z_{a}, \,\,\, x_{b}=\frac{z_{b}-\mu_{b}(x_{a};\theta)}{\sigma_{b}(x_{a};\theta)}$
      - $z = f^{-1}(x,\theta)$에 대한 evaluating과 $x=f(z,\theta)$ sampling은 parallel 하게 수행 가능
    • 이러한 방식을 활용한 WaveGlow는 channel dimension에서 time-domain sample을 squeeze 한 다음, partitioned channel에 bipartite transformation을 적용
      - 해당 squeeze 과정에서 temporal order information이 손실되므로 합성된 audio에는 아래 그림과 같은 constant frequency noise가 나타남

Squeezing이 적용된 WaveGlow의 Spectrogram

- Connections

  • Autoregressive transformation은 bipartite transformation보다 뛰어난 expressiveness를 가짐
    • Autoregressive transformation은 $\frac{n \times (n-1)}{2}$개의 complex non-linear dependency와 data $x$와 latent $z$ 사이에 $n$개의 linear dependency를 가짐
    • 그에 비해 bipartite transformation은 $\frac{n^{2}}{4}$개의 non-linear dependency와 $\frac{n}{2}$개의 linear dependency를 가짐
    • 따라서 autoregressive transformation $z=f^{-1}(x;\vartheta)$를 bipartite transformation $z = f^{-1}(x;\theta)$로 reduce 할 수 있음:
      1. Set $a$의 모든 index가 $b$의 index보다 먼저 rank 되도록 autoregressive order $o$를 picking 하고
      2. Shifting, scaling variable을 다음과 같이 설정:
        $\begin{pmatrix}
        \mu_{t}(x_{<t};\vartheta) \\ \sigma_{t}(x_{<t};\vartheta)
        \end{pmatrix} = \left\{\begin{matrix}
        (0,1)^{T}, &  \textrm{for} \, t\in a \\
        \left( \mu_{t}(x_{a};\theta), \sigma_{t}(x_{a};\theta) \right)^{T},& \textrm{for} \, t\in b \\
        \end{matrix}\right.$
    • 만약 less expressive building block이 주어지면, bipartite flow는 autoregressive model의 capacity에 도달하기 위해 더 많은 layer와 hidden size가 필요

3. WaveFlow

- Definition

  • 1D waveform을 $x = \{ x_{1}, ..., x_{n} \}$이라 하고, $x$를 column-major order로 $h$-row 2D matrix $X \in \mathbb{R}^{h \times w}$로 squeeze 하자
    • 이때 adjacent sample은 동일한 column 내에 존재함
    • $Z \in \mathbb{R}^{h\times w}$가 istoropic Gaussian 분포에서 sampling 된다고 할 때, $Z = f^{-1}(X;\Theta)$는:
      (Eq. 6) $Z_{i,j}=\sigma_{i,j}(X_{<i, \bullet};\Theta)\cdot X_{i,j}+\mu_{i,j}(X_{<i,\bullet};\Theta)$
      - $X_{<i,\bullet}$ : $i$-th row의 모든 element
    • 여기서, 아래 그림과 같이
      1. WaveFlow에서 $Z_{i,j}$를 계산하기 위해 squeeze된 input $X$에 대한 receptive field는 $h>2$일 때 WaveGlow의 receptive field보다 strictly large함 
      2. WaveNet은 $X$에 column-major order가 있는 Autoregressive Flow와 동일
      3. WaveFlow와 WaveGlow 모두 $Z_{i,j}$를 계산하기 위해 original $x$의 future waveform sample을 볼 수 있지만, WaveNet은 그러지 못함
  • (Eq. 6)의 shifting variable $\mu_{i,j}(X_{<i,\bullet};\Theta)$와 scaling variable $\sigma_{i,j}(X_{<i,\bullet};\Theta)$는 2D convolutional neural network로 모델링 됨
    • 정의에 따라 variable $Z_{i,j}$는 raw-major order로 current $X_{i,j}$와 previous $X_{<i,\bullet}$에만 의존하므로 Jacobian은 triangular matrix이고, determinant는 다음과 같이 구해짐:
      (Eq. 7) $\det \left( \frac{\partial f^{-1}(X)}{\partial X}\right) = \prod_{i=1}^{h}\prod_{j=1}^{w}\sigma_{i,j}(X_{<i,\bullet};\Theta)$
    • 결과적으로 (Eq. 1)의 variable formula를 변경함으로써 log-likelihood를 parallel 하게 계산하여 효율적으로 maximum likelihood training을 수행할 수 있음:
      $\log p(X) =\sum_{i,j}\left( \log \sigma_{i,j}(X_{<i,\bullet};\Theta)-\frac{Z^{2}_{i,j}}{2}-\frac{1}{2}\log (2\pi)\right)$
    • 합성 시에는 isotropic Gaussian에서 $Z$를 sampling 하고 forward mapping $X=f(Z;\Theta)$를 적용:
      (Eq. 8) $X_{i,j}=\frac{Z_{i,j}-\mu_{i,j}(X_{<i,\bullet};\Theta)}{\sigma_{i,j}(X_{<i,\bullet};\Theta)}$

      - 이는 height dimension에 대한 autoregressive를 의미하므로, 전체 $X$를 생성하려면 $h$개의 sequential step이 필요하다는 것을 의미

$Z_{i,j}$를 계산하는 Squeezed Input $X$에 대한 Receptive Field (a) WaveFlow (b) WaveGlow (c) Autoregressive Flow

- Implementation with Dilated 2D Convolution

  • Dilated 2D convolution을 사용하여 WaveFlow를 구현
    • (Eq. 6)의 Shifting $\mu_{i,j}(X_{<i,\bullet};\Theta)$와 scaling $\sigma_{i,j}(X_{<i,\bullet};\Theta)$를 모델링하기 위해 2D convolution layer stack을 활용
    • 구조적으로는 WaveNet과 유사한 architecture를 사용하여 dilated 1D convolution을 2D convolution으로 대체하고, gated-tanh non-linearity, residual connection을 도입
      - Height, width dimension에 대해서는 filter size 3을 사용
      - Width dimension에 대해 non-causal convolution을 사용하고 dilation cylce을 $[1,2,4...,2^{7}]$로 설정
      - Height dimension의 convolution은 autoregressive constraint와 관련되어 있으므로 dilation cycle은 신중하게 설계되어야 함
    • 경험적으로 합성 품질을 향상하기 위해서는,
      1. WaveNet의 dilation cycle과 비슷하게 8개 layer에 대한 dilation $d = [1,2,...,2^{s},1,2,...,2^{s},...]$로 설정
        - $s \leq 7$
      2. Height dimension에 대한 receptive field $r$은 height $h$ 보다 크거나 같아야 함
        - 그렇지 않으면 불필요한 conditional independence가 도입되어 likelihood가 낮아짐
        -> 이때 dilated convolution layer stack의 receptive field는:
        $r = (k-1)\times \sum_{i}d_{i}+1$ ($k$ : filter size, $d_{i}$ : $i$-th layer에서의 dilation)
        -> 따라서 dilation의 sum $\sum_{i}d_{i} \geq \frac{h-1}{k-1}$을 만족해야 함
        - 만약 $h$가 $2^{8} = 512$보다 크거나 같다면, dilation cycle을 $[1,2,4,..., 2^{7}]$로 설정
      3. $r$이 $h$보다 큰 경우, 작은 dilation을 가진 convolution이 더 큰 likelihood를 제공함

Dilation Cycle 별 WaveFlow의 Test Log-Likelihood

  • WaveFlow의 preferred dilation과 height는 아래 표와 같음
    • 추가적으로 intermediate hidden state를 cache 하기 위해 convolution queue를 도입하여 height dimension에 대한 autoregressive 추론 속도를 향상
    • WaveFlow는 fully autoregressive 하면서 $x$를 length 만큼 squeeze 하고 ($h=n$), filter size를 width dimension에 대해 1로 설정한 Gaussian WaveNet과 동일
    • $x$를 $h=2$로 squeeze 하고, filter size를 height dimension에서 $1$로 설정하면 WaveFlow는 bipartite flow가 되어 squeeze channel 2를 가지는 WaveGlow와 동일해짐

Height $h$, Filter Size $k$에 대한 Dilation

- Local Conditioning for Speech Synthesis

  • Neural vocoder는 linguistic feature /  mel-spectrogram / learned hidden representation에 따라 condition 되는 time-domain waveform을 합성함
    • WaveFlow는 ground-truth mel-spectrogram을 condition으로 하여 waveform을 합성
    • 이를 위해,
      1. Mel-spectrogram은 transposed 2D convolution이 있는 waveform과 동일한 length로 upsampling
      2. 이후 waveform과 align 되기 위해서 $c \times h \times w$ shape로 squeeze
        - $c$ : input channel
      3. Input channel을 residual channel에 mapping 하는 $1\times 1$ convolution을 수행하고, 각 layer에 bias term으로 추가

- Stacking Multiple Flows with Permutations on Height Dimension

  • Flow-based model은 분포 $p(X)$가 원하는 level에 도달할 때까지 transformation의 series가 필요
    • 이를 위해 $X = Z^{(n)}$이라 하고, (Eq. 6)에서 정의된 transformation $Z^{(i-1)} = f^{-1}(Z^{(i)};\Theta^{(i)})$를 $Z^{(n)}$에서 $Z^{(0)}$까지 반복적으로 적용
      - 이때 $Z^{(0)}$은 isotropic Gaussian에서 얻어짐
    • 따라서 $p(X)$는 chain rule을 통해 evaluate 될 수 있음:
      $p(X)=p(Z^{(0)})\prod_{i=1}^{n}\left| \det \left( \frac{\partial f^{-1}(Z^{(i)};\Theta^{(i)})}{\partial Z^{(i)}}\right)\right|$
    • 이때 각 transformation 이후 height dimension에 대해 각 $Z^{(i)}$를 permutating 하면, likelihood score가 크게 향상
      - 결과적으로 다양한 autoregressive order를 얻을 수 있어 합성 품질이 향상됨

4. Experiments

- Settings

  • Dataset : LJSpeech
  • Comparisons : Gaussian WaveNet, Autoregressive Flow, WaveGlow

- Results

  • Test Log-Likelihood (LL) 측면에서 비교해 보면,
    • 많은 flow를 stacking 할수록 모든 flow-based model의 LL이 향상됨
    • WaveFlow는 WaveGlow보다 더 큰 likelihood를 가짐
    • $h$를 증가시키면 WaveFlow의 likelihood도 증가하고 sequential step이 많아질수록 GPU에서의 추론 속도가 느려짐
    • WaveNet과 비교하여, WaveFlow는 더 큰 likelihood를 얻을 수 있음

Test Log-Likelihood 비교

  • 추론 속도와 MOS 측면에서의 합성 품질을 비교해 보면,
    • 소형 WaveFlow는 5.91M의 parameter 수를 가지고 real-time보다 42.06배 빠르고, 4.32 MOS의 고품질 합성이 가능
      - 대조적으로 소형 WaveGlow는 2.17 MOS를 보임
    • 대형 WaveFlow는 4.43 MOS로 동일한 크기의 WaveGlow 보다 높은 합성 품질을 보임

모델 성능 비교

  • 특히 test likelihood와 MOS 사이에는 positive correlation이 존재함
    - 결과적으로 큰 LL을 가지는 모델은 더 높은 MOS를 달성할 수 있음

Test Likelihood와 MOS 간의 관계

  • Text-to-Speech 측면에서 DeepVoice3와 결합하여 성능을 확인해 보면, 마찬가지로 WaveFlow가 WaveGlow 보다 우수한 성능을 보임

Text-to-Speech에서의 합성 품질 비교

 

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