YouTube Music PC 버전에서 실시간 가사 동기화를 제공하는 Chrome 확장 프로그램입니다. PC 버전은 가사 기능이 없어 사용자 불편을 초래하며, 본 프로젝트는 OpenAI Whisper 모델과 코사인 유사도를 활용한 임베딩 매칭으로 가사를 동기화하여 음악 감상 경험을 향상시킵니다.
YouTube Music의 PC 버전은 실시간 가사 기능을 지원하지 않아 사용자 경험에 한계가 있습니다. 이 Chrome 확장 프로그램은 다음 목표를 달성합니다:
- 현재 재생 중인 음악에 맞춰 가사를 실시간으로 표시.
- OpenAI Whisper 모델로 일반 가사를 시간 동기화된 가사로 변환.
- 코사인 유사도를 활용한 임베딩 매칭으로 동기화 정확도 향상.
- YouTube Music 웹 플레이어에 통합된 직관적 UI 제공.
- 자체 가사 데이터베이스를 통해 최소 80% 동기화 정확도 목표.
- YouTube Music에서 재생 중인 음악에 가사를 실시간으로 동기화.
- 자체 데이터베이스를 통해 80% 이상의 동기화 정확도 제공.
- OpenAI Whisper 모델을 활용해 오디오 스트림에서 가사를 추출하고 시간 동기화:
- "그렇게 말하지 마" →
[00:31.29] 그렇게 말하지 마 - "제발 그녈 욕하지 말아줘" →
[00:34.74] 제발 그녈 욕하지 말아줘 - "그 누구보다도 내겐 좋은 여자니까" →
[00:38.91] 그 누구보다도 내겐 좋은 여자니까
- "그렇게 말하지 마" →
가사 동기화 정확도를 높이기 위해 다음 과정을 거칩니다:
- 입력 수집: 사용자가 음악 파일과 원본 가사를 업로드.
- 보컬 분리 및 정규화: Demucs를 이용해 보컬을 분리하고, 음성 인식 성능 향상을 위해 음량을 정규화.
- Whisper 기반 음성 인식: OpenAI Whisper 모델을 통해 오디오에서 시간 정보가 포함된 문장을 추출.
- 임베딩 기반 문장 매칭: Whisper 결과와 원본 가사를 Sentence-BERT로 임베딩하고, 코사인 유사도를 계산하여 정합 문장을 매칭.
- 정합 가사 생성: 매칭된 문장을 시간 순으로 정렬하여
.json형식의 싱크 가사 파일 생성.
- YouTube Music 플레이어에 통합된 간단하고 직관적인 UI.
- 가사 패널을 토글 가능하며, 재생과 동기화된 가사 강조 표시.
- Python 3.10.11: 백엔드 및 Whisper 모델 처리.
- HTML5: UI 구조.
- JavaScript: 확장 프로그램 로직.
- CSS: UI 스타일링.
- OpenAI Whisper: 자동 음성 인식(ASR) 모델. 모델 선정 과정.
- SQLite: 트랙 메타데이터 및 동기화 가사 저장.
- FastAPI: 가사 조회 및 입력 API.
- Visual Studio Code: 코딩 및 디버깅.
- HeidiSQL: SQLite 데이터베이스 관리.
- FFmpeg: 오디오/비디오 스트림 처리 및 변환.
- content.js: YouTube Music 페이지에서 DOM 정보를 추출하여 트랙 및 재생 상태 식별.
- background.js: 브라우저 영역에서 이벤트 리스너 관리.
- popup.js: UI 렌더링 및 API 호출.
- manifest.json: 확장 프로그램 권한 및 설정.
- lyrics_pending: 관리자 검증 대기 가사.
- lyrics: 동기화된 가사 데이터.
- tracks: 트랙 메타데이터(제목, 가수, 앨범).
- tracks_fts_v2: 효율적 검색을 위한 Full-Text Search 테이블.
- 설명: 트랙에 대한 동기화된 가사 조회.
- 쿼리 파라미터:
필드 타입 설명 trackName String 트랙 제목 artistName String 가수 이름 albumName String 앨범 이름 - 응답: JSON 형식의 동기화 가사.

- 이슈: 응답 지연 문제 (이슈 #2).
- 설명: 새로운 동기화 가사 입력.
- 쿼리 파라미터:
필드 타입 설명 trackName String 트랙 제목 artistName String 가수 이름 albumName String 앨범 이름 duration Number 트랙 길이(초) synced_lyrics String 동기화 가사 - 응답: 입력 성공/실패 메시지.
- YouTube Music 플레이어에 통합된 스크롤 가능 가사 패널.
- 재생과 동기화된 가사 강조 표시.
- 팝업 버튼으로 가사 패널 토글 가능.
- 동기화 정확도: Whisper 모델로 약 80% 정확도 달성.
- 코사인 유사도: 입바딩 매칭으로 동기화 오류 10% 감소.
- API 응답 시간: 평균 500ms, 최적화 진행 중 (이슈 #2).
- 사용자 피드백: UI 직관성 호평, 테마 사용자화 제안.
이 프로젝트는 MIT 라이선스에 따라 배포됩니다.

