음악 무드/특성 분석 모듈 - 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여러 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/ # 오디오 파일
- 사용자가 좋아하는 곡들의 특성 평균 = 사용자 취향 벡터
- 새 곡의 특성과 취향 벡터 유사도 계산
- 유사도 높은 곡 추천
Private - Tunex