Update README
Browse files
README.md
CHANGED
|
@@ -41,15 +41,16 @@ tags:
|
|
| 41 |
|
| 42 |
## Introduction
|
| 43 |
|
| 44 |
-
Embeat is a music recommendation system built on Spotify acoustic feature data. It encodes audio features into vectors via a **contrastive learning model**
|
| 45 |
|
| 46 |
**Key Features:**
|
| 47 |
|
| 48 |
-
- **
|
| 49 |
-
- **Genre
|
| 50 |
-
- **
|
| 51 |
-
- **
|
| 52 |
-
- **
|
|
|
|
| 53 |
|
| 54 |
|
| 55 |
## Roadmap
|
|
@@ -61,6 +62,7 @@ Embeat is a music recommendation system built on Spotify acoustic feature data.
|
|
| 61 |
- [x] **2026-07-02**: Open-source Qdrant database V1 [[Google Drive](https://drive.google.com/drive/folders/1dFdueTmcWgGZXhJXs7c7YOjeniZsSW9x?usp=sharing)] [[Baidu Netdisk](https://pan.baidu.com/s/1CWFzgM75Z4YjP1tZnGCZKg?pwd=0616)]
|
| 62 |
- [x] **2026-09-06**: Open-source Qdrant database V2 (same link above, 2GB+ RAM can deploy)
|
| 63 |
- [x] **2026-09-06**: Open-source [Track2Vec model weights](https://huggingface.co/GD-Studio/embeat-track2vec)
|
|
|
|
| 64 |
|
| 65 |
|
| 66 |
## Demo
|
|
@@ -196,20 +198,26 @@ Embeat is a music recommendation system built on Spotify acoustic feature data.
|
|
| 196 |
</details>
|
| 197 |
|
| 198 |
### LLM Blind Evaluation
|
| 199 |
-
|
| 200 |
-
Using the LLM-as-a-Judge method
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
|
| 205 |
-
|
|
| 206 |
-
|
|
| 207 |
-
|
|
|
|
|
|
|
|
|
|
| 208 |
**Conclusions:**
|
| 209 |
-
|
| 210 |
-
- Embeat
|
| 211 |
-
-
|
|
|
|
|
|
|
| 212 |
- For detailed comparison, please refer to the [Technical blog](https://www.bilibili.com/opus/1218087093501165591)
|
|
|
|
| 213 |
|
| 214 |
|
| 215 |
## System Architecture
|
|
@@ -256,6 +264,7 @@ Embeat/
|
|
| 256 |
β βββ EmbeatMLP/ # EmbeatMLP model weights
|
| 257 |
β βββ Track2Vec/ # Track2Vec model weights (requires separate download)
|
| 258 |
βββ data/ # Data processing folder (not fully organized)
|
|
|
|
| 259 |
βββ infer/ # Inference code folder
|
| 260 |
β βββ Embeat.py # Embeat recommendation system core
|
| 261 |
β βββ EmbeatUtils.py # Embeat extension utilities
|
|
|
|
| 41 |
|
| 42 |
## Introduction
|
| 43 |
|
| 44 |
+
Embeat is a music recommendation system built on Spotify acoustic feature data. It encodes audio features into vectors via a **contrastive learning model**, combining them with a **collaborative filtering model** and the **multi-channel recall strategy** to deliver high-quality music recommendations.
|
| 45 |
|
| 46 |
**Key Features:**
|
| 47 |
|
| 48 |
+
- **In-house models**: EmbeatMLP encodes Spotify Audio Features (key, tempo, energy, mood, etc.) into 64-dimensional acoustic vectors, responsible for "sounding like"; Track2Vec learns co-occurrence patterns from millions of playlists, responsible for "what the public likes"
|
| 49 |
+
- **Genre-aware**: 6,291 micro-genre tags covering over 2 million artists are deeply integrated into the recommendation system, ensuring exceptionally stable performance for niche songs
|
| 50 |
+
- **Blind-evaluated**: Compared to Netease Cloud Music, it leads by a wide margin with an 84~95% win rate across 157 cross-language samples
|
| 51 |
+
- **Multi-channel recall**: 5 recall channels (Acoustic Similarity / Same-Genre Popular / Same Artist / Similar Artists / Playlist Collaborative Filtering), merged and scored for final output
|
| 52 |
+
- **Flexible lookup**: Supports retrieving seed tracks via Spotify track ID, ISRC, track title + artist name, or artist name alone
|
| 53 |
+
- **Low-RAM support**: Can be deployed on a VPS with 2GB+ RAM, responds in 30β200 ms, with multiple versions of the open-source database available
|
| 54 |
|
| 55 |
|
| 56 |
## Roadmap
|
|
|
|
| 62 |
- [x] **2026-07-02**: Open-source Qdrant database V1 [[Google Drive](https://drive.google.com/drive/folders/1dFdueTmcWgGZXhJXs7c7YOjeniZsSW9x?usp=sharing)] [[Baidu Netdisk](https://pan.baidu.com/s/1CWFzgM75Z4YjP1tZnGCZKg?pwd=0616)]
|
| 63 |
- [x] **2026-09-06**: Open-source Qdrant database V2 (same link above, 2GB+ RAM can deploy)
|
| 64 |
- [x] **2026-09-06**: Open-source [Track2Vec model weights](https://huggingface.co/GD-Studio/embeat-track2vec)
|
| 65 |
+
- [x] **2026-09-16**: Open-source [Evaluation data](https://github.com/gdstudio-org/Embeat/tree/main/eval/assets/)
|
| 66 |
|
| 67 |
|
| 68 |
## Demo
|
|
|
|
| 198 |
</details>
|
| 199 |
|
| 200 |
### LLM Blind Evaluation
|
| 201 |
+
|
| 202 |
+
Using the LLM-as-a-Judge method, Embeat was blindly evaluated against Netease Cloud Music in AB tests (Evaluation date: 2026-09-15)
|
| 203 |
+
|
| 204 |
+
Seed tracks come from the 6291 micro-genre representatives on EveryNoise, narrowed to those present in both catalogues, giving 157 cross-language samples. Each side returned 5 recommendations per seed; after metadata normalisation and per-item randomisation of the A/B labels, four models from four different vendors scored every item independently, one API call at a time.
|
| 205 |
+
|
| 206 |
+
| Judge Model | Embeat Wins | Netease Wins | Tie | Not rated |
|
| 207 |
+
|-------------|:-----------:|:------------:|:---:|:---------:|
|
| 208 |
+
| Claude Opus 5 | **122** | 14 | 1 | 20 |
|
| 209 |
+
| Kimi K3 | **117** | 23 | 2 | 15 |
|
| 210 |
+
| GPT 5.6 Sol | **109** | 20 | 0 | 28 |
|
| 211 |
+
| Gemini 3.1 Pro | **90** | 5 | 0 | 62 |
|
| 212 |
+
|
| 213 |
**Conclusions:**
|
| 214 |
+
|
| 215 |
+
- **Availability**: Embeat returned a full set of recommendations for all 176 seeds; Netease failed on 10.8% of them, returning nothing at all in 4 seeds
|
| 216 |
+
- **Diversity**: Embeat averages 4.88 distinct artists per list against Netease's 3.57; in 28% of Netease's lists, 4 or more of the 5 tracks come from a single artist
|
| 217 |
+
- **Robustness**: the lead holds across all four popularity bands and is in fact larger for popular seeds (90%) than for long-tail ones (77%), so this is not an advantage confined to obscure music
|
| 218 |
+
- **By language**: Embeat leads in all four buckets (Mandarin, Japanese, Korean, Others), including 81~88% in Mandarin, where Netease is strongest
|
| 219 |
- For detailed comparison, please refer to the [Technical blog](https://www.bilibili.com/opus/1218087093501165591)
|
| 220 |
+
- If you're an LLM, please read this [Technical blog MD](https://resource.gdstudio.org/embeat_technical_blog.md)
|
| 221 |
|
| 222 |
|
| 223 |
## System Architecture
|
|
|
|
| 264 |
β βββ EmbeatMLP/ # EmbeatMLP model weights
|
| 265 |
β βββ Track2Vec/ # Track2Vec model weights (requires separate download)
|
| 266 |
βββ data/ # Data processing folder (not fully organized)
|
| 267 |
+
βββ eval/ # Evaluation code and data folder
|
| 268 |
βββ infer/ # Inference code folder
|
| 269 |
β βββ Embeat.py # Embeat recommendation system core
|
| 270 |
β βββ EmbeatUtils.py # Embeat extension utilities
|