시 한 편을 노래로 — 내 PC에 YuE2를 깔고 Claude Code로 작곡 도구 만들기

Ollie · 문과생도 AI · · 좋아요 0 · 답글 0

연재 문과생도 AI 시즌 4 6/6편

Claude Code에 "YuE2 설치해줘" 한마디로 시작해, 무료 오픈소스 AI 작곡 모델을 집 PC에 설치하고 아해 김태형 님의 시 두 편을 파두·조선 힙합·클래식 소나타·EDM 노래 4곡으로 만들었습니다. 가사가 빠지는 문제는 받아쓰기 검사로 잡았고, 전 과정을 스킬 하나로 묶어 지금은 휴대폰에서 시만 보내면 MP3가 돌아옵니다. 완성된 노래는 아래 "결과"의 링크로 바로 들을 수 있습니다.

소개

시니어 대학의 한분께서 많은 시를 쓰셔서, 시를 원하는 장르의 노래로 만들어, 휴대폰에서 바로 듣게 MP3로 만들어 보는 것이었습니다.

그동안 찬양 시리즈 수백 곡을 Suno로 만들어 왔고, 내 PC에서 무료로 돌릴 수 있는 대안이 궁금했습니다. 마침 2026년 9월 오픈소스 작곡 모델 YuE2가 공개됐고, 개발팀 비교 자료에서 Suno v5와 비슷한 점수를 받았다고합니다. 집에 있는 작업용 PC(RTX A6000 48GB)라면 무료로 무제한 돌릴 수 있겠다고 생각했습니다.

직접 코드를 짜지 않고, Claude Code(데스크탑 앱)에게 설치부터 작곡, 검증, 도구화, 공유까지 맡겨 보는 것이 두 번째 목표였습니다. 이 글도 Claude가 대화 기록을 바탕으로 정리했습니다.

진행 방법

모든 작업은 Claude Code에 한국어로 짧게 말하고, Claude가 명령 실행·코드 작성·검사를 맡는 방식으로 진행했습니다.

도구

역할

Claude Code (데스크탑 앱, Opus 5.5)

설치, 오류 수정, 작곡 실행, 검사, 스킬·문서 제작

YuE2 (YuE2-3B + YuE2-Vae)

가사와 스타일 문구로 노래 생성 (48kHz 스테레오)

faster-whisper large-v3

생성된 노래를 받아써서 가사 누락 검사

ffmpeg

FLAC을 320kbps MP3로 변환

Claude 모바일 앱 (Remote Control)

휴대폰에서 데스크탑 세션에 접속해 MP3 받기

구글 드라이브 데스크탑 앱

완성된 MP3를 올려 공유 링크 만들기

1단계. 시스템 점검과 설치

프롬프트: YuE2 설치해줘. 내 시스텀 점검하고

Claude가 그래픽카드(RTX A6000 48GB), CPU, 메모리(256GB), 드라이브별 여유 공간을 점검하고 공식 문서를 찾아 읽었습니다. YuE2는 공식적으로 Linux만 지원하지만, 필요한 패키지가 Windows에서도 돌아갈 수 있다고 판단해 C:\AI\YuE2에 Python 3.12와 PyTorch 2.10(CUDA 12.8)으로 설치했습니다.

2단계. 시를 노래로

프롬프트 (파두): 다음 내용에 맞는 파두 스타일 노래는 어떤가? Mp3 노래 다운하게 만들어줘. + 시 「김씨가 너무 많아서」 전문

프롬프트 (조선 힙합): 다음 내용에 맞는 조선 힙합스타일 노래는 어떤가? Mp3 노래 다운하게 만들어줘. 여기서 듣게 받게해줘 + 시 「우리 집」 전문

Claude는 장르를 악기·보컬·분위기·BPM을 담은 영어 스타일 문구로 풀고, 시에 [Verse]·[Chorus] 같은 구조 태그를 붙여 YuE2에 넘겼습니다.

