내 목소리로 부르는 AI 노래 주문 제작
인어공주의목소리 (mzstudio) — media.ifweb.kr
참여자(최대 3명)가 스마트폰으로 짧은 문구 네 개를 녹음하고 가사·분위기를 적어 주문하면, AI 가 작사·작곡하고 참여자 본인의 목소리로 부른 완성곡을 만들어 이메일로 납품하는 유료 서비스. 주문 접수부터 생성·검수·납품·결제·세무 원장까지 사람 손 없이 돌아가며, 웹·API·녹음 보관·GPU 생성을 모두 Mac mini 한 대의 로컬 모델로 처리한다.
연구 질문
1분 남짓한 녹음만으로 본인 목소리처럼 들리고, 음이 깨지지 않으며, 가사가 정확히 들리는 완성곡을 사람 검수 없이 만들어 돈을 받고 팔 수 있는 품질로 납품할 수 있는가.
접근
생성 모델의 결과를 그대로 믿지 않는다. 녹음에서 참여자의 실제 음역을 재고, 그 음역을 작곡 규칙으로 걸어 곡을 만든 뒤, 받아쓰기로 가사 일치율을, 음높이 추적으로 음역 초과·긴 고음·급등을 검사해 통과한 시도만 목소리 변환으로 넘긴다. 주문 1건은 준비 → GPU → 후처리 세 단계 대기열로 나눠, 하나뿐인 GPU 를 빌린 동안에는 줄 선 작업을 이어 처리한다. 실패는 원인(가사·녹음·시스템)별로 나눠 고객이 직접 고치거나 자동으로 다시 시도한다.
구성 저장소
| mzstudio / web | Next.js 정적 웹(한국어·English). 주문서, 녹음 4종과 따라 부르기 샘플, 결제, 진행률·남은 시간, '내 음악' 다운로드·수정 요청, 30초 Shorts 관리 |
|---|---|
| mzstudio / api | FastAPI. 녹음 업로드 검사, 주문·결제(토스페이먼츠)·웹훅, 다운로드 토큰, 매출 원장, 내부망 전용 관리자 화면 |
| mzstudio / worker | 생성 워커. 작사·곡 설계, GPU 임대, 작곡·분리·검수·목소리 변환, 단락 조립·마스터링, 악보·Shorts 렌더링, 납품 메일, 보관 기간 정리 |
| 공유 엔진 | ACE-Step · Seed-VC 설치물과 GPU 교대를 Baron(02)과 함께 쓰되, 사용자별 임대로 서로의 작업을 내리지 않는다. 주문·고객 데이터·DB 는 분리 |
주요 기능
- 녹음 네 개로 음역 측정 — 문장 읽기·편한 음·가볍게 노래하기·사이렌(가장 낮은 음에서 높은 음까지) 네 문구를 녹음하면, 노래 소리 문구로만 음역을 잰다. 말소리로 재면 음역이 낮고 좁게 잡혀 곡이 움츠러들기 때문이다. 녹음 직후 측정 음역(예: D3~A4)을 보여 주고, 너무 짧거나 음이 이어지지 않는 녹음은 다시 받는다.
- 여러 명이 나눠 부르는 한 곡 — 가사 단락을 참여자에게 배정하고, 사람마다 변환한 보컬을 단락 경계에서 짧게 교차 페이드해 잇는다. 함께 부르는 단락은 겹쳐 섞는다.
- 로컬 LLM 작사·곡 설계 — 제목·분위기·장르로 가사를 쓰거나 고객이 쓴 가사를 다듬는다. 소형 모델(gemma-4)이 1순위, 실패하면 27B 로 넘긴다. 노래 언어 9종, 빠르기·곡 길이는 '자동'을 기본으로 고르기 쉬운 몇 개 값만 둔다. 힙합·랩은 마디당 음절 수로 곡 길이를 따로 계산한다.
- 음 이탈 방지 — 참여자 음역·한 옥타브 폭·5도 넘는 도약 금지 같은 규칙을 작곡 모델과 설계 LLM 에 함께 건다. 생성된 보컬의 음역을 재어 옥타브를 맞추고, 그래도 5반음 넘게 벗어나거나 긴 고음·12반음 급등이 있으면 다시 만든다. 변환 뒤에도 급등을 다시 검사한다.
- 가사 검수 — 생성곡을 Whisper 로 받아써 주문 가사와 비교하고, 언어별 기준을 넘는 시도만 통과시킨다. '의/에', 'ㅐ/ㅔ'처럼 발음이 같은 표기는 같게 본다. 받아쓴 단어 시각은 Shorts 자막과 악보에도 쓴다.
- 납품물 — 완성곡·MR·가사, 그리고 AI 가이드 보컬을 자동 채보한 가사 포함 악보 PDF(LilyPond). 이메일 링크와 '내 음악'에서 받는다.
- 30초 Shorts 자동 공개 — 보컬 비율과 에너지로 하이라이트를 골라 9:16 영상과 가사 줄 자막을 만든다. 주문 때 참여자 전원의 동의를 받고, 주문자가 '이대로 확정'을 누른 뒤에만 공식 채널에 올린다. 언제든 공개를 취소할 수 있다.
- 수정과 원본 녹음 보관 — 최초 납품 후 14일 안에 3회까지 수정(재생성)할 수 있다. 원본 녹음은 암호화해 두었다가 확정·수정 소진·기간 종료 때 지우고, 중간 파일은 납품 뒤 바로 정리한다.
- 실패를 고칠 수 있게 — 실패를 가사·녹음·시스템으로 나눠, 가사 문제는 고객이 가사를 고치거나 AI 다듬기로 다시 제작하고, 녹음 문제는 재녹음, 시스템 문제는 워커가 몇 분 뒤 자동으로 두 번 더 시도한다.
- 결제·세무 — 토스페이먼츠 원화·달러(해외카드·PayPal) 결제. 승인 응답이 끊기면 '승인 확인 중'으로 두고 워커가 결제사에 다시 물어 마무리한다. 웹훅 본문은 믿지 않고 재조회해 반영하며, 부분·전액 취소와 과세·영세율로 분류한 매출 원장을 남긴다.
- 보안 기본값 — CSP 와 프레임 차단, 업로드 파일 머리 바이트 검사와 재생목록 위장 차단, 주문 조회 열쇠는 헤더로만, 관리자 화면은 VPN 대역 밖에서 404. 해외 접속은 처음 화면을 영어로 띄운다.
- 한 대의 GPU 를 나눠 쓰기 — 주문이 들어오면 바로 비서의 27B 를 내리고 음악 엔진을 빌린다. 한 번 빌리면 대기 중인 작업을 이어 처리하고, 준비 단계는 GPU 대기 2건까지만 앞서 해 둔다. 실측 기준 2명 64초 곡 1건에 약 7분, 가사 일치율 0.975.
- 주문량에 맞춘 확장 — 고객 요청 건수가 늘면 LLM 서버를 추가할 예정이다. 작업 집어 가기와 결제 반영은 DB 잠금으로 한 줄로 세워 두어, 처리 기계가 늘어도 같은 주문을 두 번 만들지 않는다.