Skip to content

Latest commit

 

History

History
248 lines (169 loc) · 14.3 KB

File metadata and controls

248 lines (169 loc) · 14.3 KB

PitchFinder

부를 노래 추천을 위한 음역대 측정 기반 노래 필터링 서비스


목차

<프로젝트 요약서>

  • 문제 정의
  • 관련 연구/서비스/시스템 조사 결과 및 한계점
  • 제안 내용
  • 구현 방법
  • 기대효과 및 의의

<프로젝트 기술서>

  • 요구사항 정의
  • 필요기술 / 기술검증
  • 전체 시스템 구성
  • 주요 엔진의 기능 및 설계
  • 평가
  • 결론

프로젝트 요약서

문제 정의

1. 들을 노래와 부를 노래에 대한 서로 다른 수요

  • 개인마다 다른 음역대에 따라 잘 부를 수 있는 노래가 달라짐
  • 자주 듣는 노래 순위를 보여주는 스트리밍 서비스의 차트와 많이 불린 노래들을 보여주는 노래방 인기 차트에서의 노래 분포가 다름.

가온차트의 김진우 수석연구위원이 분석한 결과, 올해 상반기 노래방 차트와 음원차트(스트리밍 기준)의 100위권에서는 32곡이 일치했다. 지난 2010~2013년 조사에서도 평균 28.5곡만이 동시에 두 차트에 이름을 올렸다. https://www.khan.co.kr/culture/popular_music/article/201709131429001

2. 접근성 좋고 객관적인 음역대 측정 서비스의 부재

  • 대중이 사용하는 음역대를 측정법 영상이나 글들은 개인 판단에 의한 측정법으로 매우 주관적
  • 정교하고 객관적으로 음역대 측정하는 장비나 전문가는 대중에게 접근성이 매우 떨어짐

3. 취향과 장르 기반의 기존 노래 추천

  • 기존 음원 스트리밍 서비스들은 취향과 장르만을 기준으로 ‘들을’ 노래를 추천
  • 부르기 좋은 노래를 찾고자 하는 수요를 충족시키지 못함

관련 연구/서비스/시스템 조사 결과 및 한계점

1. 기존 음악 추천 서비스

  • 예시 : 음원 스트리밍 사이트 (멜론, 애플뮤직, Spotify, 유튜브 뮤직 등)
  • 특징 및 문제점
  1. 취향과 장르만을 고려하며 ‘부를’ 노래가 아닌 ‘들을’ 노래만을 추천해주기 때문에 다루는 영역이 다름
  2. 피치파인더의 차별점 : 측정된 음역대를 기반으로 노래를 추천하는 새로운 패러다임 제시

2. 기존 음정 측정 서비스

  • 예시 : TJ 퍼펙트스코어, Vocal Pitch Monitor, GStrings, Vocal Meter, 허밍업 등
  • 특징 및 문제점
  1. 음역대 측정 및 노래추천 기능 부재
  • 순간의 음정을 측정하는 것에 그칠 뿐 그에 따른 음역대를 알려주지 않음.
  • 음역대와 관련된 노래 정보를 다루지 않음.
  1. 낮은 접근성
  • 사업용 노래방 기기가 필요하거나 특정 OS에서만 이용 가능함
  1. 피치파인더의 차별점
  • 측정한 음정을 바탕으로 개인의 음역대를 계산하고 그에 따른 노래 정보 제공
  • OS 및 시공간의 제약 없이 접근 가능한 모바일 웹 플랫폼
기존 음악 추천 서비스 기존 음정 측정 서비스 (왼쪽 병합) (아래 병합)
예시 Spotify, Youtube Music Vocal Pitch Monitor TJ 퍼펙트스코어 PitchFinder
노래 추천 여부 O (장르 기반 들을 노래 추천) X (음악 데이터 부재) X (사용자가 노래를 먼저 선택) O
음역대 측정 기능 X △ (순간의 음정만을 측정) O O
서비스 접근성 O △ (특정 OS만 구동 가능) X (상업 노래방 기기 필요) O

