티스토리 뷰
Paper/Vocoder
[Paper 리뷰] WaveGlow: A Flow-Based Generative Network for Speech Synthesis
feVeRin 2023. 12. 25. 12:49반응형
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단계로 수행됨
- Text를 mel-spectrogram이나 F0 frequency, linguistic feature와 같은 time-aligned feature로 변환하는 모델
- 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를 학습시킴
-> 결과적으로 수렴이 복잡해지기 때문에 효과적인 배포가 어려움
- 해당 모델들은 GPU에서 500kHz 이상의 오디오를 합성할 수 있음
-> 그래서 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를 변환하는 단계
- Neural network를 생성 모델로 사용하기 위해,
- 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|$
- WaveGlow는 affine coupling layer를 활용
- $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의 변동을 설명
- Channel 간에 information mixing이 없으면 성능의 제한이 있을 수 있음
- 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 품질을 달성
- Speed of Inferenece Comparison
- Unoptimized WaveGlow는 NVIDIA V100 GPU에서 520kHz로 10초의 utterance를 합성 가능
- Parallel WaveNet의 500kHz 보다 빠른 속도를 보임
- 비교대상인 Griffin-Lim은 507kHz, WaveNet은 0.11kHz으로 실시간 보다 느린 속도로 합성이 가능
반응형
'Paper > Vocoder' 카테고리의 다른 글
댓글