시스템 개요
가수의 음성 지문(Pitch · Style)을 분석하여 ① 기존 데모곡과의 매칭과 ② 신곡 제작 조건 자동 생성을 동시에 수행합니다.
MVP 원칙 — 빠르게 런칭하고, 수정하며 발전시킵니다.
①
🔍 매칭 시스템
기존 데모곡 DB와 가수 프로필을 비교하여 적합도를 자동 판단합니다.
L1 음역 필터 → L2 스타일 랭킹
②
📋 4-View 명세서
가수 프로필을 4종의 수신자별 형식으로 자동 변환하여 출력합니다.
작곡가 · Suno 프롬프트 · A&R · 가수 본인
데이터 파이프라인
입력
가수 음원
›
음원 분리
Demucs
›
피치 추출
RMVPE
›
프로필 저장
JSON → Supabase
›
출력
매칭 + 4-View
MVP 범위
✅ MVP에 포함
Pitch Profile (Range · Tessitura · Ceiling)
Style Profile (비브라토 · 슬라이드 · 프레이징)
L1 음역 필터 + L2 스타일 랭킹
4-View 출력 (작곡가 · Suno · A&R · 가수)
가수 JSON + 데모곡 JSON → Supabase
Style Profile (비브라토 · 슬라이드 · 프레이징)
L1 음역 필터 + L2 스타일 랭킹
4-View 출력 (작곡가 · Suno · A&R · 가수)
가수 JSON + 데모곡 JSON → Supabase
❌ 나중에 (고급 기능)
Vocal Dose
버전 태그 (데뷔기 / 전성기 / 현재)
민감도 분석 (Demucs vs Spleeter)
L3 음색 타이브레이커
장르 모드별 분리 저장
버전 태그 (데뷔기 / 전성기 / 현재)
민감도 분석 (Demucs vs Spleeter)
L3 음색 타이브레이커
장르 모드별 분리 저장
기술 스택
개발 · 버전관리 · 배포 · 데이터를 각각 최적의 도구로 분리합니다.
전체 워크플로우
코드 작성
Firebase Studio
›
버전 관리
GitHub
›
자동 배포
Cloudflare Pages
보컬 분석
로컬 PC
›
JSON 생성
Python 스크립트
›
DB 저장
Supabase
›
화면 표시
Cloudflare Pages
코드 작성
🔥 Firebase Studio
클라우드 기반 개발 환경. 브라우저에서 코드 작성 · GitHub 연동 · AI 코딩 지원
버전 관리
🐙 GitHub
코드 버전 관리. Cloudflare Pages와 연동하여 push 시 자동 배포
프론트엔드 배포
☁️ Cloudflare Pages
HTML 대시보드 호스팅. GitHub 연동 자동 배포. demomatching.pages.dev
데이터베이스 + 스토리지
⚡ Supabase
가수 프로필 JSON · 데모곡 프로필 JSON · 음원 파일 저장. 무료 티어로 시작
보컬 분석 (로컬)
🎵 Demucs + RMVPE
Applio 환경 재활용. 음원 분리 → 피치 추출 → JSON 생성. 학습 불필요, 추론만
분석 스크립트
🐍 Python
보컬 분석 파이프라인. 분위수 계산 → JSON 생성 → Supabase 자동 업로드
새 가수 추가할 때 업데이트 흐름
1
로컬 PC에서 음원 준비 → Python 스크립트 실행
2
Demucs + RMVPE 자동 실행 → singer_이름.json 생성
3
Supabase에 자동 업로드 → 대시보드 즉시 반영. 끝.
매칭 시스템
가수 프로필과 데모곡을 2단계 레이어로 비교합니다. L1에서 탈락한 곡은 L2 없이 즉시 제외됩니다.
MVP: L1 + L2만 구현합니다.
L1 하드 게이팅
음역 필터 — 물리적 한계선 먼저 차단
가수의 Range와 곡의 음역을 비교합니다. 여기서 탈락하면 스타일이 아무리 좋아도 제외됩니다.
| 통과 조건 | 곡 음역의 90% 이상이 가수 Range (q5~q95) 내에 포함 |
| Ceiling 체크 | 곡 최고음 ≤ 가수 Ceiling (q95) − 0.5 반음 |
| 탈락 시 | 키 변경 시뮬레이션 → ±2반음 조정 가능 시 보조 정보로 표시 |
L2 스타일 랭킹
스타일 유사도 점수화
L1을 통과한 곡들을 스타일 벡터 유사도로 정렬합니다. 알고리즘: 코사인 유사도 + DTW.
| 비브라토 | Rate (Hz) · Extent (cent) · Onset Delay |
| 슬라이드 | Slope (semitone/s) · Prevalence (%) |
| 프레이징 | Onset Rate · Silence Ratio |
최종 매칭 점수 = (L1 통과) × L2 스타일 유사도
출력: Top-K 랭킹 + 자연어 이유 + 키 변경 제안 (해당 시)
출력: Top-K 랭킹 + 자연어 이유 + 키 변경 제안 (해당 시)
데이터 스키마
Supabase에 저장되는 두 가지 JSON 구조입니다. MVP 기준으로 필수 필드만 포함합니다.
가수 프로필 — singer_이름.json
{
"singer_id": "unique_uuid",
"name": "아이유",
"updated_at": "2024-02-18",
"pitch_profile": { // 필수 — 항상 활성화
"range_hz": [196.0, 554.4], // q5 ~ q95
"tessitura_hz": [261.6, 392.0], // q25 ~ q75
"ceiling_hz": 523.3 // q95
},
"style_profile": { // 조건부 활성화
"vibrato": {
"rate_hz": 5.2,
"extent_cent": 45,
"onset_delay_ms": 320
},
"slide": {
"slope_st_per_s": 8.1,
"prevalence_pct": 28
},
"phrasing": {
"onset_rate_bpm": 4.2,
"silence_ratio": 0.18
}
}
}데모곡 프로필 — song_곡명.json
{
"song_id": "unique_uuid",
"title": "블루밍",
"artist": "아이유",
"genre": "ballad",
"pitch_profile": {
"melody_range_hz": [220.0, 523.3],
"chorus_ceiling_hz": 493.9
},
"style_tags": {
"vibrato_recommended": true,
"slide_prevalence": "medium"
},
"audio_url": "supabase_storage_url", // 음원 파일
"key_center": "C"
}4-View 출력 엔진
동일한 가수 프로필에서 수신자별로 최적화된 4종의 출력을 동시 생성합니다.
작곡가용 — 언어 명세서
작곡 시작 전 참조하는 설계 지침서입니다.
[ 멜로디 배치 조건 ]
• 핵심 멜로디 라인의 70% 이상을 Tessitura (C4~G4) 내에 배치할 것
• 코러스 최고음은 B♭4 이하를 유지할 것
[ 창법 조건 ]
• 슬라이드 습관 (28%) 고려 — 버스 구간 3도 이상 도약 연속 3회 금지
• 비브라토 자연 발생 구간 (장음 320ms 이후)에 안정 포인트 배치
[ 구조 조건 ]
• 브릿지 고음 지속은 4마디 이내 제한
• 전조 시 Ceiling (B♭4) 초과 여부 재확인 필수
• 핵심 멜로디 라인의 70% 이상을 Tessitura (C4~G4) 내에 배치할 것
• 코러스 최고음은 B♭4 이하를 유지할 것
[ 창법 조건 ]
• 슬라이드 습관 (28%) 고려 — 버스 구간 3도 이상 도약 연속 3회 금지
• 비브라토 자연 발생 구간 (장음 320ms 이후)에 안정 포인트 배치
[ 구조 조건 ]
• 브릿지 고음 지속은 4마디 이내 제한
• 전조 시 Ceiling (B♭4) 초과 여부 재확인 필수
Suno 프롬프트 — 바로 붙여넣기용
가수 프로필을 Suno가 이해하는 자연어 프롬프트로 자동 변환합니다.
[ 생성된 Suno 프롬프트 ]
soft emotional ballad, warm mid-range female vocals,
melody centered in comfortable range C4 to G4,
no high belting above B♭4, gentle natural vibrato,
smooth legato phrasing, occasional pitch slides,
intimate and melancholic mood, lush orchestral arrangement
soft emotional ballad, warm mid-range female vocals,
melody centered in comfortable range C4 to G4,
no high belting above B♭4, gentle natural vibrato,
smooth legato phrasing, occasional pitch slides,
intimate and melancholic mood, lush orchestral arrangement
💡 Suno 프롬프트 DB를 별도 구축하여, 가수 조건 → 검증된 프롬프트 조합을 참조하는 방식으로 고도화 예정
A&R용 — 신호등 대시보드
발라드 적합도
🟢
안정
테시투라 일치율 94%
리스크 플래그
🟡
브릿지 최고음 주의
B♭4 Ceiling 근접
R&B 적합도
🟢
추천
슬라이드·프레이징 유사도 0.87
댄스 적합도
🔴
키 조정 필요
코러스 고음 과부하 예상
자동 리포트
황금 구역(C4~G4)이 곡의 핵심 멜로디(D4~F4)와 92% 일치 ✅
브릿지 B♭4 지속음 Power Zone 초과 → 반음 낮추거나 A4로 수정 권장 ⚠️
황금 구역(C4~G4)이 곡의 핵심 멜로디(D4~F4)와 92% 일치 ✅
브릿지 B♭4 지속음 Power Zone 초과 → 반음 낮추거나 A4로 수정 권장 ⚠️
가수 본인용 — 셀프 인식 리포트
🎤 나의 음성 프로필
내 황금 구역은 C4 ~ G4 입니다.
📋 곡 받을 때 체크리스트
✅ 후렴 최고음 B♭4 이하 → 안정
⚠️ B♭4 ~ C5 → 컨디션 확인 후 도전
❌ C5 초과 → 키 조정 요청
💪 연습 포인트
브릿지 진입 전 성대 워밍업 필수
급격한 도약 구간에서 슬라이드 의식적 제어 연습
내 황금 구역은 C4 ~ G4 입니다.
📋 곡 받을 때 체크리스트
✅ 후렴 최고음 B♭4 이하 → 안정
⚠️ B♭4 ~ C5 → 컨디션 확인 후 도전
❌ C5 초과 → 키 조정 요청
💪 연습 포인트
브릿지 진입 전 성대 워밍업 필수
급격한 도약 구간에서 슬라이드 의식적 제어 연습
개발 로드맵
빠르게 런칭하고 수정하며 발전시킵니다. 처음부터 완벽하게 만들지 않습니다.
P0
환경 설정 지금
Firebase Studio → GitHub → Cloudflare Pages 연동
Supabase 프로젝트 생성 + 테이블 스키마 설계
로컬 Python 환경 확인 (Applio 재활용)
산출물: 배포 파이프라인 완성
P1
보컬 분석 스크립트 다음
가수 음원 → Demucs 분리 → RMVPE 추출 Python 스크립트
분위수 계산 → singer_이름.json 자동 생성
Supabase 자동 업로드까지 연결
산출물: 가수 프로필 JSON 자동 생성기
P2
데모곡 DB 구축 예정
데모곡 음원 분석 → song_곡명.json 생성
Supabase Storage에 음원 파일 업로드
가수 3명 × 데모곡 10곡으로 시작
산출물: 데모곡 프로필 DB (MVP)
P3
매칭 엔진 예정
L1 음역 필터 구현
L2 스타일 랭킹 구현 (코사인 유사도)
Top-K 결과 + 자연어 이유 출력
산출물: 매칭 결과 출력 기능
P4
4-View 출력 연결 예정
작곡가용 언어 명세서 자동 생성
Suno 프롬프트 자동 생성 (프롬프트 DB 참조)
A&R 신호등 대시보드 + 가수 본인 리포트
산출물: 완성된 MVP 서비스 🎉