본문 바로가기

Paper

[논문] Symbolic Music Genre Transfer with CycleGAN (ETH Zurich, 2018)

취리히 연방 공대에서 2018년에 발표한 " Symbolic Music Genre Transfer with CycleGAN " 논문을 공부하고 정리한 글입니다.

https://arxiv.org/pdf/1809.07575.pdf


music style transfer 프로젝트를 위한 4번째 논문.. 방향성은 잡혀가는 것 같은데 아직 확신이 안든다. 논문 flow를 맞게 타고 있는지도 모르겠고, 조금씩 그림이 그려지는 것에 만족하며 읽어보려한다.

Intro

NN을 사용한 style, domain transfer task는 흥미로운 주제다. 이때까지 대부분의 연구는 image domain에서의 transfer에 국한되었지만, 이를 음악에 적용해보고자 한다.  VAE(Variational Autoencoders), GAN(Generative Adversarial Networks)은 이러한 task에 적합한 모델이다. 

음악의 도메인(domain)은 장르로 생각할 수 있다. 예를 들어 특정 팝송을 jazz 버젼으로 바꾸는 것이 하나의 domain transfer가 될 수 있다. 하지만 음악은 이러한 transfer에 이미지에 비해 매우 민감하다. 왜냐하면 이미지는 지엽적으로 어색하더라도 전체적인 형태가 reasonable하면 사람들이 볼 때 괜찮지만, 음악은 결과가 조금만 이상해도 어색하게 들리기 때문이다. 따라서 사람이 들었을 때 어색하지 않게 하기 위해 정교한 노력이 필요하다.

본 논문에서는 CycleGAN을 이용한 symbolic music genre transfer에 도전한다. symbolic music이 note pitct의 변경만으로 성공적인 장르(도메인) 변화가 일어나는 것을 확인했다. 추가적으로 Extra Discriminator(EX_D)를 도입해, input data의 음악적(전체적) 구조를 유지하게 한다. 이를 통해 G가 단순히 타겟 장르 패턴만 생성해 D를 속이는 것을 방지한다. 또한 별도의 classifier를 도입해 사람이 듣기에 자연스러운 음악을 분류하기위한 장치로 사용한다. 이러한 추가적인 구조를 통해 앞서 언급한 audio domain에서의 transfer 문제를 해결한다.

 

model architecture

본 논문에서 사용하는 모델은 CycleGAN에 기반을 두고 있다. GAN에서 G는 인풋 데이터로 실제(타겟) 데이터와 비슷하게 만들고, D는 G가 만들어낸 가짜 데이터와 실제 데이터를 구별하는 역할을 한다. 바닐라 GAN에서는 input으로 latend space에서 noise 데이터가 들어가지만, music domain transfer에서는 실제 음악 데이터가 input으로 들어간다. 본 논문은 서로 다른 두 장르의 MIDI 데이터를 사용해 하나는 input 하나는 targer 데이터로 각각 사용한다. 

MIDI 데이터를 쓴 이유는 다루기 쉽고 가장 깔끔해서 그런가, 실제 음악으로 이 transfer를 하고 싶은데 아쉬운 부분이다. 아마 결과 정확도에서 차이가 있지 않을까 싶다.

Architecture of model, CycleGAN with additional discriminators 

이제 위에 그래프를 통해 이 모델에서 사용된 CycleGAN 구조에 대해 이해해보자. CycleGAN은 기본적으로 A > B  / B > A 이렇게 양방향으로 G와 D가 작동을 한다. 각 state의 notation을 살펴보면,

G(A->B) : 장르 A를 B로 바꾸는 G

G(B->A) : 장르 B를 A로 바꾸는 G

D(A) : 장르 A인지를 판별하는 D

D(B) : 장르 B인지 판별하는 D

D(A,m), D(B,m) : Extra Discriminator, G가 high level feature를 학습할 수 있게 해줌

 

Dataset

본 논문에서는 실제 음원이 아닌 MIDI 데이터를 사용!

실제 음원의 드럼을 제외한 모든 트랙을 단일 트랙으로 합쳐서 사용 

따라서 악기가 너무 많거나 목소리가 들어간 곡은 제외 

추가적으로 변박이 있는 곡, 4/4 박자가 아닌 곡, 시작 비트가 0이 아닌 곡 필터링 

결국 네트워크에 들어가는 데이터는 이산화된 node 별 MIDI pitch 값과 time step으로 이뤄진 time X pitch Matrix

그럼, 우리는 실제 음원을 사용해야되는데.. 흠.. 음원을 미디화 해서 진행해야 하나

Idea

1. 음원 > 악기 분리 > 각각 transfer modeling(TimbreTron(얘는 음색 변형 위주), Symbolic Music Genre Transfer(얘는 pitch 변형 위주 & symbolic domain이라 실제 음원에선 어떻게 작동할지 모르겠네.. 

2. 음원 > symbolic 화 (MIDI) > 이 논문 그대로 적용