-
WaveNet: A Generative Model for Raw Audio 리뷰논문 리뷰 2021. 10. 13. 19:24
들어가며
WaveNet은 Neural Vocoder 에서 중요한 역할을 하는 논문이다. 많은 뉴럴 보코더들이 WaveNet 기반으로 만들어졌으며, WaveNet의 단점(Generation 속도, 병렬 처리 등)을 개선하기 위해 여러 후속 논문들이 작성되었다.
앞으로 WaveNet, Glow, WaveGlow 3부작으로 논문을 리뷰할 계획
오늘은 그 첫번째 논문인 WaveNet 에 대해서 살펴보자
2021.10.13 - [논문 리뷰] - Glow: Generative Flow with Invertible 1x1 Convolutions 리뷰
Glow: Generative Flow with Invertible 1x1 Convolutions 리뷰
들어가며 오늘은 WaveNet-Glow-WaveGlow 3부작의 두번째 주제가 될 Glow 에 대한 글이다 2021.10.13 - [논문 리뷰] - WaveNet: A Generative Model for Raw Audio 리뷰 2021.10.13 - [논문 리뷰] - WaveGlow: A Fl..
artificial-intelligent.tistory.com
WaveNet은 raw audio 를 만들어내는 auto-regressive 생성 모델이다. (auto-regressive 라는 말은, 모델이 만들어낸 아웃풋이 다시 모델의 input으로 들어가서 순차적으로 생성되는 것을 의미한다. Sequence-to-sequence 모델이 auto-regressive 의 예이다) 이를 수식으로 표현한다면, 조건부 확률의 곱으로 표현할 수 있다.
식 1 audio sample distribution DNN에서는 이러한 확률을 Convolutional Layer 을 쌓아서 모델링 할 수 있다.
그림1. Visualization of a stack of causal convolutional layers. 그림 1은 causal convolution 을 나타내고 있다. t+1 시점의 sample 을 생성해내기 위하여 t 시점 이하의 sample 을 input 으로 넣어야 하기 때문에 causal convolution 의 사용은 당연하다. 음성과 같은 1차원의 데이터에선 causal convolution을 단순히 일반적인 convolution 연산에 output을 몇 time stamp 정도 shifting 을 해주면 된다. (이미지와 같은 2d 이상의 causal convolution에선 masking 을 해줘야 함) 이런 방법으로 sample 을 만드려면 1 sample 을 만들기 위해서 매우 많은 레이어가 필요하다. 그림 1을 보면, 마지막 output에 관여하는 input의 time stamp 는 5 (#layers + filter length -1) 밖에 되지 않는다. 이 간격을 receptive field 라고 하는데, 이 길이가 길수록 sample 을 추출하는데 더 긴 시간의 정보를 활용하기 때문에 더 정확한 sampling 을 할 수 있다.
이러한 문제를 해결하기 위해 dilated convolution 을 이용했다. dilated convolution 은 convolution 의 filter 에 간격이 있는 convolution 이다.
그림2. Visualization of a stack of dilated causal convolutional layers 그림 2는 dilated 된 causal convolution 을 이용하여 3개의 hidden layer network 로 sampling 하는 그림이다. 그림 1과 비교했을때 상당히 넓어진 receptive field 를 확인할 수 있다. WaveNet 논문에서는 dilation을 layer 을 올라갈때마다 2배씩 커지게 하지만, 512 까지 도달하면 다음 dilation을 다시 1로 해준다고 한다.
논문의 저자는 $ p(x_t|x_1,...,x_{t-1}) $ 의 분포를 모델링 하는데 있어 mixture model 같은것 보다 softmax distribution 이 더 좋은 결과를 보인다고 하였고, 이 softmax로 categorical distribution 은 더 유연하고, 임의의 분포를 모델링하기 더 쉽다는 장점이 있다고 한다. 일반적으로 음성 데이터는 1 time stamp에 16비트 정수 값을 가진다. 그러면, softmax 는 65536 중의 1개의 값을 출력해야하는데, 이는 매우 계산 집약적이기 때문에 $ \mu $-law 인코딩을 하여 256 개의 값 중에 1개 값을 출력할 수 있게 만들었다.
WaveNet 은 PixelCNN 의 audio 버전인 만큼 pixelCNN에서 사용한 같은 gated activation function을 사용했다.
식 2. gated activation function * 기호는 convolution 연산을, ⊙ 기호는 element-wize multiplication 을, σ(·) 은 sigmoid 함수를 의미한다.
그림3. Overview of the residual block and the entire architecture 그림3은 WaveNet의 block 의 모습을 보여준다. 앞에 설명한 causal conv, dilated conv, gated activation unit 등이 잘 설명되는 그림이다. 이런 연산들이 네트워크 상에서 residual, skip-connection 으로 연결되어있다.
이상의 설명은 WaveNet으로 한 sample 이 input 으로 들어갔을때, 계속해서 어떤 output 이 생성되는 autoregressive model 을 설명했다. 하지만, 이 설명 만으로는 WaveNet을 잘 써먹을 수 없다. 자신이 원하는 형태로 변형을 하지 못하기 때문에 최초의 input 에만 종속된 output들이 계속 생성되기 때문이다. 그래서 나온것이 Conditonal WaveNet 이다. 이 conditional WaveNet 이 있기 때문에 WaveNet 을 Vocoder 로 사용할 수 있는 것이다.
WaveNet에서 추가적인 input h 를 넣을 수 있다. 그렇게 되면, 이전에 설명했던 distribution $ p(x) $ 가 conditional distribution $ P(x|h) $ 가 된다.
식 3. conditional audio sample distribution 위의 식 1 에 condition h 가 들어가면, 다음과 같이 정의 된다.
WaveNet에 condition h 를 Global condition, Local condition 2가지 방식으로 적용할 수 있다. Global condition은 Speaker Embedding과 같이 전 time 영역에 대해 동일한 특성을 나타날 때 Global condition 을 적용한다. 이를 식 2에 적용한 식은 다음과 같다.
식 4. global condition 적용한 식 local condition은 linguistic feature (e. g. mel-spectrogram) 과 같이 특정 time series 에 적용된다. 이를 WaveNet에서는 convolution filter 에 convolution 연산을 통하여 적용하고, 이를 식 2에 적용한 식은 다음과 같다.
식 5. local condition 적용한 식 식 4에서 $ V^T_{g,k} $ 는 learnable linear projection 이었는데, 식 5에선 $ V_{g,k}*y $ 는 convolution 연산이다.
WaveNet Vocoder은 이전 방식의 Vocoder 보다 더 좋은 결과를 보였다.
표 1. 3 모델과 원본 음원에서의 mean opinion score (MOS) 점수 '논문 리뷰' 카테고리의 다른 글
Deep Speech & Deep Speech2 간단 리뷰 (0) 2022.01.15 Listen, Attend and spell (0) 2022.01.01 VQVC+: One-Shot Voice Conversion by Vector Quantization and U-Net architecture 리뷰 (0) 2021.10.13 WaveGlow: A Flow-based Generative Network for Speech Synthesis 리뷰 (0) 2021.10.13 Glow: Generative Flow with Invertible 1x1 Convolutions 리뷰 (0) 2021.10.13