Skip to content

An implementation of Shazam's song matching algorithm, modified specifically for PhiZone.

License

Notifications You must be signed in to change notification settings

PhiZone/seek-tune

 
 

Repository files navigation

SeekTune 🎵

screenshot

Demo in Video

Description 🎼

SeekTune is an implementation of Shazam's song recognition algorithm based on insights from these resources. The original version integrates Spotify and YouTube APIs to find and download songs; this version is modified to specifically adapt to PhiZone's needs and only preserves the core algorithm, removing online features and support for recording input. Support for SQLite is also removed for some issues regarding version incompatibilities.

Installation 🖥️

Prerequisites

Steps

Clone the repository:

git clone https://github.com/cgzirim/seek-tune.git

Install dependencies for the backend

cd seek-tune
go get ./...

Install dependencies for the client

cd seek-tune/client
npm install

Usage 🚴

▸ Start the Client App 🏃‍♀️‍➡️

# Assuming you're in the client directory:

npm start

▸ Start the Backend App 🏃‍♀️

In a separate terminal window:

cd seek-tune
go run *.go serve [-proto <http|https> (default: http)] [-port <port number> (default: 5000)]

▸ Find matches for a song/recording 🔎

go run *.go find <path-to-wav-file>

▸ Delete fingerprints and songs 🗑️

go run *.go erase

Example 📽️

Find matches of a song

$ go run *.go find songs/Voilà\ -\ André\ Rieu.wav
Top 20 matches:
        - Voilà by André Rieu, score: 5390686.00
        - I Am a Child of God by One Voice Children's Choir, score: 2539.00
        - I Have A Dream by ABBA, score: 2428.00
        - SOS by ABBA, score: 2327.00
        - Sweet Dreams (Are Made of This) - Remastered by Eurythmics, score: 2213.00
        - The Winner Takes It All by ABBA, score: 2094.00
        - Sleigh Ride by One Voice Children's Choir, score: 2091.00
        - Believe by Cher, score: 2089.00
        - Knowing Me, Knowing You by ABBA, score: 1958.00
        - Gimme! Gimme! Gimme! (A Man After Midnight) by ABBA, score: 1941.00
        - Take A Chance On Me by ABBA, score: 1932.00
        - Don't Stop Me Now - Remastered 2011 by Queen, score: 1892.00
        - I Do, I Do, I Do, I Do, I Do by ABBA, score: 1853.00
        - Everywhere - 2017 Remaster by Fleetwood Mac, score: 1779.00
        - You Will Be Found by One Voice Children's Choir, score: 1664.00
        - J'Imagine by One Voice Children's Choir, score: 1658.00
        - When You Believe by One Voice Children's Choir, score: 1629.00
        - When Love Was Born by One Voice Children's Choir, score: 1484.00
        - Don't Stop Believin' (2022 Remaster) by Journey, score: 1465.00
        - Lay All Your Love On Me by ABBA, score: 1436.00

Search took: 856.386557ms

Final prediction: Voilà by André Rieu , score: 5390686.00

Database 👯‍♀️

This application uses MongoDB as the only supported database.

  1. Install MongoDB

  2. Configure MongoDB Connection:
    To connect to your MongoDB instance, set the following environment variables:

    • DB_TYPE: Set this to "mongo" to indicate using MongoDB.
    • DB_USER: The username for your MongoDB database.
    • DB_PASS: The password for your MongoDB database.
    • DB_NAME: The name of the MongoDB database you want to use.
    • DB_HOST: The hostname or IP address of your MongoDB server.
    • DB_PORT: The port number on which your MongoDB server is listening.

    Note: The database connection URI is constructed using the environment variables.
    If the DB_USER or DB_PASS environment variables are not set, it defaults to connecting to mongodb://localhost:27017.

Resources 🗃️

Author ✒️

  • Chigozirim Igweamaka

License 🔒

This project is licensed under the MIT License - see the LICENSE file for details.

About

An implementation of Shazam's song matching algorithm, modified specifically for PhiZone.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 96.8%
  • Shell 3.2%