나의 고양이 테마송 만들기 — 가사, 멜로디, 노래 목소리 모두 AI로, 모두 로컬에서
요약
로컬 환경에서 ACE-Step 1.5를 활용해 가사, 멜로디, 보컬이 포함된 완곡을 생성하고, 다양한 AI 모델을 결합하여 뮤직비디오까지 제작하는 과정을 다룹니다.
핵심 포인트
- ACE-Step 1.5의 Planner LM이 노래의 구조를 미리 설계하여 품질을 높임
- 오디오 렌더링보다 AI의 작곡 구상(Planning) 단계에서 더 많은 시간이 소요됨
- Whisper, AnythingV5, LTX-2.3 등 여러 AI 도구를 통합하여 MV 제작 가능
- DGX Spark 환경에서 ACE-Step 1.5의 안정적인 로컬 구동 확인
서론
Day 16!
오늘의 실험은 우리 가족 고양이를 위한 테마송을 만드는 것입니다. 그리고 이것이 단순히 일반적인 AI 음악인지, 아니면 정말 그들의 노래처럼 느껴지는지 확인해 보는 것이죠.
저는 로컬에서 구동할 수 있는 음악 생성 AI인 ACE-Step 1.5를 사용했습니다 (마치 집에서 돌릴 수 있는
Hand ACE-Step 1.5 XL에 가사와 스타일 프롬프트(경쾌한 J-pop, 여성 보컬, 일본어)를 입력했더니, 일본어 노래가 포함된 3분 길이의 완곡이 완성되었습니다.
속도: 오디오는 10초면 나오지만, "작곡"에는 8분이 걸립니다
흥미로운 점은 시간 배분이었습니다.
| 제작 내용 | 모드 | 소요 시간 |
|---|---|---|
| BGM (90초, 보컬 없음) ×4 | quick | 총 40초 (각 약 10초) |
| ... | ... | ... |
"작곡 플래너 (composition planner)"란 무엇인가? = ACE-Step 1.5에 내장된 언어 모델 (LM)입니다. 이 모델은 오디오를 렌더링하기 전에 노래의 청사진(구조, 메타데이터)을 미리 구상합니다. 품질은 더 좋아지지만, 이 구상 과정에서 시간이 소요됩니다.
보너스: 뮤직비디오(MV)도 만들었습니다
제작 과정: Whisper가 가사의 타이밍을 전사(transcribe)하고 → 이미지 AI (AnythingV5)가 캐릭터와 배경을 생성하며 → 비디오 AI (LTX-2.3)가 캐릭터를 애니메이션화하고 → rembg가 이를 잘라내어 자막과 함께 배경 위에 합성합니다 (아래 섹션에서 더 자세히 다룹니다).
솔직히 말해서, 영상은 꽤 기괴하게 나왔습니다. 하체가 갑자기 꼬리로 변하거나 눈빛이 약간 야생적으로 변하는 등 약간 불안한 느낌을 줍니다. 이 부분은 "나중에 개선할 목록"에 넣어두었습니다.
오늘의 요약
- 느린 부분은 소리가 아니라 "생각"하는 과정입니다: 오디오 자체는 약 10초 만에 렌더링되지만, 긴 대기 시간은 AI가 노래의 구조를 계획하는 데서 발생합니다.
- 기존 도구들의 결합: 애니메이션 스타일 이미지 (11일 차) + Whisper (14일 차) + 비디오 생성 (15일 차) 기술이 하나의 뮤직비디오(MV)로 통합되었습니다.
상세 정보
:::details 환경 및 모델
- 머신 (Machine): DGX Spark (128GB 통합 메모리)
- ACE-Step 1.5:
uv를 사용하여 공식 리포지토리 (official repo)에서 설정. DGX Spark (ARM64 + CUDA 13)는 공식 지원 대상 목록에 포함되어 있으며, 문제없이 실행되었습니다. - 모델 설정 (Model setup): DiT는
acestep-v15-xl-turbo(4B, 8 steps)이며, 플래너 LM (planner LM)은 4B 버전입니다. 총 다운로드 용량은 약 36GB입니다. - 생성 중 피크 메모리 (Peak memory): 약 27GB. REST API 서버를 통해 생성되었습니다 (재현이 더 용이함).
- MV 측면: ComfyUI (LTX-2.3 22B distilled fp8) + AnythingV5 (캐릭터 및 배경) + rembg 2.0.76 (누끼 따기, 애니메이션 모델은 isnet-anime) + Whisper large-v3 (타이밍) + ffmpeg (조립) :::
:::details 전체 가사와 스타일 프롬프트 (Full lyrics and the style prompt)
스타일 프롬프트 (Style prompt, Caption):
upbeat J-pop, energetic and heartwarming, female vocal, bright synth,
acoustic guitar, catchy chorus, 128 bpm, Japanese lyrics
가사는 [Verse] 및 [Chorus]와 같은 구조적 태그와 함께 전달됩니다 (가사는 일본어이며, (にゃー) 부분은 백킹 보컬로 불리는 야옹 소리 애드리브입니다):
[Intro]
(にゃー)
...
공식 문서의 팁: 세밀한 스타일 제어는 캡션 (Caption)에 넣고, 가사 태그 (lyric tags)는 단순하게 유지하세요.
:::
:::details MV가 제작된 방식 (상세 단계)
- 인트로부터 두 번째 후렴구까지 사용 (~70초). Whisper large-v3로부터 추출한 줄 단위 타이밍 사용 (가사를 이미 알고 있으므로, 간간이 발생하는 오인식은 괜찮음 — 타임스탬프만 사용함)
- 20개 이상의 컷. 가사 한 줄 = 한 컷, 각 가사에 어울리는 움직임을 가진 클립을 할당
- 캐릭터 이미지는 단일 프레임임: 11일 차에 만든 나의 "애니메이션화된 고양이"를 이미지 AI (AnythingV5)로 마스코트로 다시 그림. 이를 비디오 AI (LTX-2.3)에 전달하여 애니메이션화함. 클립당 약 30초; 움직임은 평이한 요청("고개를 돌리다", "걷기 사이클" 등)으로 설명함
- 누끼 합성 (Cutout compositing)은 프레임 단위로 진행: rembg (isnet-anime)로 캐릭터를 잘라냄 → 서서히 줌/팬(zoom/panning)되는 배경 위에 합성 → 자막 삽입 → 24fps로 재인코딩
- 컷 내에서 캐릭터의 크기를 고정하는 것이 중요했음. 프레임별 실루엣에 맞추지 않으면 늘어나는 순간 캐릭터가 작아짐 (고생하며 배운 점) :::
:::details 주의할 점 (Gotchas)
- 돌발 동작은 마지막에 나타남: LTX-2.3에 "갑자기 달려 나가라"고 요청했을 때, 움직임이 클립의 마지막 0.5초에 나타나는 경향이 있었음. 사용하는 세그먼트를 이동시켜 해결함
- 원하는 결과물의 종횡비(aspect ratio)에 맞춰 입력 이미지를 제공할 것: 처음에는 세로형 (512×768) 캐릭터 이미지를 가로형 (768×512) 생성에 넣었는데, 모든 클립이 귀가 잘린 상반신 줌인 형태로 나옴. 이를 해결하기 위해 입력 이미지를 가로형 전신 이미지로 다시 제작함. 비디오 AI는 입력 이미지의 구성을 매우 강하게 물려받음
- 플래너(planner)가 예상보다 느리게 실행되었을 수 있음: 로그를 조사해 보니, 언어 모델(LM)의 빠른 실행 컴포넌트인 vLLM이
Python.h누락으로 인해 컴파일에 실패한 것으로 보이며, 이로 인해 조용히 느린 경로로 전환되었을 수 있음 (16일 차에 원인을 완전히 파헤치지는 못함). 15일 차에도 동일한 근본 원인(python3.12-dev미설치)을 발견했음 — Spark에서 반복될 수 있는 주의 사항임 :::
:::details 라이선스 참고 사항
- ACE-Step 1.5: 코드와 가중치(weights) 모두 MIT 라이선스. 상업적 이용 가능
- Planner LM (4B, Qwen3-4B 기반): 역시 MIT 라이선스
- 생성된 음악은 공식 문서에서 상업적 이용이 명시적으로 허용됨 (학습 데이터는 라이선스가 확보되었으며, 로열티 프리(royalty-free) 및 합성 데이터임)
- MV(뮤직비디오) 측 도구들 (LTX-2.3, AnythingV5, rembg, Whisper)은 내가 이미 11~15일 차에 검증을 마친 것들임 :::
출처 (Sources)
맺음말 (Outro)
가사, 멜로디, 노래, 그리고 뮤직비디오까지 — 모두 AI로, 모두 내 개인 컴퓨터에서 해냈습니다. 다음에 만나요!
읽어주셔서 감사합니다!
100ExperimentsWithDGX #LocalLLM
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기