본문 바로가기

음성&오디오처리/Text-to-Speech

[논문리뷰] WaveNet: A generative model for raw audio

A. van den Oord, S. Dieleman, H. Zen, K. Simonyan, O. Vinyals, A. Graves, N. Kalchbrenner, A. W. Senior, and K. Kavukcuoglu, “WaveNet: A generative model for raw audio,” CoRR, vol. abs/1609.03499, 2016.

 

세줄 요약

- Wavenet은 autoregressive generative model에서 영감을 받아 만들어진 raw audio generation technique이다.

- Dilated Causal Convolution은 Wavenet에서 큰 receptive field를 가지는 autoregressive model을 만들 수 있게 해주는 기술이다.

- Wavenet은 화자 정보 혹은 linguistic feature을 conditional variable을 받아 그에 맞는 speech를 생성할 수 있다.

 

 

1. Introduction

- Wavenetimagetext 기반의 neural autoregressive generative models에서 영감을 받아 만들어진 raw audio generation technique이다.

- Wavenet 논문의 main contributions은 다음과 같다. 

(1) Wavenet은 기존 보고된 TTS 모델들보다 subjective naturalness가 훨씬 좋은 raw speech signals을 생성할 수 있음.

(2) Raw audio generation을 위해 필요한 long-range temporal dependencies를 처리하기 위해, Wavenet에는 굉장히 넒은 receptive fields를 가지는 dilated causal convolutions이란 새 구조가 적용됨.

(3) Wavenetspeaker identity에 대한 정보가 conditional variable로 들어갔을 때, 여러 가지voice를 생성해 낼 수 있음.

(4) Wavenet은 음성 생성뿐만 아니라 speech recognition, 그리고 music과 같은 다른 오디오 양식(modality)을생성하는 task에도 유용함.

 

 

2. Wavenet

Waveform $\textbf{x} = \{x_1, ..., x_T\}$의 joint probability는 다음과 같이 표현된다. 즉, 각 오디오 샘플 $x_t$는 이전 모든 샘플들에 대해 conditioned 된다.

Wavenet에서는 이전의 샘플들을 기반으로, softmax layer를 이용하여 그다음 샘플 $x_t$의 categorical distribution을 output으로 내놓게 된다. 이후 model parameter에 대해 predicted data의 Log-likelihood를 maximize 하도록 optimize 된다.

 

이렇게 자기 자신을 입력으로 하여 자기 자신을 predict 하는 모델을 통틀어 autoregressive model이라고 부른다. 대표적으로 RNN 계열 모델들이 있다.

Autoregressive model

 

2.1 Dilated Causal Convolution

Wavenet의 핵심이다...!

 

- Causal convolution

Wavenet에서는 일반적인 standard convolution이 아닌 causal convolution을 사용함으로써, prediction $p(x_{(t+1)}|x_1,...,x_t)$가 미래 샘플 $x_(t+1),...,x_T$의 영향을 받지 않도록 할 수 있다. (prediction이 미래 샘플의 영향을 받지 않아야 하는 이유는 이 모델이 autoregressive 하기 때문!) Waveform과 같은 1-D data에서는 normal convolution의 output을 timesteps shifting 하는 것으로 causal convolution을 쉽게 구현할 수 있다.

Causal Convolution vs Standard Convolution

Causal convolution은 같은 autoregressive model인 RNN과 비교하면, training시에는 Ground truth $\textbf{x}$를 알고 있기 때문에 parallel 하게 학습이 가능하다. 즉, RNN계열 모델보다 훨씬 빠른 학습이 가능하다.

 

- Dilated Convolution

Convolution block의 문제점은 receptive field를 늘리기 위해 많은 Layer, 혹은 각 convolution layer에서 큰 filter를 필요로 한다는 점이다. 이 경우 computational cost가 늘어나게 되는데, 본 모델에서는 computational cost를 크게 늘리지 않고도 receptive field를 늘릴 수 있는 dilated convolution을 사용한다.

 

Dilated convolution이란 input values 내에서 몇 step을 skipping 함으로 필터가 넓은 영역에 걸쳐 작용할 수 있도록 하는 convolution layer이다. 이를 통해 계산량을 크게 줄이면서도, 넓은 receptive field를 갖는 모델을 구현할 수 있다고 한다. 

 

2.2 Softmax Distribution