제안 내용

‘들을’ 노래가 아닌 ‘부를’ 노래를 찾기 위해 개인 음역대를 측정하고 측정된 음역대를 기반으로 노래를 필터링하는 서비스, 피치파인더

  1. 개인 음역대 측정
  • 내장 마이크를 통해 사용자의 음성을 받아 실시간으로 음정 계산
  • 이분탐색을 기반으로 하는 음역대 테스트를 진행하여 사용자의 최고음정과 최저음정 추출
  1. 노래 추천
  • 음역대가 사용자의 최고음정 ~ 최저음정 사이에 존재하는 노래들만 필터링
  • 고음과 저음 연습을 통해 도달할 수 있는 변화를 제시하여 음역대를 기준으로 노래 탐색

구현 방법

Step1. 음정 계산

  1. 브라우저의 AudioContext API를 이용하여 기기에 내장된 마이크를 통해 사용자의 음성 수집
  2. 수집한 음성 데이터를 Hz단위의 주파수로 변환
  3. MIDI Note를 계산하여 사용자 음성에 해당하는 음계와 옥타브 추출
  4. 국제 표준 MIDI Note 옥타브와 한국식 옥타브를 함께 반영

Step2. 음역대 측정

  1. 수집된 음성의 음정을 실시간으로 계산하여 그래프로 시각화
  2. 측정 전 사용자가 선택한 성별에 따라 테스트 시작음 설정
  3. 최소한의 시도로 최고값과 최저값을 구할 수 있는 이분탐색을 사용하여 사용자의 피로도와 소요시간 최소화
  4. 이분탐색 초기값은 측정 전 사용자가 선택한 성별의 음역 평균값
  5. 최고 음정을 구하는 과정이 완료되면 최저 음정을 구하는 과정 진행

Step3. 측정 결과

  1. 사용자의 최고 음정 및 최저 음정 추출 후 음역대 계산
  2. 음역대 측정 결과는 각 성별의 평균 음역대와 함께 그래프로 시각화
  3. 노래 추천받기를 눌러 사용자의 음역대 정보를 전송하며 API 호출 및 백엔드 서버와 통신하며 노래 추천 목록 받아오기

Step4. 노래 추천

  1. 해당 음역대 내에 존재하는 노래의 목록 반환
  2. 조작을 통해 키를 높이거나 낮출 때마다 목록을 갱신하며 음악 탐색
  3. 고음 및 저음 연습을 통해 도달할 수 있는 변화를 제시하여 동기부여
  4. 측정 결과는 URL을 통해 공유 및 보관
  5. 노래별 음정 정보, 해당 노래를 듣거나 연습하는 페이지로 이동하는 기능 포함

기대효과 및 의의

  1. 음역대 측정의 대중화

    모바일 웹서비스로 시공간의 제약이 없는 음역대 측정 기능 제공

  2. 부를 노래에 대한 수요 충족

    자신의 음역대에 맞는 노래를 선택해서 편하게 부르는 경험 제공

  3. 기존에 없던 음악 탐색의 새로운 기준 제시

    기존의 추천 기준이던 장르나 취향이 아닌 음역대라는 기존에 없던 새로운 기준으로 노래를 탐색할 수 있는 기회 제공

  4. 추후 노래방 사업과 협업

    TJ, KY등의 노래방 사업과의 협업을 통해 피치파인더의 기능을 노래방 기기 컨텐츠로서의 기능으로 제공 및 음악 데이터 연동으로 서비스 고도화


프로젝트 기술서

요구사항 정의

usecase

