본문 바로가기

audio/audio generation (tts)

[논문리뷰] Non-Autoregressive Neural Text-to-Speech (ICML20)

제목: Non-Autoregressive Neural Text-to-Speech

저자: Kainan Peng, Wei Ping, Zhao Song, Kixin Zhao

소속: Baidu Research

발표: ICML 2020

논문: https://arxiv.org/abs/1905.08459

오디오샘플: https://parallel-neural-tts-demo.github.io/

 

- ParaNet + WaveVAE
- Baidu Research에서 DeepVoice3[Ping18], ClariNet[Ping19] 모델을 만든 후 속도 개선을 목표로 만든 모델. 따라서 전체 구조는 앞의 두 논문의 구조와 유사성이 많음.
- text -> spectrogram 부분인 ParaNet은 DeepVoice3에서 non-autoregressive decoder와 pretrained autoregressive model를 이용하여 성능 및 속도를 개선함.
- spectrogram -> audio 부분인 WaveVAE는 ClariNet의 보코더를 VAE를 기반으로 처음부터 다시 훈련시킴.
- 인퍼런스시 DV3보다 47배 속도 향상. 퀄리티는 살짝 정도 떨어지는 수준.
- 4명의 저자가 모두 동등한 contribution을 갖는다고 하는데 정말 그럴 수 있음?ㅋ 어쨋든 Baidu Research의 저자 순서 선정방식은 재미있는 듯. 이번에도 보니깐 알파벳순서로군. 

Story

TTS에서 autoregressive model의 느린 속도를 개선하기 위한, 소위 parallel waveform generation기술들이 많이 소개되고 있음[Oord18][Ping19][Prenger19][Kumar19][Binkowski20][Ping20]. 하지만 이들 대부분은 내부적으로 보면 모두 autoregressive component들을 가지고 있음. 따라서 여기에서는 완전히 fully parallel TTS 시스템을 제안해보겠음.

 

근데 이 당시에 비슷한 목적을 가진 FastSpeech[Ren19] 또한 갓 나온 상태. 이와 비교를 하면 ParaNet은 FastSpeech보다 파라미터도 반절밖에 안되고 더 가벼운 모델.

 

Text-to-Spectrogram Model

먼저 텍스트를 스펙트로그램으로 바꾸는 모델을 먼저 소개함. 먼저 autoregressive seq2seq 모델(a)을 소개하고, Non-autoregressive ParaNet  모델(b)을 소개함.

 

 

Autoregressive architecture

먼저 DV3[Ping18]에 기반한 autoregressive 모델을 먼저 살펴보겠음. 그 이후에 ParaNet은 이 모델을 기반으로 변형됨. 먼저 autoregressive 모델은 아래와 같은 3가지 컴포넌트로 되어 있음.

Encoder: text를 hidden representation으로 바꾸는 convolutional encoder.

Decoder: hidden representation을 attention을 사용하여 autoregressive 방식으로 mel-spectrogram으로 바꾸는 causal convolutional decoder.

Converter: non-causual convolutional post processing 네트워크로 decoder의 출력을 받아서 past context와 future context를 고려하여 log-linear spectrogram을 생성하게 됨.

 

모든 컴퍼넌트들은 동일한 1D convolution block + gated linear unit으로 되어 있음. 단지 DV3와의 차이점은 decoder에 있는데, DV3에서는 여러개의 attention-based layer를 사용하는데 반해, 여기에서는 attention distillation을 쉽게 하지 위하여 단지 하나의 attention block을 가짐.

 

Non-autoregressive architecture

ParaNet은 위에서 소개한 autoregressive version과 아래 두 가지가 다름

Non-autoregressive decoder: decoder는 non-causal convolution block을 사용하여 future context information도 이용함. 멜 뿐만 아니라 log-linear spectrogram도 함께 예측함.

No converter: 이미 non-causal decoder가 있으므로 별도의 converter가 필요하지 않음.

 

(a) ParaNet의 구조. (b) encoder와 decoder에서 사용하는 Convolution Block의 구조.

 

Parallel attention machanism

feed-forward 모델이 text와 spectrogram의 정확한 alignment을 배우게 하는 것은 참 힘든일임. 거기에다가 여기서는 parallelism이 중요한 이슈임. 

 

먼저 제안하는 모델에서는 attention alignment를 레이어를 통해 진행할 수록 점점 refine하도록 함. 일단 encoder에서는 key와 value 값을 제공하고, 디코더에서는 1) 첫번째 attention block은 positional encoding을 query로 사용하여 결과를 만들어 convolution bloack에 넣음 2) 두번째 attention block은 여기서 생성된 query를 받아 context를 만들어 다음 attention block에다가 넣음. 3) 이렇게 K번 반복하면서 점점 나은 형태의 attention alignment를 만듬.

 

Attention Distillation

여기에서는 non-autoregressive ParaNet을 훈련하기 위하여 pretrained autoregressive model을 이용함. 즉 teacher(pretrained autoregressive)와 ParaNet의 attention distribution의 cross entropy를 최소화하는 방향으로 훈련됨. $W^(k)_{i,j}$ 가 $k$번째 attention block의 attention weight이고, $W^t_{i,j}$가 teacher의 attention weight라고 하면 attention loss는 아래와 같이 정의됨.

