본문 바로가기

audio/audio generation (tts)

[논문리뷰] MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis (NeurIPS19)

논문제목: MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis

저자: Kundan Kumar, Rithesh Kumar, Thibault de Boissiere, Lucas Gestin, Wei Zhen Teoh, Jose Sotelo, Alexandre de Brebisson, Yoshua Bengio, Aaron Courville

소속: Lyrebird AI, Mila, University of Montreal

발표: NeurIPS 2019

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

코드: https://github.com/descriptinc/melgan-neurips

오디오샘플: https://melgan-neurips.github.io/

 

- 멜을 입력으로 받아 오디오로 만들어주는 모델. (오디오분야에서는) 이전까지 좋은 결과를 만들지 못하던 GAN을 이용하여 좋은 퀄리티의 오디오를 만드는데 성공함.
- Generator와 Discriminator에 몇가지 (오디오적인) 수정을 가했는데 이것이 핵심비결인듯.
- GAN 모델이기 때문에 파라미터도 적고 속도도 훨씬 빠름. 아직 성능은 autoregressive model 보다는 떨어지지만 그래도 제법 그럴싸함

 

Story

오디오를 모델링하는 것은 참 어려운 문제. 이를 좀 단순화하기 위해서 대부분 1) intermediate representation을 먼저 모델링하고 2) 이를 오디오로 바꾸는 작업을 함. 예를 들어 중간 표현법으로 liguistic feature를 사용하거나 mel-spectrogram(멜)등을 이용할 수 있음. 여기서는 2) 멜을 오디오로 바꾸는 일을 하려함. 

이미지 생성 분야에서 한몫 크게 하고 있는 GAN이 오디오 분야에 적용되려는 몇몇 시도가 있음[Donahue19][Engel19]. 하지만 아직까지 좋은 퀄리티에 제대로된 오디오를 만들지는 못함. 아니면 좀 복잡한 작업들을 추가로 수행해야했음[Neekhara19][Yamamoto19]. 여기서는 네트워크 모델만 잘 바꾸면 별도의 작업 없이도 높은 수준의 오디오를 만들 수 있다는 것을 보임

 

Generator

멜을 입력으로 받아서 오디오를 생성. 멜의 해상도는 오디오보다 256배가 적기 때문에 여러개의 transposed conv 레이어를 써야함. dilated convolution에 residual block들을 쌓아 구성함(아래 참고). 이렇게 풍족하게 dilated conv 레이어를 이용함으로써 더 넓은 induced receptive field를 갖고 서로 오버랩되게 할 수 있음. 그런데 노이즈는 따로 넣지 않아도 잘 작동했음. 컨디션 정보가 매우 강력하기 때문에 그렇다고 생각됨. 

오디오에서 transposed conv 레이어를 쓸 때는 항상 checkboard artifact를 조심해야 함. 여기서는 커널사이즈와 스트라이드를 잘 조정해서 이를 감소시켰음. 그리고 dilation 사이즈도 영향을 주기 때문에 이것도 주의깊게 선택함. normalization의 종류도 중요했음. 이런저런 최신 normalization들은 오디오에 적용하니 별로 였고, weight normalization [Salimans16]이 가장 좋은 결과를 보였음.

 

Discriminator

[Wang18]에서 제안한 multi-scale 방법을 적용해봄. 3개의 discriminator(D1, D2, D3)를 쓰는데, D1은 raw audio, D2는 2배 다운샘플한 오디오, D3은 4배 다운샘플한 오디오에 적용됨. 네트워크 스트럭쳐는 동일함(아래 참고). 오디오는 태생상 여러 레벨의 구조로 되어 있는데, 이를 제대로 캐치하려면 여러 스케일의 discriminator들이 필요하다는 생각. 각각은 다른 오디오의 특성들, 예를 들어 D1은 가장 high frequency components, D3은 가장 low frequency components에 대해서 배울 거라 기대함.

각각의 discriminator는 윈도우잉, 즉 strided conv 레이어로 되어 있음. 즉 오디오 전체가 아닌 오디오 청크 단위로 distribution을 배우게 되며, 이를 전부 고려하여 로스를 계산하게 됨. 이러면 high frequency 스트럭처도 잡을 수 있고, 파라미터도 적게 필요하고, 더 빠르고, 다양한 오디오 길이도 고려할 수 있음. 장점이 많음.

 

Training objective

high loss 버전의 GAN[Lim17]을 이용함. LSGAN도 해봤는데 high 버전이 더 나았음.

$x$는 웨이브폼 오디오, $s$는 멜스펙트로그램(condition), $z$는 가우시안 노이즈.

 

generator에서는 여기에 더해서 feature matching objective를 더함. 이는 실제 데이터와 합성 데이터에 대한 discriminator feature map간의 $L_1$ 거리를 최소화하는 것인데, 이는 discriminator에게 둘을 구분할 수 있는 feature space를 배우게 하는 효과가 있음. 

 

여기에서 $D^{(i)}_k$ 는 $k$번째 discriminator의 $i$번째 레이어의 feature map을 의미. $N_i$는 각 레이어의 유닛 개수. 최종적인 generator의 objective은 다음과 같은 모양임.

 

이렇게 구성하면 파라미터도 더 적으면서도 인퍼런스 속도도 매우 빠름. GTX1080 Ti GPU로 2500kHz 정도 나오는데, 현재까지 가장 빠른 모델과 비교해도 10배 이상 빠른 속도임. 하드웨어 옵티마이제이션이나 quantization같은 것을 하면 더 빨라질 수도 있겠음.

 

Results

