Index your music library by how it sounds. OpenL3 embeddings and pgvector clusters, self-hosted.
https://poesterlin.github.io/sole/ โ// readme
Sole
Sole browses a local music collection and recommends tracks by sound. Music Assistant supplies metadata and playback. The Python worker analyses audio with pretrained OpenL3.
Each analysed track gets an embedding: 512 numbers stored in PostgreSQL. Sole compares embeddings and groups tracks into clusters. The interface calls these groups vibes.
Why I made it
I wanted background music that fits the time of day. I wanted a way to curate my song library. I also wanted Spotify-like song recommendations from a self-hosted app using my own music. Sole needs no listening history or model training on your collection. It uses Music Assistant metadata to index files and request playback.
Recommendations combine audio similarity, likes, artist limits, and a penalty for similar picks (recommendation code). Cluster names use the three most frequent artists (naming code).
Requirements and limits
- Install Docker Compose v2,
curl,โฆ