연구기간
09 / 2022 ~ 11 / 2022
연구 목적
악기의 음색을 변환해주는 Instrument Style Transfer의 구현
Audio Style Transfer의 학습 메커니즘
Image Style Transfer와 유사한 방법으로 모델을 훈련
- Style과 Content 데이터를 STFT를 활용하여 Spectrogram을 생성
- Content 데이터를 Style 데이터의 gram matrix와의 loss를 Style model의 각 layer의 loss 총합을 최소화하는 방향으로 학습
- 학습된 Spectrogram을 다시 waveform으로 변환하여 출력
데이터
- Audio Style Transfer에서 사용된 Style.wav / Content.wav
- 직접 녹음한 일렉기타 Clean tone 오디오 / 직접 녹음한 일렉기타 Overdrive tone 오디오
- Youtube에서 가져온 La campanella 바이올린 오디오 / Youtube에서 가져온 La campanella 피아노 오디오
실험
- Conv1d → Conv2d로 변경시도
- Model의 Layer 깊이와 Weight의 조정
- Image Style Transfer와 유사하게 Loss를 Content Loss + Style Loss로 변경
- 데이터 전처리 변경
- Style / Content 데이터의 진폭 변경
- Mu-Law Encoding
- Resampling
- 입력 데이터의 변경
시도해보려 했던 것
- 코랩 환경에서 실험을 진행하였기 때문에 사용가능한 파라미터의 크기가 제한적이어서 다른 환경에서 더 Deep한 모델을 구성하여 실험해보기
- Content와 Style 두 데이터의 Tempo를 같게 만들어 학습 시켜보기
연구 결론
- 사람의 귀는 눈에 비해서 작은 차이에도 쉽게 불편함을 느껴 그 차이점을 빠르게 인지하여 오디오 데이터에 대해서 Style transfer를 적용하기 위해선 이미지보다 더 정교하게 이를 변형할 필요가 있음
- 사람이 보통 2개의 오디오를 같이 들으면 이 오디오가 섞인 것으로 인지하는 것이 아니라 2개의 다른 오디오가 동시에 재생되는 형태로 인지하여 Audio Style Transfer를 퀄리티가 높게 구현하기 위해서는 더 정교한 작업이 필요해보임
연구하면서 참고 했던 References
회고
- 직접 녹음한 연주를 데이터로 사용하기에는 전문가가 녹음한 것이 아니라 데이터 자체에 노이즈가 있을 수 있고 같은 멜로디를 연주했다고 하더라도 전공자만큼 일정한 음과 박자로 데이터를 만들기 어려워 입력 데이터로 사용하기에 한계점이 많다고 생각한다
- Youtube에 있는 같은 곡에 대해 다른 악기가 연주한 곡을 데이터로 사용하려면 두 오디오 데이터에 대해서 각 음이 나오는 시점에 대한 Alignment가 필수적으로 적용되어야 된다고 생각한다
- Spectrogram을 Image처럼 2D convolution을 적용하려면 Spectrogram에 더 알맞는 kernel size와 stride를 적용해야 의미가 있을 것 같다
- Style/Content의 데이터를 직접적으로 변경하기 보단 Style/Content 데이터의 진폭을 모델을 통해서 하나의 feature로 추출하여 사용하는 것이 Style transfer의 성능을 해치지 않으면서 퀄리티를 높일 수 있을 것 같다
- Resampling을 통한 Sampling rate를 작게 하면 anti-aliasing 같은 문제가 발생할 수 있을 것 같다
- 사람의 귀는 눈에 비해서 더 민감하여 작은 차이점도 쉽게 알아챌 수 있어 더 정교한 모델이 필요하고 일반적으로 파라미터의 개수가 많은 모델이 더 좋은 성능을 낼 가능성이 높아 큰 모델에서의 훈련이 필요하다고 생각한다
정리가 잘 된 글이네요. 도움이 됐습니다.