음악 AI에서 자주 다루는 작업 3가지
1. 소스 분리 (Source Separation) : 여러 악기가 섞인 음악에서 악기별로 분리 (예 : 드럼만 추출하기, 보컬 제거하기)
2. 합성 (Synthesis) : 악보나 텍스트 등으로부터 음악을 생성(예 : “피아노로 도레미” → 실제 소리 만들기)
3. 생성 (Generation) : 텍스트/분위기로부터 새 음악 만들기(예 :“잔잔한 피아노곡” → 음악 생성)
이 중에서 오늘 다룰 것은 소스 분리 (Source Separation), 음악을 구성하는 악기들을 따로따로 떼어내는 기술이다. 특히 Demucs 계열 논문이 바로 이걸 잘하는 모델이다.
Demucs
Demucs는 Facebook AI가 만든 음악 분리 모델이다. 하나의 음악 파일에서 보컬, 드럼, 베이스, 기타 등을 각각 따로 분리해준다. 예를 들어, 원본 음악을 보컬 + 드럼 + 기타 + 키보드 각각 따로 저장해준다. Demucs는 많은 논문/대회에서 Benchmark처럼 사용될만큼 성능이 좋고, GitHub에 잘 정리된 PyTorch 쉬운 코드가 있으며, Pretrained 모델을 사용할 수 있어 시작하기 쉽다는 장점이 있다. Demucs에는 Demucs v3, Hybrid Demucs, HTDemucs 세 가지 종류가 있다.
Demucs는 시간적 구조와 주파수 정보를 동시에 잘 처리한다. Demucs의 구조는 다음과 같다 :
입력 (혼합된 음악)
↓
[Encoder] ← 음악을 작고 중요한 특징들만 남기는 단계
↓
[Separator] ← 여기서 각각 악기별로 분리 (LSTM이나 Transformer 사용)
↓
[Decoder] ← 다시 소리로 복원
↓
출력 (보컬, 드럼, 기타 등 분리된 오디오)
Demucs가 처리를 잘 하는 이유는 무엇일까?
1. LTMS / Transformer 사용 : 음악은 시간에 따라에 따라 변하는데, 이 흐름을 잘 기억함
2. Waveform 직접 입력 : 일부 모델은 Spectrogram을 쓰는데, Demucs는 파형(raw audio)을 직접 처리함
3. 신호처리 + 딥러닝 결합 (HybridDemucs) : 전통 DSP 기술과 AI 기술을 함께 써서 성능이 더 좋음
* DSP - Digital Signal Processing (디지털 신호 처리) : 음악, 음성, 이미지의 숫자(신호)를 수학적으로 분석하거나 바꾸는 기술
간단한 실습
1. Demucs 설치하기 - 방법 (1) : Google Colab
설치가 필요 없고, GPU를 제공하며, 안전하고 빠르다. Demucs Colab 링크(비공식)에서 "런타임 → 모두 실행"을 누르면 끝이다.
1. Demucs 설치하기 - 방법 (2) : 내 컴퓨터에 직접 설치 (Mac/Linux/Windows 공통)
Python 3.8-3.10 (Anaconda 또는 Miniconda 추천), Git, ffmpeg이 필요하다.
# 1. 가상환경 만들기 (선택)
conda create -n demucs python=3.9
conda activate demucs
# 2. Git으로 코드 다운로드
git clone https://github.com/facebookresearch/demucs.git
cd demucs
# 3. 필요한 라이브러리 설치
pip install -r requirements.txt
2. 음악 분리 실행하기
준비한 음악 파일(예 : song.mp3)을 demucs 폴더 안에 넣고 아래처럼 실행한다.
python -m demucs song.mp3
결과로 separated/mdx_extra/song/ 폴더에 vocals.wav, drums.wav, bass.wav, other.wav 와 같이 분리된 음악 파일이 생성된다.
3. 기타 간단한 실습 아이디어
음악을 다운로드하여 보컬만 추출해보거나, 특정 악기 소리를 들어보고 비교 분석을 할 수 있다. 또는 드럼만 크게 설정하고 나머지는 작게 설정하는 등 새로운 믹스를 만들어 볼 수도 있다.
Tip. 더 좋은 모델로 실행하고 싶다면
python -m demucs --model htdemucs song.mp3
htdemucs가 가장 최신이자 성능이 좋은 모델이다.
'IT Expertise > Deep Learning' 카테고리의 다른 글
[Coursera] 2 신경망과 로지스틱 회귀 | Andrew Ng (한국어 자막 스크립트) (2) | 2025.03.22 |
---|---|
[Coursera] 1 딥러닝 소개 | Andrew Ng (한국어 자막 스크립트) (2) | 2025.03.21 |
댓글