def get_genre(model, music_path): "Predict genre of music using a trained model" prediction = model.predict(extract_audio_features(music_path)) predict_genre = GenreFeatureData().genre_list[np.argmax(prediction)] return predict_genre
""" import os import torch import numpy as np import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import matplotlib.pyplot as plt from GenreFeatureData import ( GenreFeatureData, ) # local python class with Audio feature extraction (librosa) genre_features = GenreFeatureData() # if all of the preprocessed files do not exist, regenerate them all for self-consistency if (os.path.isfile(genre_features.train_X_preprocessed_data) and os.path.isfile(genre_features.train_Y_preprocessed_data) and os.path.isfile(genre_features.dev_X_preprocessed_data) and os.path.isfile(genre_features.dev_Y_preprocessed_data) and os.path.isfile(genre_features.test_X_preprocessed_data) and os.path.isfile(genre_features.test_Y_preprocessed_data)): print("Preprocessed files exist, deserializing npy files") genre_features.load_deserialize_data() else: print("Preprocessing raw audio files") genre_features.load_preprocess_data() train_X = torch.from_numpy(genre_features.train_X).type(torch.Tensor)
import os from keras.models import Sequential from keras.layers.recurrent import LSTM from keras.layers import Dense from keras.optimizers import Adam from GenreFeatureData import GenreFeatureData # local python class with Audio feature extraction (librosa) # Turn off TF verbose logging os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' # or any {'0', '1', '2'} genre_features = GenreFeatureData() genre_features.load_preprocess_data() # genre_features.load_deserialize_data() # Keras optimizer defaults: # Adam : lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8, decay=0. # RMSprop: lr=0.001, rho=0.9, epsilon=1e-8, decay=0. # SGD : lr=0.01, momentum=0., decay=0. opt = Adam() batch_size = 35 nb_epochs = 400 print("Training X shape: " + str(genre_features.train_X.shape)) print("Training Y shape: " + str(genre_features.train_Y.shape)) print("Dev X shape: " + str(genre_features.dev_X.shape)) print("Dev Y shape: " + str(genre_features.dev_Y.shape)) print("Test X shape: " + str(genre_features.test_X.shape)) print("Test Y shape: " + str(genre_features.test_X.shape)) input_shape = (genre_features.train_X.shape[1],