ShuffleNet

Insipiration

I was listening to music on iTunes and had the shuffle feature on. The songs were pretty random because that is what shuffle does but I didn't like the order of songs. A slow song followed by a fast song and so on. Maybe someone did like that but I didn't.

What it does

ShuffleNet learns your song listening patterns and then recommends songs according to your current and past history of songs. It automatically plays the best recommendation of the current playing song if not hindered by the user.

How we built it

There are 2 major segments of this project.

  1. Song analysis
  2. Machine Learning

We used the Librosa library for song processing. We converted each song to 240 features. For predictions, I used a recurrent neural network. Tensorflow is used for training and predictions. The model is then trained on the albums available in the user's library.

The GUI was created by the PyQt5 library.

Challenges we ran into

Calculating 240 features for each song was hard. Each song had a different length. I'm not very familiar with signal processing so this was a challenging part. I've also never used GUI in python, so learning and implementing it under a time constraint was challenging. Processing the iTunes library was a bit tricky and restrictive so we had to find work-arounds which initially was very buggy.

Accomplishments that we're proud of

I was successful in finding key song parts using calculus and developed my own algorithm for best key parts of a song. We are proud of our GUI which is extremely simple and has all the core functions.

What we learnt

We learnt signal processing is quite powerful and not exploited efficiently by many. There is lot more to learn there. We also learnt neural networks processing for audio which is a new area of research.

What's next for ShuffleNet

Implementing better predictions using better neural nets and better signal processing is our focus. We also plan on adding a little more functionality to our GUI.

Built With

Share this project:
×

Updates