본문 바로가기

audio/audio generation (tts)

[논문리뷰] DiffWave: A Versatile Diffusion Model for Audio Synthesis (ICLR21)

제목: DIFFWAVE: A Versatile Diffusion Model for Audio Synthesis
저자: Zhifeng Kong, Wei Ping, Jiaji Huang, Kexin Zhao, Bryan Catanzaro
소속: UCSD, NVIDIA, Baidu Research
발표: ICLR 2021

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

웹페이지: https://diffwave-demo.github.io/

- Diffusion model을 이용하여 오디오를 생성하는 논문. ICLR21에 [Chen21]과 동시에 발표되었음. 두 논문 모두 비슷한 방법론을 사용하지만 소소한 차이점이 있어서 비교하면서 읽으면 재미있음.
- 이 논문은 오디오 생성에 WaveNet[Oord16]을 개선시킨 방법을 사용. [Chen21]에서는 GAN-TTS[Binkowski20]와 유사한 형태를 이용. 
- 작은 수의 파라미터(2.64M vs 15M)로도 리얼타임보다 최대 5배 빠른 속도를 낼 수 있다는 것이 장점. unconditioned 같은 몇가지 실험을 더 한 것도 의미있음. 


Story

요즘 Deep generative model들은 퀄리티 좋은 오디오를 만들어내고 있음. autoregressive model들과 flow-based model들의 인기가 좋지만, VAE나 GAN을 사용한 모델들도 제안이 되고 있음. 한편 이미지 분야에서는 Diffusion probablistic model들을 사용한 좋은 결과들이 나오고 있는데, 왠지 이를 오디오에 적용시키기에도 좋을 것 같음. 빨리 하는 사람이 이기는 것임(그래서 비슷한 논문이 동시에 나옴).

 

Diffusion Probabilistic Models

기본적으로 diffusion model은 2단계로 이루어짐. 

 

1) diffusion process는 노이즈를 더하는 과정인데, 데이터 $x_0$에서 latent variable $x_T$까지 마르코프 체인으로 쭉 이어지게 모델링됨. 

즉 이 과정은 데이터 $x_0$을 점차 가우시안 노이즈로 만드는 형태이고, $\beta$(variance schedule)에 의해서 정도가 조정이 됨.

2) reverse process는 반대로 $x_T$에서 $x_0$로 가는 마르코프 체인임. 이 과정은 점차 가우시안 노이즈를 제거해 데이터로 가게하는 과정임.

 

샘플링을 할 때는 먼저 $x_T$에서 샘플을 하나 고르고 이를 점점 refine하면서 최종 데이터를 구하게 되는 것. 이 방식은 likelihood를 직접 구하지는 못하는 형태이므로 ELBO(variational lower bound)를 최대화하는 방식으로 훈련해야 함.

 

[Ho20]논문에서는 이를 closed-form으로 구하는 방법을 제안하고 있음. 그러면 당연히 이 방법을 써야겠지? 파라미터 $\alpha$를 도입한다면,


이를 멋지게 Proposition으로 정리하였음. 역시 이렇게 하면 뭔가 있어보임.

 


그리고 [Ho20]에 따르면 weighting을 안하면 더 결과가 좋다고 함. 그럼 안해야겠지? 


그리고 여기서 fast sampling기술을 소개하는데, 훈련할 때는 $T$가 많이 필요하지만, 샘플링할 때는 여러 단계를 합쳐 빠르게 ($T$=6) 할 수 있는 방법을 제안하고 있음. Appendix B에 자세하게 설명하고 있는데 왠지 [Chen21]과의 경쟁심이 느껴짐. 그 논문에서도 6단계로 인퍼런스를 할 수 있음.

 

DiffWave architecture

오디오 생성시 WaveNet[Oord16]에서 제안한 방법을 바탕으로 함. 여기에서는 bidirectional dialted convolution을 사용하는데, WaveNet에서 사용했던 causal 버전을 사용하면 오디오 퀄리티가 더 안좋아진다고 함. 그리고 이 논문에서 오디오 생성 방법은 autoregressive도 아님. 전체 아키텍쳐는 이런 모양.


