Introduction
mixing은 멀티 트랙이 보편화된 작곡 환경에서 각 트랙간의 레벨 밸런스를 맞추고 여러 가지 소리들을 하나의 마스터 트랙이 모아 섞는 작업을 의미한다.(위키참고)
demixing이란 mixing의 reverse 작업으로 합쳐진 하나의 파일에서 보컬, 드럼, 베이스 등등으로 구분하여 추출하는 작업이라고 생각하면 쉽다.
개인적으로 만들고 있는 영상이 여러명의 영상을 합친 영상인데, 노래소리가 중복해서 들려서 싱크 맞추기가 상당히 까다로운 상태이다.
이를 해결하기위해 생각한 방법이 만약 음성파일에서 노래소리를 제거하고 음성만 추출할 수 있다면, 싱크를 어느정도만 맞춰도 노래가 서로 공명하지 않고 깔끔한 소리가 날 수 있을 것 같아서 시도해봤다.
Method & Material
알고리즘이나 코드를 찾을 때 애용하는 sota browser에서 키워드를 몰라서 separation, music 등등 찾다가 발견한 키워드가 Music Source Separation이다.
Papers with Code - Browse the State-of-the-Art in Machine Learning
7208 leaderboards • 3006 tasks • 5863 datasets • 68524 papers with code.
paperswithcode.com
찾아보니 데이터셋중에 리더보드에 모델이 가장 많은 데이터셋이 MUSDB18이라는 데이터셋이다.
점수는 다음과 같고 비교에 사용된 metric은 SDR이다.
Source-to-Distortion Ratio (SDR)
SDR is usually considered to be an overall measure of how good a source sounds.
(소스 대 왜곡 비율, 일반적으로 소스 사운드가 얼마나 좋은지에 대한 전반적인 척도)
자세한 계산식은 모르지만, 높을수록 좋다고 보면 된다.
이 데이터셋에서는 기본적으로 4가지(목소리, 드럼소리, 베이스소리, 나머지)로 소리를 구분하고 있다.
내가 필요한 모델은 목소리를 가장 잘 구분해주는 모델이기 때문에, 리더보드에서 평균값 대신 목소리가 구분 점수가 9.00점으로 모든 모델중에 가장 높은 모델인 MDX-Net을 선택했다.
그리고 KUIELab은 찾아보니 고려대학교 지능공학(Intelligence engineering) 연구실이다.
GitHub - kuielab/mdx-net: KUIELAB-MDX-Net got the 2nd place on the Leaderboard A and the 3rd place on the Leaderboard B in the M
KUIELAB-MDX-Net got the 2nd place on the Leaderboard A and the 3rd place on the Leaderboard B in the MDX-Challenge ISMIR 2021 - GitHub - kuielab/mdx-net: KUIELAB-MDX-Net got the 2nd place on the Le...
github.com
prediction을 하기위해 데이터를 준비할 때, 이 코드에서 요구하는 디렉토리구조가 조금 희안했지만, 잘 짜맞추기 된 것 같다.
또한 prediction 모델이 onnx로 되어있어, 저번에 정리 했던 onnx Runtime을 이용해 실행된다.
Result
mixture.wav
vocal.wav
drum.wav
bass.wav
other.wav
만족스럽다.
잘따진다.
보컬에서 살짝 노래소리가 들리거나, 악기에서 살짝 목소리가 들리긴하지만 내기준에서 매우 만족스러운 부분이다.
Conclusion & Discussion
갑자기 생각나서 진행된 작업인데 잠깐 살펴봤었던 onnx나 hydra같은 것들이 이용된 프로젝트로 mlops 내용이 들어가 있어서 신기했던 경험이었다.
중간에 라이브러리 & python 버전 문제(requirement.txt를 이용했지만 문제발생)로 삽질하는 시간이 꽤 길었지만 그래도 결과가 좋아서 매우 만족스럽다.
음악관련해서 앞으로 진행할 작업이 몇 개 더 남아있기때문에, 시간이 나는대로 기존에 하던 프로젝트들 마무리하고 작업에 들어갈 것이다.
'인공지능 > Toy Projects' 카테고리의 다른 글
Multi-GPU Deep Learning_1 (using DDP) (0) | 2022.05.12 |
---|---|
가수의 목소리 변경_1 (Singing Voice Conversion) (0) | 2022.05.09 |
현실의 춤을 가상공간으로 매핑하기_관 (using 3D human pose estimation) (0) | 2022.04.13 |
현실의 춤을 가상공간으로 매핑하기_1 (using 3D human pose estimation) (0) | 2022.04.06 |
python에서 Semantic segmentation을 이용한 누끼따기_完 (remove background, semantic segmentation using python) (0) | 2022.03.30 |