문제
다른 커버 앱만큼의 음질이 기준이던 새 음악 앱
고객은 사용자가 자기 목소리로 노래를 만드는 앱으로 창업했습니다. 참고한 커버 앱들은 커버 한 가지 기능에 머물렀습니다. 커버에 작곡과 영상까지 더해 한 앱에서 끝내려는 구상이었습니다.
기준은 다른 커버 앱의 결과물이었습니다. 고객은 남성 4명, 여성 3명의 목소리와 각각의 커버 결과 파일을 보내며 "적어도 이 정도"를 요구했습니다. 개발 중 결과를 들어 보고는 다른 앱에 비해 배경음악이 뭉개진다고 짚었습니다.
화면에 대한 요구는 짧았습니다. 눈이 편하고 직관적이며 포근한 느낌에 보컬과 AI 느낌을 조금 더해 달라는 것이었습니다. 참고할 레퍼런스는 따로 없었습니다.
고객의 계획은 구독과 크레딧으로 돈을 받는 앱이었습니다. 구독 음질은 실버 mp3 192kbps, 골드 mp3 320kbps, 다이아 FLAC으로 나누기로 했습니다. 가입은 구글 로그인 하나로, 결제는 앱 안 결제로만 받기로 했습니다.
해결
목소리 학습부터 커버·작곡·영상까지 담은 한 앱
포너즈는 네 가지 생성 기능을 앱 하나로 묶었습니다. AI 작업은 서버의 작업 대기열이 받아 처리하고, 동시에 6건까지 병렬로 도는 것을 확인했습니다.
- 목소리 학습: 사용자가 녹음하거나 올린 음성 파일 여러 개로 보이스 모델을 학습합니다.
- AI 커버: 유튜브 링크나 음원 파일에서 보컬을 분리하고, 고른 목소리를 입혀 반주와 다시 합칩니다.
- AI 작곡: 장르와 분위기 설명으로 곡을 만듭니다. 주제만 넣으면 곡 구조에 맞춘 가사도 씁니다.
- 라이브 영상: 얼굴 사진 한 장과 영상 템플릿을 고르면 얼굴을 합성한 영상을 만듭니다.
- 구독과 크레딧: 인앱결제로 구독과 크레딧을 팔고, 크레딧이 모자라면 생성 전에 충전으로 안내합니다.
- 담당자 확인: 커버용 가수 보이스는 학습 뒤 노래를 뽑아 들어 보고 등록합니다. 신고된 생성물은 관리자 페이지에서 검토합니다. 보이스 청취는 포너즈 개발팀이, 신고 처리는 고객 쪽 운영 담당이 맡습니다.
보컬과 반주를 따로 만들어 다시 섞는 커버
처음 쓴 커버 모델은 보컬과 반주를 한 번에 더해 파일 하나로 내보냈습니다. 음량 제한이 없어 보컬을 키우면 파열음이 났습니다. 보컬이 반주보다 너무 커서 배경음이 묻히기도 했습니다. 포너즈는 모델을 두 번 불러 보컬과 반주를 따로 받았습니다. 잡음 억제는 보컬에만 걸고, 음량을 맞춘 뒤 합쳤습니다. 한 번에 받은 결과에 음량 제한만 거는 방식도 설정 하나로 되돌릴 수 있게 남겨 두었습니다.
무손실 원본으로 저장하는 생성 음원
AI가 만든 곡은 FLAC·WAV 원본으로 저장하고, 등급에 따라 제공하는 음질을 나눕니다. 원본을 고음질로 두면 음질별 파일을 나중에도 만들 수 있습니다. 등급별 음질 차이도 분명하게 둘 수 있습니다. 등급마다 파일을 따로 생성하면 AI 사용료가 등급 수만큼 늘어납니다.
전곡 뮤직비디오 대신 템플릿 얼굴 합성으로 바꾼 라이브 영상
처음 만든 라이브 영상은 사진 한 장과 곡으로 전곡 뮤직비디오를 만드는 방식이었습니다. 실제로 돌려 보니 한 곡에 약 9.5만 원의 AI 사용료가 들었습니다. 결과 영상에서는 얼굴이 깨진다는 지적도 나왔습니다. 그래서 정해진 영상 템플릿에 사용자 얼굴을 합성하는 방식으로 바꿨습니다. 원가를 확인한 포너즈가 먼저 제안했습니다.
결과
고객 명의로 스토어 심사에 오른 앱
고객은 자기 명의의 앱스토어·구글 플레이 계정으로 앱을 심사에 올렸습니다. 결제 정산도 고객 계좌로 받습니다. 서버는 포너즈가 고객의 AWS로 옮겼습니다. 앱은 아직 심사 중이라 이용 지표는 출시 뒤에 잽니다.
| 항목 | 이전 | 이후 | 변화 | 측정 기준 |
|---|---|---|---|---|
| 커버의 보컬과 반주 음량 차이 | +20.5dB | +7.2dB | 비교 음원(+6.4dB)에 근접 | 개발팀 내부 실측 |
| 보컬 무음 구간의 잡음 최고치 | 0.2~1.5% | 0.0~0.1% | 잡음이 거의 사라짐 | 개발팀 내부 실측 |
앞으로
출시 뒤에도 정해 둔 기간 동안 유지보수를 이어 갑니다. 고객은 유지보수 연장 조건도 묻고 있습니다. 캐릭터 일러스트 교체와 커버 가수 추가가 다음 작업으로 잡혀 있습니다.