{
  "style": "Korean, Joseon hip hop, gugak meets hip hop like Leenalchi, janggu and buk drums, gayageum riffs, daegeum and piri melody, boom bap beat, playful male rap with pansori style chant, joyful, rustic countryside, 92 BPM",
  "lyrics": "[Verse]\n앞뜰에는 꽃밭\n뒤뜰에는 텃밭\n꽃 마당엔 엄마\n채소밭엔 아빠\n\n[Chorus]\n앞뜰에는 꽃내음\n뒤뜰에는 거름 내음\n채송화엔 노랑나비\n장대 끝 고추잠자리",
  "cot": "full"
}

3단계. 가사 누락 발견과 검사 체계

프롬프트: 준 가사를 다 읽고 노래로 만들지 못했어. 주어진 가사를 다 노래로 만들어. 이번에는 classic sonata 형식으로 만들어줘.

Claude가 받아쓰기로 확인해 보니 조선 힙합 곡은 8줄 중 앞 4줄만 반복하고 후렴 4줄은 한 번도 부르지 않았습니다(원문 일치율 31%). YuE2가 먼저 짠 악보에서 후렴 멜로디가 음 4개뿐이었기 때문입니다. 그래서 한 곡을 4번 생성하고, 받아쓰기를 원문과 대조해 가장 잘 부른 버전을 고르는 방식으로 바꾸었습니다.

4단계. 원하는 스타일 그대로 넣기 (EDM)

프롬프트: 여기서 새로운 노래 스타일 얘기해도 만들어 주나? + 아래 스타일 문구, 이어서 가사는 전에 쓰던 + 「우리 집」

Original dark cinematic melodic EDM and progressive house, 126 BPM. Emotional minor piano, atmospheric pads, filtered pluck synth, and an original addictive four-note hook repeated throughout. Huge four-on-the-floor kick, punchy drums, deep warm sub-bass, thick rolling synth bass, sidechain pumping, crisp snare, offbeat hi-hats, risers, bright arpeggios, wide supersaw leads, and a clean explosive festival drop.
Clear emotional female lead vocal, warm and slightly breathy but powerful, confident and expressive Korean diction, simple short Korean lyrics, memorable repeated chorus hook, layered female harmonies, no fast rap. Dark night-drive mood, lonely but hopeful, futuristic city lights, powerful and euphoric. No trot, orchestra, choir, or imitation of existing melodies, lyrics, artists, or vocals.

5단계. 스킬로 묶기

프롬프트: 스킬을 만들어줘.

Claude가 지금까지의 수작업을 yue2-song-maker 스킬로 정리했습니다. 이제는 시와 스타일만 보내면 아래 과정이 한 번에 돈니다.

  1. 시 원문 줄만으로 가사 배치 (새 가사는 지어 넣지 않음)

  2. 4개 버전 생성 (모델은 한 번만 불러옴)

  3. 받아쓰기로 가사 일치율 계산

  4. 일치율이 가장 높은 곡을 MP3로 변환해 다운로드 카드로 전송

C:\AI\YuE2\.venv\Scripts\python.exe make_song.py --request uri_jip_edm.json --out C:\AI\YuE2\outputs\uri_jip_edm --mp3-name "우리 집_EDM"

6단계. 휴대폰에서 쓰기

프롬프트: 휴대폰으로는 어떻게 연결해?, 지금 폰인데 리모트 컨트롤 연결돼 있나?

데스크탑 앱의 Remote Control로 이 세션을 claude.ai 계정에 연결하면, 휴대폰 Claude 앱에서 시를 보내고 MP3를 받을 수 있습니다. 작곡은 계속 데스크탑 그래픽카드가 합니다.

결과

노래 5곡을 만들었고, 여러 버전에서 고르기 시작한 뒤로는 시의 8줄을 모두 부른 곡을 얻었습니다. 곡 이름을 누르면 구글 드라이브에서 바로 들을 수 있습니다.

들어 보기

가사

스타일

길이

가사 결과

우리 집 (EDM)

아해 김태형 「우리 집」

다크 시네마틱 EDM, 여성 보컬, 126 BPM

2분 49초

