Introduction

Ambient Noise(배경 소음)으로 적대적 생성 신경망

waveGAN 사용. 졸업작품이다!

BearHunter49/GAN_ambient_noise

문제 접근


졸업 작품으로 어떤 주제를 선정할까 고민하다가, 딥러닝에 한참 관심이 있었던 터라 재밌는 모델을 찾아보았다. 아무래도 결과물이 실제 눈에 확연히 보이는 것이 흥미로웠기에, 관련한 모델들 중 고민하였다. Deep Dream, Neural Style Transfer, GAE 등등... 하지만 그 중 GAN으로 데이터를 생성하는 것이 가장 재밌어보였다.

원래 하고 싶었던 것은 특정 가수의 노래들을 학습시켜서 이상한(?) 노래를 만드는 것이었지만, 이미지와는 달리 아직 음성 데이터는 GAN 모델에서 성능이 그리 좋지 못하다고 한다. 그리고 내가 만들고 싶었던 건 여러 특징들을 섞어서 완전히 새로운 데이터를 만드는 건데, GAN 자체가 원본과 최대한 비슷하게 데이터를 생성하는 것이 목적인지라 취지와도 맞지 않았다(차라리 스타일 전이로 섞는게 나을듯).

아무튼 논문이라던지 이것저것 찾아보다가, 음성 데이터쪽에 관심이 기울었고, 그 중 상대적으로 특징이 적은(단순한) 음성 데이터인 Ambient Noise(배경 소음)에 대해서 생성 모델을 적용시켜보기로 했다. GAN에서 음성 데이터가 성능이 좋지 못한 이유는 음성 데이터의 특징이 워낙 괴랄하기 때문인데, 배경 소음은 특징이 단순하기 때문에 해볼만 하다고 느꼈다. (물론 음성 데이터의 특징을 찾는데는 MFCC 알고리즘이 큰 힘을 발휘한다. 다만 Mel-Spectrum으로 변환 시 시간 연속성이 깨지기 때문에 음성을 생성하기에는 별로다. 분류 등에 적합하다는 뜻..!)

그렇게 GAN 중 음성 데이터에 특화된 모델들을 찾아보다가, waveGAN이 구현 난이도에 비해 성능이 좋다고 판단했다(waveGAN 이후로 이를 개량한 모델들이 많이 나왔지만, 아직 이해하기가 어려웠다...). waveGAN은 DCGAN 모델과 구조가 비슷한 대신, 음성 데이터의 주기성에 초점을 맞춰 만들어진 모델이다. 어차피 소리는 진동의 연속이기 때문에, 파형이 주기적으로 나타난다고 보는 것이다. 아무튼 2019년에 나온 꽤 최근의 논문인데, DCGAN을 잘 이해하고 있다면 논문을 이해하는데 그다지 어려운 점은 없을 것이다.

데이터 종류