필요기술 / 기술검증

  • 동작환경: AudioContext API를 지원하는 웹 브라우저 (Chrome 42, Safari 14.1 이상)
  • 개발환경: python 3.9, React 18
  1. AudioContext API
    • 기기에 내장된 마이크와 연결하여 음성 데이터 수집
  2. FFT(Fast Fourier Transform, 고속 푸리에 변환)
    • 사용자의 음성 데이터를 주파수 영역으로 변환하여 음정 측정 후 옥타브와 음계 계산
  3. FrontEnd 개발
    • Typescript와 React기반 모바일 웹 서비스
    • TailwindCSS: 전반적인 UI 스타일링
    • Styled-Components을 이용한 실시간 음정 시각화
    • Recoil: 측정 결과값을 전역으로 상태관리
  4. Backend 개발
    • API Gateway: Lambda 함수로 HTTP 엔드포인트 연결
    • AWS Lambda: 음원 데이터 api 개발
    • AWS CloudWatch: Lambda 함수 모니터링
  5. 음원 데이터 수집 및 저장
    • BeautifulSoup : 크롤링을 통한 음역대별 음원 정보 수집
    • Youtube API : 음원 검색 결과 URL 및 관련 이미지 데이터 제공
    • MySQL, AWS RDS: 음원 데이터 저장

전체 시스템 구성

스크린샷 2024-06-20 오후 1 04 59

주요 엔진의 기능 및 설계

UI 설계 스크린샷 2024-06-20 오후 1 05 06

서비스 구조도 스크린샷 2024-06-20 오후 1 05 13

  1. 서비스 로직

성별 선택 → 음역대 측정 → 측정 결과 → 노래 추천

  1. 음역대 측정

성별 선택 → 음성 수집 → 음정계산 → 이분탐색 → 최고/최저 음정 추출

  • 사용자가 선택한 성별은 이분탐색 알고리즘의 초기값으로 사용
  • 이분탐색 과정에서 음성 수집 + 음정 계산 과정 반복
  1. 음성 수집 및 음정 계산
  • (사용자 음성) → [내장 마이크] → → (Float32Array 음성데이터) → → (주파수) -> <MIDI Note 변환식> → (음계 및 옥타브 정보)

3-1) 음성 데이터를 주파수로 변환하는 과정 (위에서 Correlate Function에 해당)

  • RMS 계산 → 신호 강도 체크 → 데이터 정제 → 자동 상관 함수 계산 → 최대값 찾기 → 주파수 변환
  1. RMS(Root Mean Square) 계산 : 주어진 버퍼의 각 값에 대해 제곱하여 더한 후 전체 크기로 나누고 제곱근을 취한다
  2. 신호 강도 체크 : RMS 값이 일정 임계치(여기서는 0.1)보다 작으면 -1을 반환한다.
  3. 데이터 정제 및 불필요한 부분 제거 : 버퍼의 양 끝에서 특정 임계치(0.2로 설정)보다 작은 값의 인덱스를 찾아 해당 부분을 잘라낸다.
  4. 자동 상관 함수 계산 : 버퍼를 이용하여 자동 상관 함수를 계산한다.
  5. 최대값 위치 찾기 : 상관 함수에서 최대값과 해당 위치를 찾는다.
  6. 주파수 추정 : 최대값을 기반으로 주파수를 추정한다.

3-2) MIDI Note 변환

$$ MidiNote=round(12×log_2(440/주파수)+69) $$