$M$은 encoder의 길이, $N$은 decoder의 길이. 여기에다가 spectrogram prediction간의 $L_1$ loss를 linear combination하여 최종 loss로 사용함.

 

Positional Encoding

monotonic attention을 위해서는 positional encoding이 반드시 들어가야 함. 거기다가 이 모델은 non-autoregressive임. 기본적으로 DV3의 형태와 동일하게 사용하는데, 처음부터 대각선 모양을 잘 만들기 위하여(위 그림 1st layer참고)  스케일 값을 잘 선택함.

 

Attention Masking

TTS에서 전체 벡터에 대한 attention을 계산할 필요는 없음(그러면 더 안좋음). 따라서 target position에서 어느정도의 윈도우를 씌여서 그 안에 해당하는 값만 고려해서 attention을 계산함. 이렇게 하면 계산도 빨라질 뿐 아니라 반복되거나 건너뛰는 단어들의 수가 크게 줄어 퀄리티가 많이 좋아짐.

 

Parallel waveform model 

다음으로 이제 멜을 raw waveform으로 생성하는 부분을 설명함. 먼저 여러 종류의 이미 존재하는 parallel waveform 모델을 살펴보고 새로운 방법(WaveVAE)을 제안함.

 

Flow-based waveform models

Inverse autoregressive flow(IAF)는 parallel synthesis가 가능한 모델이지만 훈련이 autoregressive 방식이기 때문에 너무 느림. 따라서 이 방식을 사용한 모델[Oord18][Ping19]들은 autoregressive WaveNet을 distillation하는 방식으로 모델을 훈련함. 하지만 딱봐도 이 방식은 복잡함.

 

RealNVP나 Glow는 이와 다르게 bipartiite architecture를 강제함으로써 훈련과 생성 모두 parallel하게 함. 이 방식을 사용한 모델[Prenger19][Kim19]은 단순한 훈련방법으로도 모델을 만들 수 있지만 모델의 표현력을 높이기 위하여 파라미터가 많이 필요하다는 단점이 있음. 예를 들어 WaveGlow[Prenger19]는 88M개의 파라미터가 필요하지만, [Ping19]는 단지 2M정도의 파라미터만 필요함.

 

WaveVAE

IAF가 좋긴 한데, 이를 density distillation을 사용하지 않고 훈련할 수 있을까? 여기에서는 VAE 프레임워크를 한번 사용해봄. 그리하여 이름도 WaveVAE라고 지음. WaveVAE는 encoder와 decoder를 함께 최적화시켜 처음부터 훈련시킬 수 있음. 

 

Encoder

WaveVAE의 encoder $q(z|x)$는 Gaussian autoregressive WaveNet[Ping19]을 이용함. 

 

여기에서 $\epsilon$이 도입되었는데, 이는 global variation와 decouple하기 위하여 훈련가능한 값으로 추가되었음.

 

Decoder

decoder $p(x|z)$는 IAF[Ping19]을 이용함. $z = z^(0)$은 이제 여러 단계의 IAF transformation을 통하여 $z^(n)$으로 변환될거임. 그리고 각 변환은 아래와 같이 정의됨.

그리고 $\mu$와 $\sigma$는 Gaussian WaveNet으로 모델링되는 shifting variable과 scaling variable임. 사실 이러면 Gaussian prior에서 시작한 $z^(0)$은 $z^(n)$에서는 아래와 같이 표현 될 수도 있음.

그리고 이제 $p(x|z)$를 아래와 같이 정의할 수 있음.

 

Training Objective

이제 ELBO를 최적화해볼 순서.

 

$q$와 $p$모두 Gaussian이니 KL divergence는 closed-form을 갖게 됨.

앞부분 reconstruction term은 바로 계산하기는 어려움. 따라서 stochastic optimization, 즉 encoder에서 $z$를 하나 샘플링하고 likelihood $\log p(x|z)$를 계산하는 방식을 이용. 

 

이대로 훈련을 시키면 posterior distribution $q(z|x)$이 훈련 초기에 white noise prior $p(z)$로 바로 가버릴 위험성이 있는데(posterior collapse), 이를 해결하기 위하여 KL divergence에 대하여 annealing strategy를 적용함. 즉 처음에 KLD의 웨이트를 0으로 주고 점차 1로 늘려가는 방식(sigmoid function을 이용). 이러면 encoder는 훈련 초기에는 먼저 충분한 정보를 latent representation에 인코딩하게 되고 그 후 점차 regularization하는 방식으로 훈련이 됨.

 

STFT Loss: [Ping19]와 마찬가지로 STFT loss를 더함. 이는 STFT의 magnitude들간의 $L_2$로스와 log-magnitude들간의 $L_1$로스 합으로 구성됨.

 

Experiment

Settings

Data: 내부 영어 스피치 데이터를 이용(20시간). 

