본문 바로가기

audio/audio generation (tts)

[논문리뷰] HiFi-GAN: Generative Adversarial Networks for Efficient and High Fidelity Speech Synthesis (NeurIPS20)

논문제목: HiFi-GAN: Generative Adversarial Networks for Efficient and High Fidelity Speech Synthesis
저자: Jungil Kong, Jaehyeon Kim, Jaekyoung Bae
소속: Kakao Enterprise
발표: NeurIPS 2020

논문: https://arxiv.org/abs/2010.05646
코드: https://github.com/jik876/hifi-gan
오디오샘플: https://jik876.github.io/hifi-gan-demo/

 

- GAN을 이용해서 멜을 고퀄 스피치로 바꾸는 기법
- 오디오의 기본 구성성분인 sinusoidal signal을 잘 모델링 하는 것이 핵심이었음
- 그렇게 하니 사람 수준까지 오르는 오디오를 만들 수 있었음. 생성 속도는 당연히 빠름

 

Story

Neural Network을 이용하여 스피치를 생성할 때는 일반적으로 1) 오디오보다 low resolution인 intermediate representation을 만들고, 2)이를 웨이브폼 오디오로 변경하여 스피치를 생성하게 됨. 여기에서는 2)번 과정, 즉 멜을 스피치로 바꾸는 작업에 관심.

오디오를 생성하는 여러 모델들이 제안되어 왔는데 WaveNet[Oord16], 그리고 이를 더 빠르게 개선시킨 Parallel WaveNet[Oord18]등이 좋은 결과를 보여주고 있었음. 그러는 중에 GAN을 사용한 모델들도 발표되었는데 점점 좋은 결과를 보여주는 모델들[Kumar19][Yamamoto20][Binkowski20]이 소개되고 있음. 그래도 아직까지는 autoregression 모델들의 수준에는 도달하지 못했음. 조금만 더 하면 되지 않을까? 열심히 해보니 이들을 이길 수 있는 모델을 만들 수 있을 것 같은데?

 

Generator

멜을 입력으로 받고 transposed convolution을 통해 업샘플링함. 다양한 커널 사이즈와 dilation rate이 사용되어 다양한 receptive field를 만들게 됨. 전체 구조는 아래와 같음.

 

Discriminator

두 종류의 Discriminator, MPD와 MSD를 사용함.

 

Multi-Scale Discriminator(MSD): MelGAN[Kumar19]에서 제안한 멀티 스케일 버전의 discriminator를 사용. 동일하게 raw audio, 2x, 4x 풀링 버전을 사용. 첫번째 discriminator에는 spectral normalization, 나머지는 weight normalization 사용.

 

Multi-Period Discriminator(MPD):  오디오는 본질상 여러 종류의 sinusoidal signal로 구성되어 있음. 그래서 푸리에 아저씨가 유명해짐. 이를 별도로 잘 인식할 수 있는 discriminator를 만들어 보면 어떨까? 동일한 period로 떨어져 있는 샘플만 볼 수 있는 discriminator의 셋을 만듬. period는 오버랩을 최대한 줄이기 위해 소수 [2,3,5,7,11]로 구성함. 일단 period에 따라 2D로 reshape한 후, $k \times 1$ 커널을 이용하여 계산. weight normalization 사용.

 

Training Loss Terms

GAN Loss: GAN 훈련 방법론은 LS-GAN [Mao17]을 이용. $x$는 Ground truth 오디오, $s$는 멜스펙트로그램.

Mel-Spectrogram Loss: 두 웨이브폼의 멜스펙트로그램의 $L_1$ 거리. 파이는 오디오를 멜로 바꾸어주는 함수. 이 로스는 오디오를 보다 사실적으로 만들어주고 훈련 초반 stability도 높여줌.

Feature Matching Loss: discriminator의 각 레이어의 feature들 간의 $L_1$ 거리. $D^i$는 discriminator의 $i$번째 레이어의 피쳐맵. $N_i$는 피쳐갯수.

 

