곡 만들기 (MiniMax Music 3)
조사한 것 중 가장 최신의 오픈 곡 생성 모델, MiniMax Music 3를 사용합니다. 다른 후보와 라이선스 비교는 references/models.md를 참조하세요.
이 스킬의 디렉토리를 $SKILL로 표기합니다 (로딩 시 표시되는 Base directory).
전제 조건
- GPU 1장으로 동작합니다 (diffusers 버전). 필요한 VRAM은 기본 설정에서 약 24GB,
--offload cpu로 약 22GB,--offload stream으로 8GB(느림)입니다. - 동작 확인 완료: AMD Radeon AI PRO R9700 (32GB, ROCm 6.4의 PyTorch 2.9.1). 60초 곡이 약 5분, 실제 시간의 약 5배가 걸렸습니다. NVIDIA GPU에서는 아직 테스트하지 않았습니다 (공식적으로는 CUDA 가정).
- 가중치는 약 27GB입니다. 디스크 여유 공간을 먼저 확인하세요.
- 공식 고속 방법(SGLang-Omni)은 CUDA GPU 2장이 필요하므로 이 스킬에서는 사용하지 않습니다.
1. 환경 준비 (최초 1회)
이미 환경이 있다면 사용합니다 (클론 완료한 MiniMax-Music3 아래의 .venv* 등). 없으면 만듭니다.
git clone https://github.com/MiniMax-AI/MiniMax-Music3.git && cd MiniMax-Music3
uv venv -p 3.12 .venv && source .venv/bin/activate
# NVIDIA: uv pip install torch torchaudio
# AMD: uv pip install torch torchaudio --index-url https://download.pytorch.org/whl/rocm6.4
uv pip install "diffusers==0.41.0" transformers accelerate soundfile huggingface_hub
# SGLang 버전만 사용하는 파일은 다운로드하지 않습니다. --exclude는 패턴마다 붙입니다.
hf download MiniMaxAI/MiniMax-Music3 --exclude "qwen_7B/qwen_7B/model-*" \
--exclude flowmatching_vae.pth --exclude dav.pth --exclude "figures/*"
- 모델 카드에는 미병합 시대의 diffusers 커밋을 넣는 절차가 나와 있지만, 그렇게 하면
transformer를 읽을 수 없습니다. 병합된 릴리스(0.40.0 이후, 확인 완료 0.41.0)를 사용하세요. - Hugging Face 캐시(
HF_HOME)의 디스크가 가득 차면, 여유 공간이 있는 위치로HF_HOME을 지정하세요. HF_HUB_OFFLINE=1로 설정하면transformer읽기가 실패합니다. 설정하지 마세요.
2. 가사와 곡 설명 작성
song.json을 만듭니다.
{
"name": "yoru-no-machi",
"prompt": "Global Metadata: Japanese city pop, mid-tempo around 100 BPM, nostalgic night-drive mood that lifts into a bright chorus; polished 80s-inspired production. Vocal Details: warm female lead vocal singing in Japanese, airy in the verse, fuller with light harmonies in the chorus. Arrangement: intro with electric piano and slap bass; verse adds tight drums and muted guitar; chorus opens up with synth brass and lush pads; short outro on electric piano.",
"lyrics": "[intro]\n\n[verse]\n夜の街を ひとり歩く\nネオンの色が 揺れている\n\n[chorus]\nこのまま 朝まで\n君の声 探してる\n\n[outro]",
"duration": 180
}
- 곡 설명(
prompt)은 영어로 Global Metadata(장르, 템포, 감정의 흐름, 음색), Vocal Details(목소리 성별, 음색, 창법, 하모니), Arrangement(섹션별 악기 출입)의 세 부분으로 나누어 작성합니다. - 목소리 성별과 음색을 반드시 작성합니다. 작성하지 않으면 노래가 사라지고 반주만 나올 수 있습니다. 일본어로 노래하게 하려면
singing in Japanese도 작성합니다. - 자세히 쓰고 싶을 때는 MiniMax 공식 스킬
music-caption-rewriter를 사용할 수 있습니다 (npx skills add MiniMax-AI/MiniMax-Music3 --skill music-caption-rewriter, 또는 클론한skills/music-caption-rewriter를~/.claude/skills/로 복사). - 가사(
lyrics)는 일본어 한자・가나 그대로 작성해도 좋습니다 (확인 완료).[intro][verse][pre-chorus][chorus][bridge][instrumental][solo][outro]태그는 반드시 단독 행에 놓습니다. 태그와 같은 행의 가사는 무시됩니다 (스크립트가 감지하여 중단). - 1행은 짧게 하고, 같은 위치의 행은 글자 수를 맞춥니다. 섹션 사이는 빈 행으로 구분합니다 (곡 생성 모델 전반의 팁. MiniMax Music 3에서 효과를 비교하지는 않았습니다).
duration은 상한 초수(10~300)입니다. 모델이 그보다 일찍 끝낼 수도 있습니다.[intro]를 넣으면 전주가 길어지기 쉽습니다 (60초 시제에서 약 25초).- 실제 곡・가수 이름을 내세워 모방하지 마세요 (라이선스 금지 사항. 아래 참조).
3. 생성
python $SKILL/scripts/generate.py song.json --out-dir songs/ --seeds 1 2 3
- 같은 설정이라도 seed에 따라 다른 곡이 됩니다. 2~3안을 만들어 사용자에게 듣고 선택하게 합니다. Claude는 소리를 들을 수 없으므로, 좋고 나쁨을 스스로 판단하여 결정하지 마세요.
- 시간이 걸리므로 (R9700에서 실제 시간의 약 5배 + 로딩), 백그라운드에서 실행하고 완료를 기다립니다.
- 출력:
<name>-seed<N>.wav(44.1kHz 스테레오), 동명의.json(seed, 길이, 프롬프트, 가사, 소요 시간),<name>-lyrics.txt(태그를 제외한 표시용 가사). - 가사가 제대로 불렸는지는 음성 인식으로 확인할 수 있습니다 (
faster-whisper필요). 전주 부분에서는 Whisper가 가사를 반복하는 오인식을 하기 쉽습니다.
python $SKILL/scripts/check_lyrics.py songs/*.wav --language ja
4. MV로 만들기
선택한 곡은 biim-motion 스킬의 MV 모드에 그대로 전달합니다.
assets.music: 선택한 WAVmusicLyrics:<name>-lyrics.txt의 내용 (태그 없음)musicMood:prompt의 분위기를 일본어로 짧게 정리한 것- MV의
reports/delivery.md채택 자료에 「MiniMax Music 3로 생성 (seed,prompt, `lyrics」)」를 기록합니다.
라이선스 (MiniMax-Music3 Community License)
원문은 https://huggingface.co/MiniMaxAI/MiniMax-Music3/blob/main/LICENSE 를 참조하세요. 요점만 적습니다 (법적 조언은 아닙니다).
- 상용 제품・서비스에서 사용하려면, 그 화면에 「MiniMax-Music3」라고 눈에 띄게 표시해야 합니다. 연간 매출이 2000만 달러를 초과하는 경우, MiniMax의 서면 허가가 별도로 필요합니다.
- 부속된 Acceptable Use Policy를 준수하고, 제3자의 지적 재산권을 침해하지 않습니다.
- 상용으로 사용할 예정이 있을 때는 생성 전에 사용자에게 이 조건을 알려야 합니다.