평가

  1. 노래 추천의 새로운 패러다임 제시
  • 서비스 내부에서 음역대 측정을 진행하고 측정된 ‘음역대’를 기반으로 노래를 추천하여 한 서비스 내에서 사용자가 자신의 음역대를 알고 노래를 추천받을 수 있음
  • 취향과 장르를 기준으로 들을 노래만을 추천해주는 기존 음악 추천 서비스와는 다른 지향점을 가짐
    • 실제로, 자주 듣는 노래 순위를 보여주는 스트리밍 서비스의 차트와 많이 불린 노래들을 보여주는 노래방 인기 차트에서의 노래 분포가 다름.

    • “가온차트의 김진우 수석연구위원이 분석한 결과, 올해 상반기 노래방 차트와 음원차트(스트리밍 기준)의 100위권에서는 32곡이 일치했다. 지난 2010~2013년 조사에서도 평균 28.5곡만이 동시에 두 차트에 이름을 올렸다.”

      https://www.khan.co.kr/culture/popular_music/article/201709131429001

  1. 서비스 유지의 용이성 및 수익성 극대화
  • 서비스 제공에 필요한 노래 데이터를 수집하는 크롤링 프로그램을 자체 개발하여 데이터 수집 및 구매에 필요한 비용이 들지 않음.
  • 음원시장에 데이터가 끊임없이 제공되기 때문에 데이터 수집이 용이하고 서비스를 꾸준히 업데이트하고 고도화할 수 있음. 따라서 초기 유저 유치에 필요한 비용이 들지 않음.
  • ‘노래 듣기’ 기능과 ‘노래 연습하기’ 기능을 서비스 내에서 스트리밍하는 것이 아닌, 원저작자의 유튜브 영상으로 이동하는 형태로 개발하여 데이터에 해당하는 노래들의 저작권 이용에 필요한 비용이 들지 않음.
  • 연 5$대의 서버 비용을 포함한 매우 적은 서비스 유지 비용으로 수익성 극대화
  1. 기존 음정 측정 기술과의 차별성 및 음역대 측정의 대중화
  • 순간의 음정을 측정하는 것에 그치던 기존 음정 측정 서비스들의 한계를 넘어 사용자의 최고음정과 최저음정을 빠르게(이분탐색 알고리즘 시간복잡도 O(logN)) 도출하여 음역대를 계산
  • 기존 음역대 측정은 개인의 주관적 판단에 의존하거나, 접근성이 떨어지는 전문가나 상업용 장비를 이용해야했으나 피치파인더를 통해 누구나 시공간의 제약 없이 객관적이고 정교한 음역대 측정이 가능해짐
  1. 기존 사업과의 협업 가능성
  • T사, K사 등 노래방 사업을 주력으로 하는 기업과의 협업을 기대할 수 있음
  • 피치파인더의 기능을 상업용 노래방 기기에서 컨텐츠로서의 기능으로 제공
  • 기업에서 제공하는 음정 정보와 음악 데이터를 연동하고 추가하여 피치파인더 서비스 고도화

결론

기존 중고거래에서는 ‘비대면 택배 거래’가 주가 되는 방식이였다. 그러던 중 이미 과포화된 중고거래 중개 서비스 사이에서 폭발적으로 성장한 스타트업 D사는 기존의 중고거래 방식(비대면 거래)에서 벗어나 ‘동네 사람들과의 직거래’라는 새로운 방식을 강조하고 이를 바탕으로 성장하여 중고거래의 기준을 ‘직거래’로 바꾸었으며, D사의 서비스명 자체가 중고거래의 대명사로 자리잡게 되었다.

피치파인더는 이와 같이 기존 시장에서 통상적으로 사용되던 ‘기준’과 ‘방식’에 새롭게 접근하고자 한다.

이미 크게 발전한 음원시장과 과포화된 음악 스트리밍 및 노래 추천 서비스들 사이에서 ‘들을’ 노래 추천을 위해 ‘취향’과 ‘장르’를 따지던 기존의 방식을 벗어나 ‘음정’과 ‘음역대’라는 노래 추천의 새로운 기준을 제시하는 피치파인더는 ‘부를’ 노래에 대한 수요를 만족시키며 노래 추천의 패러다임을 바꾸어 나갈 것이다.

이 과정에서 피치파인더는 음역대에 따른 노래 추천 기능 뿐만 아니라 개인의 음역대를 손쉽게 측정하는 기능과 이에 따른 개인화된 노래 추천 결과를 함께 제공한다.