앞에서 말했듯 Wavenet에서는 softmax layer를 이용하여 샘플의 categorical distribution을 계산한다. 이때, raw audio는 보통 한 timestep에 16-bit integer value로 quantization 되어 있는데, 각 value에 대해 모든 probabilities 값을 갖는 모델을 설계하려면, softmax layer의 output size가 65,536이어야 하고 이는 사실상 설계하기 어렵다.

따라서 16bit quantization을 8bit quantization으로 줄이기 위해 μ-law companding transformation를 사용한다고 하며, 그 식은 아래와 같다. Linear 하게 quantization 하는 것보다, 위와 같이 Non-linear 한 quantization 방법이 더 효과적이라고 한다. 8bit quantization으로 audio를 바꿔주게 되면 softmax layer의 output size는 256이 된다.

$-1<x_t<1, &mu;=255$

(첨언: 최근엔 vocoder 모델이 샘플의 categorical distribution을 계산(즉, Multi-class classification task)하기보단 regression task를 수행하는 구조로 연구되고 있는 것으로 알고 있다. 따라서 16bit quantized audio를 8bit quantized audio로 바꿔줄 필요도 없고, 나도 이 논문을 제외하고는 이 수식을 본 적이 없는 것으로 기억한다. 2.2가 무슨 말인지 모르겠다면 그냥 넘어가도 괜찮지 않을까 생각한다.)

 

2.3 Gated Activation Units

본 논문에서는 gated PixellCNN 논문에서 사용한 gated activation unit을 activation function으로 사용했다. 수식은 아래와 같다.

 

(convolution operator, ⊙: element-wise multiplication operator, 𝜎: sigmoid function)

기존 activation function보다 성능이 좋다 정도로 설명이 있는데, 두 개의 activation function을 복합적으로 사용해서 그런 게 아닐까... 하는 추측이 있다.

 

2.4 Residual and Skip Connections

본 Wavenet 모델의 전반적인 구조이다. Causal convolution을 한번 거친 후 K번의 residual block을 거치며, convergence를 빠르게 하고 deep 한 모델의 학습을 위해 residual skip connection(아래 그림에서 residual)과 parameterised skip connection(아래 그림에서 skip connection)이 residual block에서 활용되었다.

 

2.5 Conditional Wavenet

wavenet은 additional input $h$가 주어졌을 때, conditional distribution $p(\textbf{x}|h)$를 다음과 같이 모델링할 수 있다.

저자는 두 가지 방법으로 이 모델을 condition 한다. 하나는 speaker embedding을 위한 global conditioning이고, 다른 하나는 (실전) TTS를 위한 Local conditioning이다. 본 논문에서 사용되는 conditioning 방식들은 요즘에는 그렇게 자주 사용되는 방식은 아닌 것 같으니, 혹시라도 수식에 관심이 있다면 논문을 참고하시길.

 

 

3. Experiment

TTS 포스팅이니만큼 TTS 관련 실험만 언급하겠다.

 

3.1 Multi Speaker Speech Generation

Global conditioning으로 speaker embedding을 주면서 학습을 진행했을 경우, 실존하진 않지만 인간 언어 같은 speech를 생성했다고 한다. 또한 하나의 Wavenet은 데이터셋 내의 모든 speaker에 대한 sample을 condition만 바꿔줌으로 만들 수 있다. 

 

3.2 Text-To-Speech

Local condition으로 텍스트 관련 정보를 주는 실험이다. 본 실험에서는 local condition으로 linguistic(언어적) feature들과 log F0을 입력하였다. (첨언: 요즘에는 기본적으로 local condition은 Mel-spectrogram을 주는 것 같다. 간간히 다른 feature들을 섞어 쓰는 것 같기도 하다.)  Evaluation은 subjective paired comparison tests와 MOS로 진행되었으며, 둘 다 기존 TTS 모델들을 뛰어넘는 성능을 보여주었다.

 

 

총평

수많은 synthesis 논문들이 인용하고 있는 딥러닝 기반 Vocoder의 클래식 그 자체. 물론 모델 구조 등은 최근 연구방향과 비교하면 많이 다르긴 하나, dilated convolution이나 global conditioning 등 본 논문이 contribution으로 제안한 아이디어들은 지금도 당연하다는 듯 사용되는 경우가 많다.

반응형