4개 중 선택, 8줄을 두 번 모두 부름 (일치율 84%)

우리 집 (클래식 소나타)

같은 시

클래식 예술가곡, 소프라노, 실내악, 84 BPM

2분 8초

4개 중 선택, 8줄 모두 (일치율 81%)

우리 집 (조선 힙합)

같은 시

국악 퓨전 힙합, 장구·가야금, 92 BPM

1분 23초

1번 생성, 8줄 중 앞 4줄만 부름 (일치율 31%)

김씨가 너무 많아서 (파두)

아해 김태형

파두, 포르투갈 기타, 남성 보컬, 66 BPM

2분 30초

1번 생성, 검사 전

주님과 함께 걷는 이 길 (피아노 워십)

Claude 작사 (한국어 테스트)

잔잔한 피아노 워십, 남성 보컬, 72 BPM

2분 15초

1번 생성, 검사 전

가사 일치율은 받아쓰기가 반복까지 포함해 원문을 순서대로 따라간 비율입니다. 버전별 비교 (같은 가사·스타일, seed만 다름):

곡

버전

길이

일치율

들어린 문제

EDM

seed111 (선택)

2분 49초

84%

"거름 내음"이 흐림

EDM

seed222

3분 23초

80%

"꽃내음"이 "꽃매운"으로 들림

EDM

seed333

2분 22초

72%

1회차 후렴이 무너짐

EDM

seed444

3분 18초

65%

"꽃 마당엔 엄마"를 다른 말로 부름

소나타

seed404 (선택)

2분 8초

81%

"고추잠자리"가 흐림

소나타

seed101

1분 36초

72%

재현부에서 2줄 건너뜀

소나타

seed303

1분 43초

47%

발음이 많이 뭉개짐

소나타

seed202

1분 55초

43%

앞 1분이 거의 비어 있음

속도는 노래 1초에 계산 1~1.5초 정도로, 2~3분짜리 4개 버전과 검사까지 10~15분이 걸립니다. YuE2 자체는 무료라 만드는 곡 수에 제한이 없습니다.

배운 점과 나만의 꿀팁

가장 큰 배움은 "한 번 만들고 끝"이 아니라 "여러 개 만들고 검사해서 고르기"가 오픈소스 작곡 모델의 제대로 된 사용법이라는 점입니다. YuE2 개발팀의 비교 점수도 2개, 8개 중에서 고른 결과였습니다.

  • 가사는 귀로 확인하기 전에 받아쓰기로: Whisper로 받아적으면 어느 줄이 빠졌는지 바로 보입니다. 단, 원문 가사를 힌트로 주면 안 부른 줄까지 부른 것처럼 적히므로 힌트 없이 듣게 해야 합니다.

  • 고르는 기준은 "빠진 줄 수"가 아니라 "전체 일치율": 받아쓰기는 "고추잠자리"를 "꽃을 잠샤"로 적는 식으로 자주 틀립니다. 빠진 줄 수로 고르면 앞 1분이 빈 곡을 골랐고, 반복까지 포함한 전체 일치율로 바꾸자 사람이 고른 것과 같아졌습니다.

  • 스타일 문구는 영어로, 맨 앞에 언어를: Korean,으로 시작해 장르 → 악기 → 보컬 → 분위기 → BPM 순으로 씁니다. 짧게 "파두"라고만 해도 Claude가 이 형식으로 풀어 줍니다.

  • 짧은 시는 원문 줄로 반복: 8줄짜리 시는 1절·후렴을 한 번 더 반복해야 2분 안팎의 노래가 됩니다. 새 말을 넣지 않고 원문 줄만 반복하는 것이 시인의 글을 존중하는 방법입니다.

  • 형식 이름도 태그로 바꾼다: "클래식 소나타"는 제시부(Verse·Chorus) → 발전부(Bridge) → 재현부(Verse·Chorus) → 코다(Outro)로 배치하니 구조를 따라 불렀습니다.

  • Claude에게 "점검하고"를 붙이기: 설치 전에 점검부터 시키면 쓰기 보호된 드라이브나 느린 USB 드라이브 같은 함정을 스스로 찾아 피합니다.

  • 가사를 안 주면 Claude가 지어 넣으려 한다: EDM을 요청했을 때 Claude가 새 가사를 쓰려는 것을 중간에 멈췄습니다. 이 교훈을 스킬과 메모리에 넣어, 이제는 어떤 시를 쓸지 먼저 묻습니다.

  • 노래 공유는 드라이브 데스크탑 앱 폴더가 가장 쉽다: PC의 구글 드라이브 폴더에 복사만 하면 1분 안에 올라가고, 폴더 하나만 "링크가 있는 모든 사용자"로 바꾸면 안의 곡이 모두 공개됩니다.

