음원 분리 2분 가이드 — Demucs와 UVR Karaoke를 로컬에서 바로 돌리기

실측 기반 비교 — 설치, 실행, 처리 시간, 출력 파일까지 직접 돌려본 결과

직접 돌려본 실측 결과다. macOS Apple Silicon(CPU), Python 3.11 환경.

Demucs — 2줄이면 끝

설치:

pip install demucs torchcodec

torchcodec은 최신 torchaudio가 저장 시 필요로 한다. 없으면 ImportError가 나니까 같이 설치.

실행:

demucs song.mp3 --two-stems vocals

--two-stems vocals는 4-스템 대신 보컬/반주 2-스템만 출력한다. 노래방용이면 이게 더 편하다.

첫 실행 시 htdemucs 모델(~80MB)을 자동 다운로드한다. 인터넷 연결 필요.

출력:

separated/htdemucs/song/
├── vocals.wav       # 보컬 (리드 + 백킹 전부)
└── no_vocals.wav    # 반주 (보컬 완전 제거)

실측:

  • 10초 오디오 처리: ~10초 (CPU, Apple Silicon)

  • 모델 다운로드: ~80MB, 수 초

  • VRAM: GPU 없이 CPU로 돌아감

4-스템 분리가 필요하면:

demucs song.mp3
# → separated/htdemucs/song/{vocals,drums,bass,other}.wav

UVR Karaoke — 모델이 크지만 품질이 다르다

설치:

pip install "audio-separator[cpu]"    # CPU만
# 또는
pip install "audio-separator[gpu]"    # NVIDIA GPU 가속

실행:

audio-separator song.mp3 \
  --model_filename mel_band_roformer_karaoke_aufr33_viperx_sdr_10.1956.ckpt \
  --output_dir ./output

명령어가 길다. 모델 파일명을 통째로 적어야 한다.

첫 실행 시 913MB 모델을 자동 다운로드한다. 인터넷 속도에 따라 1~5분.

출력:

output/
├── song_(Instrumental)_mel_band_roformer_karaoke_aufr33_viperx_sdr_10.flac
└── song_(Vocals)_mel_band_roformer_karaoke_aufr33_viperx_sdr_10.flac

기본 출력이 FLAC이다 (무손실). WAV로 바꾸려면 --output_format wav.

실측:

  • 10초 오디오 처리: ~43초 (모델 로드 14초 + 추론 13초 + 저장)

  • 모델 다운로드: 913MB, 1~5분

  • 모델 로드: 14초 (매 실행마다)

실측 비교 표

Demucs UVR Karaoke
설치 명령 pip install demucs torchcodec pip install "audio-separator[cpu]"
실행 명령 길이 짧음 길음 (모델 파일명 필요)
모델 크기 ~80 MB 913 MB
첫 실행 다운로드 수 초 1~5분
처리 시간 (10초 오디오, CPU) ~10초 ~43초
모델 로드 시간 ~3초 ~14초
출력 포맷 WAV FLAC (기본)
백킹 보컬 제거됨 반주에 남음

결론: 뭘 써야 하나

빠르게 돌려보고 싶으면 Demucs. 설치도 간단하고, 명령어도 짧고, 모델도 작다. 보컬을 완전히 제거하고 싶을 때(리믹스, MR 만들기) 적합하다.

노래방 반주를 만들려면 UVR Karaoke. 모델은 크고 느리지만, 백킹 보컬이 반주에 남아서 훨씬 자연스럽다. 코러스가 있는 곡에서 차이가 확연하다.

실제로 코러스가 있는 곡(예: Queen — Bohemian Rhapsody)으로 테스트하면 차이를 바로 느낄 수 있다. Demucs는 코러스까지 빼서 반주가 텅 비고, UVR Karaoke는 코러스가 남아서 노래방 느낌이 난다.

Python 스크립트로 자동화

# demucs_test.py
import subprocess
import sys

def separate_demucs(input_path, output_dir="./separated"):
    cmd = ["demucs", input_path, "--two-stems", "vocals", "-o", output_dir]
    subprocess.run(cmd, check=True)
    print(f"출력: {output_dir}/htdemucs/")

# uvr_test.py
def separate_uvr(input_path, output_dir="./output"):
    from audio_separator.separator import Separator
    sep = Separator(output_dir=output_dir)
    sep.load_model(
        "mel_band_roformer_karaoke_aufr33_viperx_sdr_10.1956.ckpt"
    )
    files = sep.separate(input_path)
    print(f"출력: {files}")

if __name__ == "__main__":
    separate_demucs(sys.argv[1])  # 또는 separate_uvr

트러블슈팅

Demucs — ImportError: TorchCodec is required

최신 torchaudio(2.11+)에서 발생. pip install torchcodec으로 해결.

UVR — 모델 다운로드 실패

GitHub 릴리스에서 받는데, 네트워크 문제 시 수동 다운로드:

# HuggingFace에서 직접 다운로드
wget https://huggingface.co/jarredou/aufr33-viperx-karaoke-melroformer-model/resolve/main/mel_band_roformer_karaoke_aufr33_viperx_sdr_10.1956.ckpt
# 모델 디렉토리에 복사
cp mel_band_roformer_karaoke*.ckpt ~/.cache/audio-separator/models/

CUDA OOM (GPU 메모리 부족)

CPU 폴백:

# Demucs
demucs song.mp3 -d cpu

# UVR
audio-separator song.mp3 --model_filename ... --use_cpu

핵심 개념

1

Demucs 설치: pip install demucs torchcodec

2

Demucs 실행: demucs song.mp3 --two-stems vocals → vocals.wav + no_vocals.wav

3

UVR 설치: pip install "audio-separator[cpu]"

4

UVR 실행: audio-separator song.mp3 --model_filename mel_band_roformer_karaoke_...ckpt

5

비교: Demucs(80MB, 10초) vs UVR(913MB, 43초) — 간단한 건 Demucs, 노래방 품질은 UVR

사용 사례

노래방 반주 만들기 — UVR Karaoke로 리드 보컬만 제거 (코러스 유지) MR 만들기 — Demucs로 보컬 전체 제거 악기 연습 — Demucs 4-스템으로 특정 파트만 제거