def section_by_section_analysis(model, audio_file, to_flatten): class_labels = ["Neutral", "Angry", "Happy", "Sad"] entireAudio = AudioSegment.from_wav(audio_file) chunkSize = 2000 numChunks = len(entireAudio) / chunkSize temporaryFileName = 'tempFile.wav' print(len(entireAudio)) print(numChunks) previousEndTime = 0 for endTime in range(chunkSize, len(entireAudio) + chunkSize, chunkSize): if (endTime > len(entireAudio)): lastBit = (len(entireAudio) - previousEndTime) * -1 newAudio = entireAudio[lastBit:] else: newAudio = entireAudio[previousEndTime:endTime] newAudio.export( temporaryFileName, format="wav") #Exports to a wav file in the current path. predicted_value = model.predict_one( get_feature_vector_from_mfcc(temporaryFileName, flatten=to_flatten)) print('section:', previousEndTime, '-', endTime, '(ms). predicted value:', predicted_value, '[', class_labels[predicted_value], ']') os.remove(temporaryFileName) previousEndTime = endTime
def ml_example(): to_flatten = True x_train, x_test, y_train, y_test, _ = extract_data(flatten=to_flatten) model = NN() print('Starting', model.name) model.train(x_train, y_train) model.evaluate(x_test, y_test) filename = '../dataset/Sad/09b03Ta.wav' print('prediction', model.predict_one( get_feature_vector_from_mfcc(filename, flatten=to_flatten)), 'Actual 3')
def ml_example(url, sourceName): print("URL is: ", url) print("Source Name is: ", sourceName) filename = sourceName urllib.request.urlretrieve(url, filename) print('file downloaded') to_flatten = True x_train, x_test, y_train, y_test, _ = extract_data(flatten=to_flatten) model = NN() print('Starting', model.name) model.train(x_train, y_train) model.evaluate(x_test, y_test) # filename = testingFileName + '.wav' # 0 => Neutral # Neutral File 1 # filename = './dataset/Neutral/03a02Nc.wav' # Neutral File 2 # filename = './dataset/Neutral/11b03Nb.wav' # 1 => Angry # Angry File 1 # filename = './dataset/Angry/03a04Wc.wav' # Angry File 2 # filename = './dataset/Angry/10a04Wa.wav' # 2 => Happy # Happy File 1 # filename = './dataset/Happy/03a05Fc.wav' # Happy File 2 # filename = './dataset/Happy/15a07Fb.wav' # 3 => Sad # Sad File 1 # filename = './dataset/Sad/09b03Ta.wav' # Sad File 2 # filename = './dataset/Sad/16a05Tb.wav' # print('prediction', model.predict_one( # get_feature_vector_from_mfcc(filename, flatten=to_flatten)), # 'Actual 1') # return model.predict_one(get_feature_vector_from_mfcc(filename, flatten=to_flatten)) emotions = model.predict_one( get_feature_vector_from_mfcc(filename, flatten=to_flatten)) print("Emotions are: ", emotions) finalEmotion = 0 for emotion in emotions: finalEmotion = emotion finalEmotion = finalEmotion.item() if finalEmotion == 0: finalEmotion = random.choice(numbers) print("Final Emotion is: ", finalEmotion) return finalEmotion
def lstm_example(): to_flatten = False x_train, x_test, y_train, y_test, num_labels = extract_data( flatten=to_flatten) y_train = np_utils.to_categorical(y_train) y_test_train = np_utils.to_categorical(y_test) print('Starting LSTM') model = LSTM(input_shape=x_train[0].shape, num_classes=num_labels) # model.train(x_train, y_train, x_test, y_test_train, n_epochs=50) # model.evaluate(x_test, y_test) filename = 'dataset/Sad/09b03Ta.wav' print( 'prediction', model.predict_one( get_feature_vector_from_mfcc(filename, flatten=to_flatten)), 'Actual 3')
def lstm_saved_model(): to_flatten = False x_train, x_test, y_train, y_test, num_labels = extract_data( flatten=to_flatten) y_train = np_utils.to_categorical(y_train) y_test_train = np_utils.to_categorical(y_test) print('Starting LSTM') model = LSTM(input_shape=x_train[0].shape, num_classes=num_labels, save_path="./lstm.h5") print("Loading") model.restore_model() # filename = '../dataset/03a01Wa.wav' filename = '../dataset/sad.wav' print("\nPredicted: {}\nActual: {}".format( get_class_name( model.predict_one(get_feature_vector_from_mfcc(filename, flatten=to_flatten))), get_class_name(3)))
def ml_example(): to_flatten = True x_train, x_test, y_train, y_test, _ = extract_data(flatten=to_flatten) model = NN() print('Starting', model.name) model.train(x_train, y_train) model.evaluate(x_test, y_test) filename = '../dataset/Sad/09b03Ta.wav' i = model.predict_one( get_feature_vector_from_mfcc(filename, flatten=to_flatten)) if i == 0: print("Prediction: Angry") elif i == 1: print("Prediction: Happy") elif i == 2: print("Prediction: Neutral") else: print("Prediction: Sad")
def cnn_example(): to_flatten = False x_train, x_test, y_train, y_test, num_labels = extract_data( flatten=to_flatten) y_train = np_utils.to_categorical(y_train) y_test_train = np_utils.to_categorical(y_test) in_shape = x_train[0].shape x_train = x_train.reshape(x_train.shape[0], in_shape[0], in_shape[1], 1) x_test = x_test.reshape(x_test.shape[0], in_shape[0], in_shape[1], 1) model = CNN(input_shape=x_train[0].shape, num_classes=num_labels) model.train(x_train, y_train, x_test, y_test_train) model.evaluate(x_test, y_test) filename = '../dataset/Sad/09b03Ta.wav' print('prediction', model.predict_one( get_feature_vector_from_mfcc(filename, flatten=to_flatten)), 'Actual 3') print('CNN Done')
def lstm_example(): to_flatten = False x_train, x_test, y_train, y_test, num_labels = extract_data( flatten=to_flatten) y_train = np_utils.to_categorical(y_train) y_test_train = np_utils.to_categorical(y_test) print('Starting LSTM') model = LSTM(input_shape=x_train[0].shape, num_classes=num_labels) print('Model Object Created, Going to train Model') model.train(x_train, y_train, x_test, y_test_train, n_epochs=50) print('Model Object trained, Going to evaluate Model') model.evaluate(x_test, y_test) print('Model Object Evaludated, Going to import testing audio') filename = './dataset/Sad/09b03Ta.wav' print( 'prediction', model.predict_one( get_feature_vector_from_mfcc(filename, flatten=to_flatten)), 'Actual 3') print('Finishing LSTM')
def lstm_example(): to_flatten = False x_train, x_test, y_train, y_test, num_labels = extract_data( flatten=to_flatten) y_train = np_utils.to_categorical(y_train) y_test_train = np_utils.to_categorical(y_test) print('Starting LSTM') model = LSTM(input_shape=x_train[0].shape, num_classes=num_labels, save_path="./lstm.h5") print("Training") model.train(x_train, y_train, x_test, y_test_train, n_epochs=10) print("Evaluating") model.evaluate(x_test, y_test) model.save_model() filename = '../dataset/Sad/09b03Ta.wav' # filename = './laugh.wav' print("\nPredicted: {}\nActual: {}".format( get_class_name( model.predict_one( get_feature_vector_from_mfcc(filename, flatten=to_flatten))), get_class_name(2)))
def get_feature_vector(file_path, flatten): return get_feature_vector_from_mfcc(file_path, flatten, mfcc_len=39)
def get_feature_vector(flatten, file_path="dataset"): return get_feature_vector_from_mfcc(file_path, flatten, mfcc_len=39)