시행착오

열두 가지 문제를 만났고, 열 개는 Claude가 원인을 찾아 해결했으며 두 개(드라이브 공개 설정, 남은 폴더 삭제)는 사람이 직접 해야 했습니다. 그중 네 개(표의 3~6번째)는 공식 지원이 Linux뿐인 도구를 Windows에서 쓰며 생긴 문제입니다.

문제

원인

해결

모델 다운로드 실패 (WinError 1314)

Hugging Face 캐시가 쓰는 심볼릭 링크 권한이 계정에 없음

링크 없이 폴더에 직접 받기 (local_dir)

첫 생성 실패: USE_FLASH_ATTENTION was not enabled

Windows용 PyTorch에는 Flash Attention 이름만 있고 실제 커널이 없음

한 번 시험 실행해 보고 안 되면 cuDNN으로 자동 전환하도록 YuE2 코드 1곳 수정

한국어 곡 저장 실패 (UnicodeEncodeError)

Windows 기본 인코딩(cp1252)으로 한글을 쓰려 함

PYTHONUTF8=1로 UTF-8 모드 실행

받아쓰기 도구 오류 (metadata_errors)

faster-whisper와 최신 PyAV의 버전 충돌

오디오를 ffmpeg로 직접 읽어 넘김

조선 힙합 곡에서 후렴 4줄이 통째로 빠짐

악보 단계에서 후렴 멜로디를 음 4개로 째

4개 버전 생성 + 받아쓰기 검사로 선택

자동 선택이 나쁜 버전을 고름

받아쓰기 오인식 하나로도 "빠진 줄"이 됨

선택 기준을 전체 일치율로 바꾼 뒤 지난 두 곡으로 검증

휴대폰으로 MP3 전송이 3번 실패

일시적인 시스템 오류

다음 메시지에서 다시 보내 성공

도움이 필요한 부분과 앞으로의 계획

가장 아쉬운 점은 한국어 발음입니다. 받아쓰기에서 "앞뜰"이 "아들"로, "텃밭"이 "돋밭"으로 자주 들립니다.

클로더즈 분들께 여쭤보고 싶은 것:

  • YuE2나 다른 오픈소스 모델로 한국어 발음을 또렷하게 만드는 스타일 문구나 설정을 찾으신 분이 있나요?

  • Windows에서 Flash Attention을 쓰는 방법이 있을까요? 지금은 cuDNN으로 돌리고 있습니다.

  • ACE-Step 1.5, MiniMax Music 3를 한국어 가사로 써 보신 경험이 궁금합니다.

다음 후보 (아직 확정 전):

  • ☐ 가사 글자 수에 맞춘 악보(ABC)를 직접 주어 가사 누락을 구조적으로 막기

  • ☐ 이미 쓰고 있는 찬양 영상 스킬(사진 배경 + 3개 언어 자막)과 연결해 시 하나로 노래와 영상까지

  • ☐ 같은 시로 ACE-Step 1.5와 비교

  • ☐ 브라우저에서 시 붙여넣기 → 스타일 고르기 → 버튼 하나로 생성하는 화면

참고로 YuE2 모델은 개인 창작자가 생성한 곡을 게시·판매·수익화해도 됩니다(2026년 9월 16일 추가 조건). 회사의 상업적 사용은 별도 계약이 필요합니다.

참고 자료

태그: #문과생도AI