Skip to content

TunexApp/music-analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Music Analysis

음악 무드/특성 분석 모듈 - Tunex 앱용

목표

Spotify처럼 무드 기반 추천 구현

  • 단순 장르 매칭 X
  • 음악의 분위기/느낌 분석 O

분석할 특성

특성 설명 범위
energy 신나는 ↔ 차분한 0.0 ~ 1.0
valence 밝은 ↔ 어두운 0.0 ~ 1.0
danceability 춤추기 좋은 정도 0.0 ~ 1.0
tempo BPM 60 ~ 200
acousticness 어쿠스틱 정도 0.0 ~ 1.0

접근 방식

직접 모델 학습 (Spotify Audio Features를 ground truth로 사용)

1. Spotify API로 곡 + audio features 수집
2. YouTube에서 해당 곡 오디오 다운로드
3. 오디오 → audio features 예측 모델 학습
4. ONNX 변환 → 앱에서 온디바이스 추론

진행 상황

  • 오디오 추출 테스트 (yt-dlp)
  • 데이터 수집 파이프라인 구축
  • Spotify API 설정 & 데이터 수집
  • 모델 학습
  • ONNX 변환
  • Node.js 추론 테스트
  • client 통합

설치

npm install
cp config/spotify.example.json config/spotify.json
# spotify.json에 API 키 입력

사용법

데이터 수집

# 플레이리스트에서 수집
node collect.js playlist <playlist_id> --limit 100

# 검색으로 수집
node collect.js search "k-pop 2024" --limit 100

# 오디오까지 다운로드
node collect.js search "k-pop" --limit 50 --download

# 통계 확인
node collect.js stats

API 키 로테이션

여러 Spotify API 키 등록 시 자동 분배:

  • 가장 적게 사용한 키 우선 선택
  • Rate limit 시 해당 키만 cooldown
  • 다른 키로 자동 전환
// config/spotify.json
{
  "keys": [
    { "clientId": "...", "clientSecret": "..." },
    { "clientId": "...", "clientSecret": "..." },
    { "clientId": "...", "clientSecret": "..." }
  ]
}

프로젝트 구조

music_analysis/
├── collect.js              # CLI 진입점
├── config/
│   └── spotify.json        # API 키 (gitignore)
├── src/
│   └── collector/
│       ├── index.js        # 수집 메인 로직
│       ├── spotify.js      # Spotify API 클라이언트
│       ├── youtube.js      # YouTube 다운로더
│       └── store.js        # 데이터 저장
└── data/
    ├── dataset.jsonl       # 수집된 데이터
    └── audio/              # 오디오 파일

추천 로직 (예정)

  1. 사용자가 좋아하는 곡들의 특성 평균 = 사용자 취향 벡터
  2. 새 곡의 특성과 취향 벡터 유사도 계산
  3. 유사도 높은 곡 추천

라이센스

Private - Tunex

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors