기존 음악 추천 서비스는 단순한 장르나 키워드 기반으로 음악을 추천하여, 사용자의 현재 상황이나 감정 맥락을 제대로 반영하지 못합니다.
"카페에서 공부할 때 듣기 좋은 음악", "운동할 때 신나는 곡" 과 같은 자연스러운 요청에 대해 맥락을 이해하고 적절한 음악을 추천하는 시스템의 필요성이 대두되었습니다.
- 자연어 쿼리 분석: 사용자의 자연스러운 음악 요청을 이해하고 음악적 특성으로 변환
- 맥락 기반 추천: Spotify 음악 데이터의 9가지 특성을 활용한 정확한 음악 매칭
- 시각적 경험: AI 기반 플레이리스트 썸네일 자동 생성
- 실시간 맥락 인식: Chrome 확장 프로그램을 통한 웹 브라우징 맥락 분석
- 음악 특성:
danceability,energy,loudness,speechiness,acousticness,instrumentalness,liveness,valence,tempo - 예시 문장: 각 특성별로 높음/낮음을 표현하는 30개씩 한국어 예시 문장 수집
- 임베딩: Upstage
embedding-passage모델을 활용한 벡터 변환
- 코사인 유사도: 사용자 쿼리와 특성별 예시 문장간 유사도 계산
- 특성 선별: 상위 3개 관련성 높은 특성과 방향성(high/low) 결정
- 점수 계산: 선별된 특성 기반 음악별 추천 점수 산출
- Spotify Dataset: 약 17만곡의 음악 메타데이터 및 음향 특성
- 특성별 예시 문장: 총 540개의 한국어 맥락 문장
- 언어 필터링: 영어/한국어 곡만 선별, 인기도 20 이상 곡만 추천
- Google Gemini 2.0: 텍스트-이미지 생성 모델
- 프롬프트 최적화: LLM을 통한 활동/분위기 기반 시각적 프롬프트 생성
- 맥락 분석: 구체적 활동 vs 추상적 감정 구분하여 이미지 생성
- 자연어 음악 추천 API: 한국어 쿼리를 분석하여 맥락에 맞는 음악 20곡 추천
- AI 썸네일 생성: 쿼리 기반 플레이리스트 커버 이미지 자동 생성
- 웹 맥락 분석: Chrome 확장을 통한 실시간 웹페이지 내용 분석 및 음악 추천
- 실시간 특성 분석: 쿼리의 음악적 특성별 유사도 점수 제공
- 추천 정확도: 상위 3개 특성 기반 점수화로 맥락 적합성 향상
- 응답 속도: 임베딩 사전 계산으로 평균 응답 시간 단축
- 다양성: 중복 제거 및 배치 필터링으로 추천 곡 다양성 확보
- FastAPI: 고성능 REST API 서버 (1,471 라인)
- 임베딩 캐싱: 특성별 임베딩 사전 계산으로 성능 최적화
- 정규화: 음악 특성값 정규화로 공정한 비교 지표 제공
🎵 Music Context Protocol
├── 📦 FastAPI Server (app/)
│ ├── 🔌 API Endpoints
│ │ ├── /recommend # 음악 추천
│ │ ├── /generate_thumbnail # 썸네일 생성
│ │ └── /summarize # 웹페이지 요약
│ ├── 🧠 Core Logic
│ │ ├── 임베딩 기반 유사도 계산
│ │ ├── 특성별 점수 산출
│ │ └── AI 이미지 생성
│ └── 📊 Data Processing
│ ├── Spotify 17만곡 데이터
│ ├── 540개 예시 문장
│ └── 사전 계산 임베딩
└── 🌐 Chrome Extension API
└── 웹페이지 맥락 분석
curl -X POST "http://localhost:8000/recommend" \
-H "Content-Type: application/json" \
-d '{"query": "카페에서 공부할 때 듣기 좋은 음악"}'curl -X POST "http://localhost:8000/generate_thumbnail" \
-H "Content-Type: application/json" \
-d '{"query": "여름 해변 파티 음악"}'curl -X POST "http://localhost:8000/summarize" \
-H "Content-Type: application/json" \
-d '{"content": "웹페이지 텍스트 내용..."}'pip install -r requirements.txt
cp .env.example .env
# .env 파일에 API 키 설정uvicorn app.main:app --reload서버는 http://localhost:8000에서 실행됩니다.
| 이름 | 팀 | 역할 |
|---|---|---|
| 조석희 | DS | 음악 추천 알고리즘 설계 및 구현 |
| 정다연 | DS | 데이터 전처리 및 특성 분석 |
| 이경민 | DS | 임베딩 시스템 및 유사도 계산 |
| 윤희찬 | DE | FastAPI 서버 구축 및 배포 |
| 백준호 | DE | Chrome 확장 프로그램 개발 |
| 성우제 | DA | AI 썸네일 생성 시스템 |
🎵 음악과 AI의 만남으로 더 나은 음악 추천 경험을 제공합니다 ✨