오픈소스 음원 분리 엔진 Spleeter

지난 11월 초, 프랑스의 온라인 음악 스트리밍 회사인 deezer에서 딥 러닝 기술을 활용한 음원 분리 엔진 spleeter를 개발하여 무료로 배포하였습니다. Spleeter를 이용하면 음악 파일로부터 보컬, 드럼, 베이스 등의 각 파트를 손쉽게 분리해낼 수 있습니다. 기존의 음원 분리 작업 방식은 고가의 소프트웨어를 이용해야 함은 물론이고 많은 시간을 들여야 깔끔하게 분리해낼 수 있었지만, spleeter는 몇 개의 파트로 분리하고 싶은지만 명시하면 자동으로 각 파트를 분리해줍니다. Spleeter는 다음과 같은 세 가지 모드의 음원 분리를 지원합니다. 2 stems: 보컬 / 악기 연주 4 stems: 보컬 / 드럼 / 베이스 / 나머지 악기 5 stems: 보컬 / 드럼 / 베이스 / 피아노 / 나머지 악기 딥 러닝에 기반한 음원 분리 엔진이기에 네트워크를 학습할 때 사용한 분리 모드 세 가지만 지원하는 것으로 보입니다. 기타, 바이올린 등 다른 악기 파트도 분리하고 싶다면 네트워크를 새로 학습시킬 수는 있지만 많은 양의 음악 데이터와 학습 시간이 필요하리라 예상됩니다. Deezer 연구팀에서는 의료 영상 분석에 사용되었던 U-net을 이용하여 spleeter를 개발하였습니다. U-net은 위 그림과 같은 구조를 가지고 있으며, 이미지를 입력받은 후 해당 입력에 대한 분석 정보를 담은 결과 이미지를 출력으로 내보냅니다. 아래와 같이 세포 이미지를 입력받아서 세포가 있는 부분만 나타내는 출력 이미지를 내보내는 식입니다. 원래는 이미지를 대상으로 한 네트워크였지만, spleeter에서는 음악을 입력받고 원하는 파트별로 분리된 음악을 출력함으로써 음원 분리를 수행하게 됩니다. 학습을 위한 데이터셋으로는 MUSBD 데이터셋 및 Bean 데이터셋을 사용하였다고 합니다. MUSBD는 공개된 음원 분리 데이터셋이며, Bean 데이터셋은 deezer의 자체 데이터셋으로 미공개입니다. 학습된 엔진 및 소스코드는 깃허브에 공개되어 ...