Ablation study를 위해서 LJ speech 데이터셋으로 훈련을 시키고 각 구성요소를 하나씩 제거해봤음. 결과적으로 모든 요소들이 다 의미가 있었음.

오디오에서 느껴지는 변화를 적어보면, dilated convolutional stack이나 weight normalization이 없으면 high frequency artifact이 나타났고, discriminator를 하나만 사용하면 metallic audio가 생성되었음(특히 스피커의 숨소리). 그리고 하나만 사용하면 어떤 voiced position을 스킵할 때가 있었고 완전히 단어들을 건너뛸 때도 있었음. spectral normalization을 사용하거나 window-based discriminator를 사용하지 않으면 sharp high frequency pattern을 배우기가 더 힘들었음(더욱 노이지했음). raw waveform에 L1 패널티도 넣어봤는데 이러면 high frequency artifact가 생겨 metallic sound가 생성되었음. 

 

Griffin-Lim 알고리즘, WaveGlow[Prenger19], WaveNet[Oord16]하고도 비교를 보았음. 결과적으로 WaveGlow나 WaveNet보다는 MOS점수가 낮았지만 그래도 이들과 견줄 수 있는 점수가 나왔음. 앞으로 좀 더 연구가 진행된다면 따라잡을 수도 있다고 생각함.

재미있게도 여러 스피커로 훈련한 MelGAN은 generalization도 잘하는 듯 싶음. LJ 데이터셋으로 훈련을 시키고 VCTK 데이터셋으로 생성을 했는데도 거의 비슷한 결과가 나왔음.

 

다음으로 End-to-End 방식으로도 스피치를 생성해서 비교를 해보았음. char2wav[Sotelo17]의 업그레이드 버전인 오픈소스인 Text2mel 모델을 이용해서 phoneme을 멜로 바꾸고, 이를 WaveGlow[Prenger19]와 MelGAN을 이용하여 오디오로 변경하였음. 비교를 위해서 Tacotron2[Shen18]과 WaveGlow[Prenger19] 조합도 실험해보았음. 

결과적으로 MelGAN은 충분히 소타와 비벼볼 수 있는 성능이 나왔음. 

 

MelGAN은 여기저기에 다 붙여서 쓸 수 있음. Universal Music Translation Network[Mor19]의 디코더 부분을 MelGAN으로도 바꿔보고, VQ-VAE[Oord17]의 디코더도 MelGAN으로 바꿔서 음악도 만들어봤음. 결과를 들어보면 제법 그럴싸함.

 

GAN을 이용한 품질 좋은 보코더.
알고보니 GAN의 구조를 좀 더 주의깊게 볼 필요가 있었음.

 

  • [Larsen15] Larsen, A. B. L., Sønderby, S. K., Larochelle, H., and Winther, O. Autoencoding beyond pixels using a learned similarity metric. arXiv preprint arXiv:1512.09300, 2015.
  • [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. [논문리뷰]
  • [Salimans16] Salimans, T. and Kingma, D. P. Weight normalization: A simple reparameterization to accelerate training of deep neural networks. In Advances in Neural Information Processing Systems, pp. 901–909, 2016.
  • [Lim17] Lim, J. H. and Ye, J. C. Geometric gan. arXiv preprint arXiv:1705.02894, 2017.
  • [Oord17] van den Oord, A., Vinyals, O., et al. Neural discrete representation learning. In Advances in Neural Information Processing Systems, pp. 6306–6315, 2017.
  • [Sotelo17] J.Sotelo, S.Mehri, K.Kumar, J.F.Santos, K.Kastner, A.Courville, Y.Bengio. Char2wav: End-to-end speech synthesis. ICLR workshop 2017. [논문리뷰]
  • [Ping19] W.Ping, K.Peng, J.Chen. ClariNet: Parallel wave generation in end-to-end text-to-speech. ICLR 2019. [논문리뷰]
  • [Shen18] J.Shen, R.Pang, R.J.Weiss, M.Schuster, N.Jaitly, Z.Yang, Z.Chen, Y.Zhang, Y.Wang, RJ S.Ryan, R.A.Saurous, Y.Agiomyrgiannakis, Y.Wu. Natural TTS synthesis by conditioning WaveNet on mel spectrogram predictions. ICASSP 2018. [논문리뷰]
  • [Wang18] Wang, T.-C., Liu, M.-Y., Zhu, J.-Y., Tao, A., Kautz, J., and Catanzaro, B. High-resolution image synthesis and semantic manipulation with conditional gans. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 8798–8807, 2018.
  • [Donahue19] C.Donahue, J.McAuley, M.Puckette. Adversarial audio synthesis. ICLR 2019. [논문리뷰]
  • [Engel19] J.Engel, K.K.Agrawal, S.Chen, I.Gulrajani, C.Donahue, A.Roberts. GANSynth: Adversarial neural audio synthesis. ICLR 2019. [논문리뷰]
  • [Mor19] Mor, N., Wolf, L., Polyak, A., and Taigman, Y. Autoencoder-based music translation. In International Conference on Learning Representations, 2019.
  • [Neekhara19] Neekhara, P., Donahue, C., Puckette, M., Dubnov, S., and McAuley, J. Expediting tts synthesis with adversarial vocoding. arXiv preprint arXiv:1904.07944, 2019.
  • [Prenger19] R.Prenger, R.Valle, B.Catanzaro. WaveGlow: A flow-based generative network for speech synthesis. ICASSP 2019. [논문리뷰]
  • [Yamamoto19] Yamamoto, R., Song, E., and Kim, J.-M. Probability density distillation with generative adversarial networks for high-quality parallel waveform generation. INTERSPEECH 2019.