IUEM — 부르면 AI가 채점하고, 다음 곡을 골라 준다
AI(Suno)로 만든 곡을 노래방처럼 부르면 음정·박자를 재고 발성까지 진단해 코칭과 다음 곡을 주고, 리듬 게임으로 치면 판정이 바로 터진다. 이 사이트는 그 서비스를 만들며 실제로 막혔던 것과 넘은 방법을 남긴 기록이다.
핵심 흐름
| 단계 | 하는 일 | 쓰는 것 |
|---|---|---|
| 1. 곡 준비 | 완성곡에서 보컬을 분리하고, 보컬에서 정답 음표를 뽑고, 가사 줄마다 시작 시각을 맞춘다 | Demucs · librosa pyin · faster-whisper |
| 2. 부른다 | 반주가 흐르고 정답 음표가 다가온다. 내 목소리가 선으로 그려지고 가사가 차오른다 | Web Audio · YIN · Canvas |
| 3. 채점한다 | 화면은 20ms 마다 판정하고, 제출하면 서버가 녹음을 정답 음표와 다시 맞춰 최종 점수를 낸다 | 같은 규칙의 TS / Python 채점기 |
| 4. 진단한다 | 같은 음높이 곡선을 한 번 더 읽어 어디가 어떻게 무너졌는지를 잰다 — 음정이 쏠린 방향, 고음·저음 중 약한 쪽, 음 잡는 시간, 편한 음역 | 순수 함수(도메인) |
| 5. 다음 곡 | 그 약점을 피해 가는 곡을 고른다. 고음이 약하면 낮은 곡, 박자가 흔들리면 느린 곡 | PostgreSQL · 규칙 기반 코칭 |
리듬 게임은 같은 원곡에서 박과 소리 시작점을 찾아 4키·7키 × 쉬움·보통·어려움 채보 6개를 자동으로 만든다.
지금 숫자로 보면
- 실제 Suno 곡 7곡이 운영에서 돌아간다. 그중 5곡은 노래방 악보(정답 음표 + 가사 타이밍)까지 있다.
- 브라우저 채점기와 서버 채점기는 같은 입력에서 1점 차 안으로 맞는다(같은 규칙, 서로 다른 언어).
- 발성 진단이 심어 둔 결함을 되찾는다. 일부러 저음 −30센트·고음 −80센트로 부르게 하면 진단이 “평균 −52센트, 아래로 쳐짐 100%, 고음 0% / 저음 100%” 를 집어낸다.
- 반주를 MP3 로 바꿔 곡 하나의 전송량이 40MB → 5.4MB (86% 감소).
- 리듬 게임 7키 어려움(486노트)을 정확히 치면 1,000,000점 풀 콤보가 나온다.
기준 2026-09-30.