/SongNet

Realizing "What if machines could just hear and predict what my song sounded like?"

Primary LanguageJupyter Notebook

SongNet

Realizing "What if machines could just hear and predict what my song sounded like?"

---From the hearts, efforts and fingers of Aisha Dantuluri, Tyler Farnan and Soumyaraj Bose (Group 51) and the mind of Robert D. Smith (https://github.com/teticio/Deej-A.I.)

Install dependencies (if not present): pip install pandas tensorflow tensorflow-probability matplotlib seaborn

Make sure that your version of tensorflow is >=2.1.0. Before running any of the training notebooks, make sure to change the kernel to the one on which tensorflow is installed.

Folder Code Notebooks 0.1: Contains notebooks for running all of the processes involved in this project

MakeSongNet.ipynb: Extracts songs from the file of playlists obtained from the Spotify API and creates a .txt file that contains a network where song IDs serve as nodes

01_Spectrogram_Preprocessing.ipynb: Reads the .png files of the Mel Spectrograms from the dataset used by DEEJ-A.I. and converts them into numpy arrays for training and analysis. Stores the numpy arrays in separate .txt files each for the training and validation set

02_AE_dev_1.ipynb: Template for running all the deep learning models; same template has been used and modified for the five models (A01, A02-04, B - VAE). It runs all the functions from scaling and normalizing to training the model and displaying the latent representations.

03_Community_Detection.ipynb: Contains the functionality from networkx to generate the song network; works as a template for MakeSongNet.ipynb

04_Cluster_vs_Community_Analysis.ipynb: Contains training for first model (Model A0) and all functionality for optimal cluster generation and cluster and community analysis; Works as a template for all other model notebooks

Model Selection.ipynb: Contains functionality involving training, validation and cluster and community analysis for all convolutional AE models A01-03 (here, A-C). The cluster and community analysis for these models is also contained in notebooks in the folder Model Clustering Notebooks. The model weights and the histories are stored in the folders Model Weights and history pickles respectively. To reuse a model from Model Weights, use <network object>.load_weights(os.getcwd() + 'Model Weights\model_name')

VAE_08.ipynb: Contains all functionality and model for the variational autoencoder; its model is stored in model_085. Reuse the VAE model using the same highlighted functionality as above