diffusion-step $t$에 따라서 많은 것이 달라지므로 128차원 크기의 인코딩 벡터를 이용함. 누가봐도 트랜스포머 인코딩에서 영향을 받았음을 알 수 있음.


사운드를 만들때 멜로 컨디션을 주는 보코더를 이용함(로컬 버전). 글로벌 컨디션도 실험함. 조건없이 생성하는 어려운 일도 가능한데(아무정보도 안주고 스피치 만든다는 의미), 사실 이는 WaveNet같은 모델로는 receptive field사이즈를 일정크기 이상 만들 수 없기 때문에 가능하지 않음(WaveNet은  receptive field를 너무 크게 만들면 퀄리티가 떨어짐). 하지만 diffusion model에서는 모델 특성상 reverse process를 진행하면서 전체 웨이브폼을 다 만드게 되므로 문제가 되지 않음.

Experiments 1: Neural Vocoding

LJ speech dataset을 이용하여 훈련시킴. WaveNet[Oord16], ClariNet[Ping19], WaveGlow[Prenger19], WaveFlow[Ping20]와 비교함. 결과는 5스케일 MOS(Mean Opinion Scores)로 측정. 결과적으로 autoregressive version인 WaveNet과 거의 동등한 퀄리티를 만들어낼 수 있었음. 논 논문 방법은 리얼타임보다 빠르게 오디오를 만들어내는데 WaveNet은 500배는 더 느림. WaveFlow같은 flow-based model보다는 느리지만 오디오 퀄리티는 조금 더 좋음. 

 

Experiments 2: Unconditional Generation

조건을 안주고도 잘 만들어질까? 데이터는 Speech Commands dataset에서 숫자를 말하는 데이터만 뽑아서 이용(SC09). 비교는 WaveNet[Oord16]과 WaveGAN[Donahue19]을 이용. 그런데 이 모델들은 제대로된 오디오를 만들어내지 못했음. 여러 평가 기준들이 사용되었는데(Frechet Inception Distance, Inception Score, Modified Inception Score, AM Score, Number of Statistically-Different Bins), 논문 Appendix에서 자세히 설명되어 있음.


Experiments 3: Class - Conditional Generation

숫자를 컨디션으로 주고 오디오를 만들어 WaveNet[Oord16]과 비교하였음. 역시나 WaveNet은 제대로된 결과를 만들지 못했음. 

 

Additional Results

Zero-shot speech denoising: SC09데이터셋에는 6종류의 노이즈를 제공하는데, 훈련할 때는 이 노이즈들을 사용하지 않다가 테스트할 때 노이즈를 10%가량 넣고 오디오를 만들었는데 노이즈가 제거된 결과가 나왔음. 제안하는 방법이 제법 똑똑하다는 뜻. 
Interpolation in latent space: 두 명의 스피커를 샘플한 후 이를 linear interpolation을 한 것을 샘플을 하니, 두 스피커의 중간정도 목소리가 나옴. latent space의 피할 수 없는 매력.

Diffusion Model은 역시 대세이긴 함. 앞으로 몇 년간은 이 분위기가 이어지지 않을까? 


  • [Oord16] A.van den Oord, S.Dieleman, H.Zen, K.Simonyan, O.Vinyals, A.Graves, N.Kalchbrenner, A.Senior, K.Kavukcuoglu. WaveNet: A generative model for raw audio. arXiv preprint arXiv:1609.03499, 2016. [논문리뷰]
  • [Donahue19] C.Donahue, J.McAuley, M.Puckette. Adversarial audio synthesis. ICLR 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. [논문리뷰]
  • [Chen21] Nanxin Chen, Yu Zhang, Heiga Zen, Ron J Weiss, Mohammad Norouzi, and William Chan. WaveGrad: Estimating gradients for waveform generation. In ICLR, 2021. [논문리뷰]