Text-to-spectrogram models: 인풋으로는 character와 phoneme의 섞인 버전을 이용. 자세한 파라미터값들은 논문에 표로 나와 있고, 파라미터 개수를 비교하면 ParaNet(17.61M)은 DV3(6.85M)보다 2.57배 많고, FastSpeech(30.1M)보다는 1.71배 적음. 

Neural vocoders: 비교를 위해서 WaveNet, ClariNet, WaveGlow를 이용. IAF구조는 ClariNet과 동일. 

 

 Results

 Speech quality: MOS를 비교해보면 아래와 같음.

가장 좋은 결과는 DV3 + WaveNet의 조합인데, ParaNet + WaveNet도 이와 큰 차이가 안날정도의 결과를 보였음. ClariNet 보코더를 이용하는 경우에도 ParaNet이 DV3보다 약간정도 떨어지는 수준이었음. WaveVAE 보코더는 MOS점수는 좀 더 낮았는데, 그래도 처음부터(from scratch) 훈련이 가능하기 때문에 훈련 파이프라인을 쉽게 만든다는 장점이 있음). WaveGlow 보코더의 경우는 DV3에서 만드는 멜과 ParaNet에서 만드는 멜이 차이가 이써 보임. 이 당시에 나왔던 FastSpeech 결과도 넣었는데(서브밋 다음에 추가했음) 새롭게 MOS를 구했는지라 사실 공정하게 비교하긴 힘듬.

 

Synthesis speed:  역시 속도에 장점이 있는 모델이니 속도를 비교해야 겠음. ParaNet은 일단 리얼타임보다 254.6배 빨랐고, DV3보다 46.7배, FastSpeech보다도 1.58배 빨랐음. 

 

Attention error analysis: 어텐션 모델을 이용하는 경우 어텐션 에러에 의한 반복되거나 뛰어넘거나 잘못발음되는 부분이 생길 수 있음. 100개의 문장으로 이를 측정해보니 아래와 같았음.

여기에서 ParaNet은 기본적으로 17레이어의 디코더를 사용하고, ParaNet-12은 12레이어, ParaNet-6은 6레이어를 사용한 모델.  즉 레이어 숫자가 늘어나면 전체적으로 에러가 줄어듬. 그런데 attention mask의 효과가 중요하다는 것을 알 수 있음. DV3에 mask를 적용하여 계산하니 에러가 확실히 줄었음. 그래도 ParaNet이 가장 에러가 적긴 했음. 

 

Ablation study

이 부분은 그냥 말로 설명하고 있음. attention distillation을 사용하지 않으니 의미있는 alignment를 구해지지가 않았음. 그렇게 합성한 오디오는 거의 노이즈같은 결과였음. positional encoding을 사용하지 않아도 (예상처럼) 매우 blurry한 어텐션이 구해졌고 제대로된 결과를 합성할 수 없었음. 위에서 설명한데로 디코더의 레이어수를 바꾸어서 해보니, 레이어가 많으면 많을 수록 좋았음.

 

속도개선을 위한 지속적 노력. 바이두에서도 놀고 있지 않음 있음을 보여주는 논문.

 

  • [Oord18] A.van den Oord, Y.Li, I.Babuschkin, K.Simonyan, O.Vinyals, K.Kavukcuoglu, G.van den Driessche, E.Lockhart, L.C.Cobo, F.Stimberg et al., Parallel WaveNet: Fast high-fidelity speech synthesis. ICML 2018. [논문리뷰]
    [Kumar19] K.Kumar, R.Kumar, T.de Boissiere, L.Gestin, W.Z.Teoh, J.Sotelo, A.de Brebisson, Y.Bengio, A. Courville. MelGAN: Generative adversarial networks for conditional waveform synthesis. NeurIPS 2019. [논문리뷰]
  • [Ping18] W.Ping, K.Peng, A.Gibiansky, S.O.Arık, A.Kannan, S.Narang, J.Raiman, J.Miller. Deep Voice 3: Scaling Text-to-Speech with Convolutional Sequence Learning. ICLR 2018. [논문리뷰]
  • [Kim19] S.Kim, S.Lee, J.Song, J.Kim, S.Yoon. FloWaveNet: A Generative flow for raw audio. ICML 2019. [논문리뷰]
  • [Ping19] W.Ping, K.Peng, J.Chen. ClariNet: Parallel wave generation in end-to-end text-to-speech. ICLR 2019. [논문리뷰]
  • [Prenger19] R.Prenger, R.Valle, B.Catanzaro. WaveGlow: A flow-based generative network for speech synthesis. ICASSP 2019. [논문리뷰]
  • [Binkowski20] M.Binkowski, J.Donahue, S.Dieleman, A.Clark, E.Elsen, N.Casagrande, L.C.Cobo, K.Simonyan. High fidelity speech synthesis with adversarial networks. ICLR 2020. [논문리뷰]
  • [Ping20] W.Ping, Ka.Peng, K.Zhao, Z.Song. WaveFlow: A Compact Flow-based Model for Raw Audio. ICML 2020. [논문리뷰]