Skip to content

YBIGTA/26th-conference-MusicContextProtocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎵 Music Context Protocol

YBIGTA 26기 컨퍼런스

사용자 맥락을 이해하는 AI 기반 음악 추천 시스템

목차

문제 정의

기존 음악 추천 서비스는 단순한 장르나 키워드 기반으로 음악을 추천하여, 사용자의 현재 상황이나 감정 맥락을 제대로 반영하지 못합니다.

"카페에서 공부할 때 듣기 좋은 음악", "운동할 때 신나는 곡" 과 같은 자연스러운 요청에 대해 맥락을 이해하고 적절한 음악을 추천하는 시스템의 필요성이 대두되었습니다.

세부 목표

  1. 자연어 쿼리 분석: 사용자의 자연스러운 음악 요청을 이해하고 음악적 특성으로 변환
  2. 맥락 기반 추천: Spotify 음악 데이터의 9가지 특성을 활용한 정확한 음악 매칭
  3. 시각적 경험: AI 기반 플레이리스트 썸네일 자동 생성
  4. 실시간 맥락 인식: Chrome 확장 프로그램을 통한 웹 브라우징 맥락 분석

접근 방법

1. 음악 특성 임베딩 시스템

  • 음악 특성: danceability, energy, loudness, speechiness, acousticness, instrumentalness, liveness, valence, tempo
  • 예시 문장: 각 특성별로 높음/낮음을 표현하는 30개씩 한국어 예시 문장 수집
  • 임베딩: Upstage embedding-passage 모델을 활용한 벡터 변환

2. 유사도 기반 추천 알고리즘

  • 코사인 유사도: 사용자 쿼리와 특성별 예시 문장간 유사도 계산
  • 특성 선별: 상위 3개 관련성 높은 특성과 방향성(high/low) 결정
  • 점수 계산: 선별된 특성 기반 음악별 추천 점수 산출

3. 데이터셋

  • Spotify Dataset: 약 17만곡의 음악 메타데이터 및 음향 특성
  • 특성별 예시 문장: 총 540개의 한국어 맥락 문장
  • 언어 필터링: 영어/한국어 곡만 선별, 인기도 20 이상 곡만 추천

4. AI 기반 썸네일 생성

  • Google Gemini 2.0: 텍스트-이미지 생성 모델
  • 프롬프트 최적화: LLM을 통한 활동/분위기 기반 시각적 프롬프트 생성
  • 맥락 분석: 구체적 활동 vs 추상적 감정 구분하여 이미지 생성

결과 및 주요 기능

🎯 핵심 기능

  1. 자연어 음악 추천 API: 한국어 쿼리를 분석하여 맥락에 맞는 음악 20곡 추천
  2. AI 썸네일 생성: 쿼리 기반 플레이리스트 커버 이미지 자동 생성
  3. 웹 맥락 분석: Chrome 확장을 통한 실시간 웹페이지 내용 분석 및 음악 추천
  4. 실시간 특성 분석: 쿼리의 음악적 특성별 유사도 점수 제공

📊 성능 지표

  • 추천 정확도: 상위 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
    └── 웹페이지 맥락 분석

API 사용법

음악 추천 API

curl -X POST "http://localhost:8000/recommend" \
  -H "Content-Type: application/json" \
  -d '{"query": "카페에서 공부할 때 듣기 좋은 음악"}'

썸네일 생성 API

curl -X POST "http://localhost:8000/generate_thumbnail" \
  -H "Content-Type: application/json" \
  -d '{"query": "여름 해변 파티 음악"}'

웹페이지 분석 API

curl -X POST "http://localhost:8000/summarize" \
  -H "Content-Type: application/json" \
  -d '{"content": "웹페이지 텍스트 내용..."}'

설치 및 실행

1. 환경 설정

pip install -r requirements.txt
cp .env.example .env
# .env 파일에 API 키 설정

2. 서버 실행

uvicorn app.main:app --reload

서버는 http://localhost:8000에서 실행됩니다.

팀 구성

이름 역할
조석희 DS 음악 추천 알고리즘 설계 및 구현
정다연 DS 데이터 전처리 및 특성 분석
이경민 DS 임베딩 시스템 및 유사도 계산
윤희찬 DE FastAPI 서버 구축 및 배포
백준호 DE Chrome 확장 프로그램 개발
성우제 DA AI 썸네일 생성 시스템

🎵 음악과 AI의 만남으로 더 나은 음악 추천 경험을 제공합니다 ✨

About

26th-conference-MusicContextProtocol

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors