논문제목: GANSynth: Adversarial Neural Audio Synthesis
저자: Jesse Engel, Kumar Krishna Agrawal, Shuo Chen, Ishaan Gulrajani, Chris Donahue, Adam Roberts
소속: Google AI
발표: ICLR 2019
논문: https://arxiv.org/abs/1902.08710
코드: https://github.com/magenta/magenta/tree/main/magenta/models/gansynth
샘플오디오: https://storage.googleapis.com/magentadata/papers/gansynth/index.html
- GAN으로 좋은 퀄리티의 오디오를 합성해내보자. WaveNet[Oord16]을 사운드 퀄리티로도 이길 수 있음! 물론 속도는 엄청 더 빠름.
- phase를 보다 잘 표현할 수 있는 instantaneous frequency를 사용하고, FFT의 해상도도 더 높이고, 멜도 사용하고 하면 더 좋은 사운드를 만들어낼 수 있음.
Story
좋은 오디오는 세세한 디테일도 살리면서도 전체적인 구조도 지니고 있어야 함. 그래서 만들기 어려움ㅠㅜ 현재 가장 좋은 결과들은 autoregressive model[Oord16]인데, 오디오 퀄리티는 좋지만 전체적인 구조를 제공하는 어떤 시그널이 있어야 함. 그리고 샘플 하나씩 만들기 때문에 느림.
반면에 이미지 분야에서 개발된 GAN은 빠르고 글로벌한 구조도 유지할 수 있는 방법임. 이를 오디오를 그대로 사용한 결과[Donahue19]도 있는데, 사실 퀄리티가 그렇게 좋지는 못함. GAN을 사용하여 speech recognition에 적용하는 방법[Hosseini-Asl18][Hosseini-Asl19]은 어느정도 성공적이기는 하지만.
Dataset
NSynth 데이터셋[Engel17]은 CelebA의 오디오 버전 쯤으로 생각하면 됨. GAN으로 이미지 잘 만들어내려면 얼굴이 중앙에 딱 있는 데이터셋이 있으면 좋은 것처럼 좋은 오디오를 만들기 위해서 여러 악기의 다양한 음을 예쁘게 정렬시킨 데이터셋임. 이 데이터셋 가지고 오디오를 합성하기 위하여 여러 모델들이 제안되었는데, 여기에서는 adversarial training을 시도해보게 됨.
Architecture
GAN의 훈련 방법론은 progressive training method [Karras18]를 이용함(non-progressive 보다 약간 더 좋았다고 함). 훈련은 gradient penalty를 이용한 Wasserstein GAN[Gulrajani17]을 사용. 거기에 피치를 조정하기 위하여 피치정보를 원핫으로 추가적으로 컨디션으로 넣어주었음. 또한 피치 레벨을 예측하기 위한 auxiliary classification loss를 추가. 구조가 궁금한 분들을 위하여,
Instantaneous Frequency
오디오의 가장 큰 특징은 local periodicity가 있다는 것. 피치가 전부 반복성으로 이루어지는 것이기 때문. 오디오를 처리하는 일반적인 방식은 frame-based에서 이 주기성들은 정확히 프레임과 맞을 수가 없음(첫번째 그림에서 검은 수평선 길이가 다 다름). 하지만 이렇게 다른 phase들을 먼저 $0 \sim -2\pi$ 사이로 unwrap을 하여 선형적으로 증가하는 값으로 만들고, 이들의 미분을 구하면 항상 일정한 값을 얻게 됨. 이를 instantaneous (angular) frequency, IF라고 부름.
이를 트럼펫 소리를 예로 들어 스펙트로그램을 보면, 깔끔한 log magnitude이 비해 phase는 좀 랜덤하게 보이는데 이를 unwrap을 하면 선형적으로 증가하는 주기성이 보이고 이를 IF로 바꾸면 원래 harmonic frequency가 있는 부분에서는 여전히 괜찮은 bands가 보이는 것을 알 수 있음.
Representations
먼저 오디오 인풋은 STFT를 해서 (256, 512, 2) 사이즈로 만듬. 앞에 256은 stride, 512는 frame size의 절반, 2는 magnitude와 phase를 의미. magnitude는 로그 취해서 스케일($-1 \sim 1$)을 맞추고, phase도 똑같이 스케일링함. 그리고 이를 앞서 설명한 instantaneous frequency 모델로 바꿈(IF). 그리고 왠지 낮은 frequency range에 좀 더 해상도가 높으면 좋겠다는 생각이 듬. 그래서 frame size를 두배로 늘려서 (128, 1024, 2) 사이즈로 만듬(IF+H). 마지막으로 mel frequency로 스케일링을 바꿈(IF-Mel+H).
비교를 위해서 WaveGAN [Donahue19]를 이용하는데 여기에 피치 컨디셔닝을 추가하고 NSynth 데이터셋으로 다시 훈련함. WaveNet[Oord16]도 동일하게 피치 컨디션을 받도록 만듬.
Metrics
생성모델에서는 좋은 메트릭이 하나만 있는 것이 아닌. 뭘좋아할지 몰라서 이것저것 다 사용해봄
- Human Evaluation: AMT을 이용해서 각 모델로 만든 샘플들을 사이드바이사이드로 사운드의 퀄리티를 비교해게 함.
- Number of Statistically-Different Bins(NDB): 훈련 데이터를 k-means(k=50) 클러스터링하고 생성된 데이터를 가장 가까운 센트로이드로 어사인함. 일종의 Binomial test로 훈련 데이터와 생성된 데이터가 얼마나 다른지 알 수 있는 하나의 방법[Richardson18]
- Inception Score(IS): 이름은 inception이라고 부르지만 사실은 NSynth데이터셋으로 새롭게 훈련된 pitch classifier를 이용해서 얼마나 똑같이 피치가 잘 분리되는지 봄
- Pitch Accuracy (PA), Pitch Entropy (PE): inception score만 쓰면 안되는거는 다 암. 위에서 사용한 pitch classifier에서 얻어진 정확도와 엔트로피 값도 이용함.
- Frechet Inception Distance (FID): [Heusel17]에서 제안한 2-Wasserstein (Frechet) distance를 이용한 방법도 이용. 여기서도 inception대신 pitch-classifier feature들을 이용.
Results
퀄리티는 IF-Mel + H모델(phase대신 instance frequency를 이용하고, 해상도도 높이고 mel로 변환한 모델)가 가장 좋았음. NDB(diversity)또한 이 모델이 가장 좋았음. 그 외 FID,IS,PA,PE 점수는 멜을 사용하지 않은 모델(IF+H)에서 가장 좋았음. 이 점수들은 전체적으로 다 좋았는데 대부분 정확한 피치 사운드를 만들어냈다는 의미.
Qualitative Analysis
생성된 오디오에서 phase가 얼마나 비슷한가를 봄. IF의 역할이 phase를 더욱 잘 표현하는 것이니 예측처럼 가장 비슷한 모양의 phase를 갖는 오디오를 생성할 수 있음.
제안한 GAN 모델에서는 spherical gaussian prior를 가지고 있기 때문에 이를 잘 이용하여 두 데이터 사이에 interpolation을 할 수 있음. 오디오 두 개 A, B를 크로스페이딩한 결과, WaveNet autoencoder[Engel17]로 믹싱한 결과, 그리고 GANSynth로 interpolation한 결과를 보면 역시나 GANSynth가 가장 잘됨. 사운드도 그러함.
Fast Generation
GAN의 생성 속도가 autoregressive model보다 훨씬 빠르겠지? TitanX GPU로 4초 오디오를 생성할 때 20ms 정도 걸렸는데 WaveNet은 1077초 걸림. 53,880배 더 빠름. 이제 리얼타임으로 생성하는 것도 가능함.
GAN으로 들을만한 사운드를 생성하는데 성공!
물론 아직 단일 악기 단일 피치 소리이긴 하지만.
- [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. [논문리뷰]
- [Engel17] Jesse Engel, Cinjon Resnick, Adam Roberts, Sander Dieleman, Douglas Eck, Karen Simonyan, and Mohammad Norouzi. Neural audio synthesis of musical notes with WaveNet autoencoders. In ICML, 2017.
- [Gulrajani17] Ishaan Gulrajani, Faruk Ahmed, Martin Arjovsky, Vincent Dumoulin, and Aaron C Courville. Improved training of Wasserstein GANs. In NIPS, pp. 5767–5777, 2017.
- [Heusel17] Martin Heusel, Hubert Ramsauer, Thomas Unterthiner, Bernhard Nessler, and Sepp Hochreiter. GANs trained by a two time-scale update rule converge to a local Nash equilibrium. In NIPS, pp. 6626–6637. 2017.
- [Hosseini-Asl18] Ehsan Hosseini-Asl, Yingbo Zhou, Caiming Xiong, and Richard Socher. A multi-discriminator cyclegan for unsupervised non-parallel speech domain adaptation. CoRR, abs/1804.00522, 2018.
- [Karras18] Tero Karras, Timo Aila, Samuli Laine, and Jaakko Lehtinen. Progressive growing of GANs for improved quality, stability, and variation. In ICLR, 2018.
- [Richardson18] Eitan Richardson and Yair Weiss. On GANs and GMMs. CoRR, abs/1805.12462, 2018.
- [Donahue19] C.Donahue, J.McAuley, M.Puckette. Adversarial audio synthesis. ICLR 2019. [논문리뷰]
- [Hosseini-Asl19] Ehsan Hosseini-Asl, Yingbo Zhou, Caiming Xiong, and Richard Socher. Augmented cyclic adversarial learning for low resource domain adaptation. In International Conference on Learning Representations, 2019