Final Loss: discriminator는 여러개가 사용되므로, 이를 한번에 다 나타내면,

 

여기서 $D_k$는 $k$번째 sub-discriminator(MPD & MSD).

 

Experiments

LJSpeech 데이터셋을 이용. 비교를 위해 MoL WaveNet[Oord18][Yamamoto18], WaveGlow[Prenger19][Valle18a], MelGAN[Kumar19]의 구현을 그대로 사용함. unseen speaker에 대한 실험도 진행했는데 이때는 VCTK 데이터셋을 이용. 

AMT를 이용해 MOS스코어를 구하고, GPU(single NVIDIA V100)와 CPU(Intel i7 2.6GHz)에서 속도를 측정. 레이어 수를 조정하여 3가지 버전(V1, V2, V3)을 만들었는데 V3이 가장 간소화된 버전. 

 

Results

MOS결과로 모든 버전의 HiFi-GAN이 다른 모델들을 다 이겼음. V1은 거의 Ground Truth에 가까운 수준. 속도 측면에서는 V2, V3이 MelGAN보다 빨랐음. V2는 특히 파라미터 수를 줄인 모델인데, 가장 작은 수의 파라미터로도 좋은 결과를 보였음. 

Ablation Study: 모든 요소들이 전부 성능향상에 기여하고 있음을 보이는데, 특히 중요한 것은 MPD였음. MSD에 비하여 오디오 퀄리티 향상에 큰 역할을 하였음. Mel-Spectrogram Loss도 중요한 역할을 하는 것을 알 수 있음. MelGAN에다가 MPD를 추가해 봤는데 퀄리티가 0.5 MOS가까이 높아지는 것을 알 수 있음. 또한 period를 소수대신 2의 배수로 바꾸어보니 0.2 MOS만큼 성능이 감소하였음. 소수를 선택한 것이 신의 한수.

 

Generalization to Unseen Speakers: VCTK 데이터셋에서 50개를 뽑아서 오디오를 만들어 MOS 테스트를 돌림. 여기서도 거의 Ground Truth에 가까운 MOS 점수가 나온 것을 알 수 있음. Generalization도 잘 된다는 뜻.

End-to-End Speech Synthesis: Tacotron2 [Shen18][Valle18b]을 사용해서 text를 mel로 바꾸고, 이를 WaveGlow[Prenger19][Valle18a]와 HiFi-GAN으로 오디오를 만들어 비교해봄. 더 잘됨. 그런데 전체적인 점수가 낮았는데, 아마도 Tacotron2에서 만드는 멜이 노이지하기 때문인 것 같음 .이를 다시 fine-tuning하고 실험하니 WaveGlow는 별 변화가 없었는데 HiFi-GAN은  높은 점수를 받았음.

 

소수를 사용한 Multi-Period Discriminator가 신의 한 수였음.

 

 

  • [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. [논문리뷰]
  • [Mao17] Xudong Mao, Qing Li, Haoran Xie, Raymond YK Lau, Zhen Wang, and Stephen Paul Smolley. Least squares generative adversarial networks. In Proceedings of the IEEE International Conference on Computer Vision, pages 2794–2802, 2017.
  • [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. [논문리뷰]
  • [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. [논문리뷰]
  • [Valle18a] Rafael Valle. Nvidia/waveglow. https://github.com/NVIDIA/waveglow, 2018a
  • [Valle18b] Rafael Valle. Nvidia/tacotron2. https://github.com/NVIDIA/tacotron2, 2018b.
  • [Yamamoto18] Ryuichi Yamamoto. wavenet vocoder. https://github.com/r9y9/wavenet_vocoder/, 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. [논문리뷰]
  • [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. [논문리뷰]
  • [Yamamoto20] R.Yamamoto, E.Song, and J.M.Kim. Parallel WaveGAN: A fast waveform generation model based on generative adversarial networks with multi-resolution spectrogram. ICASSP 2020. [논문리뷰]