def EmotionAnalyzerSVM(duration, execution_id): slice_audio_dir = 'audio_tmp' model_path = 'model.svm' interval = 10 file_name = str(execution_id) with open(file_name + '_audio.csv', 'w') as outfile: columns = [ "from", "to", "next_offset", "Full_Arousal", "Full_Valence", "Foreground_Arousal", "Foreground_Valence", "Background_Arousal", "Background_Valence" ] w = csv.DictWriter(outfile, fieldnames=columns) w.writeheader() for i in range(0, int(duration), interval / 2): from_duration = i to_duration = interval + i next_offset = i + interval / 2 chunk = str(from_duration) + "to" + str(to_duration) + "sec" outfile.write( str(from_duration) + ',' + str(to_duration) + ',' + str(next_offset) + ',') try: sentiment = aT.fileRegression( slice_audio_dir + file_name[0:15] + "_" + chunk + "_" + "S_full" + ".wav", model_path, "svm")[0] #print("sentiment for Full Spectrum"+chunk+"- Arousal:"+sentiment[0]+"; Valence:"+sentiment[1] ) outfile.write( str(sentiment[0]) + ',' + str(sentiment[1]) + ',') except TypeError: pass try: sentiment2 = aT.fileRegression( slice_audio_dir + file_name[0:15] + "_" + chunk + "_" + "S_foreground" + ".wav", model_path, "svm")[0] #print("sentiment for Foreground"+chunk+"- Arousal:"+sentiment2[0]+"; Valence:"+sentiment2[1] ) outfile.write( str(sentiment2[0]) + ',' + str(sentiment2[1]) + ',') except TypeError: pass try: sentiment3 = aT.fileRegression( slice_audio_dir + file_name[0:15] + "_" + chunk + "_" + "S_background" + ".wav", model_path, "svm")[0] #print("sentiment for background"+chunk+"- Arousal:"+sentiment3[0]+"; Valence:"+sentiment3[1] ) outfile.write(str(sentiment3[0]) + ',' + str(sentiment3[1])) except TypeError: pass outfile.write("\n") # EmotionAnalyzerSVM('6495',str(slice_audio_dir),str(model_path),execution_id)
def regressionFolderWrapper(inputFolder, model_type, model_name): files = "*.wav" if os.path.isdir(inputFolder): strFilePattern = os.path.join(inputFolder, files) else: strFilePattern = inputFolder + files wavFilesList = [] wavFilesList.extend(glob.glob(strFilePattern)) wavFilesList = sorted(wavFilesList) if len(wavFilesList) == 0: print("No WAV files found!") return Results = [] for wavFile in wavFilesList: R, regressionNames = aT.fileRegression(wavFile, model_name, model_type) Results.append(R) Results = numpy.array(Results) for i, r in enumerate(regressionNames): [Histogram, bins] = numpy.histogram(Results[:, i]) centers = (bins[0:-1] + bins[1::]) / 2.0 plt.subplot(len(regressionNames), 1, i + 1) plt.plot(centers, Histogram) plt.title(r) plt.show()
def regressionFileWrapper(inputFile, model_type, model_name): if not os.path.isfile(inputFile): raise Exception("Input audio file not found!") R, regressionNames = aT.fileRegression(inputFile, model_name, model_type) for i in range(len(R)): print("{0:s}\t{1:.3f}".format(regressionNames[i], R[i]))
def regressionFolderWrapper(inputFolder, model_type, model_name): files = "*.wav" if os.path.isdir(inputFolder): strFilePattern = os.path.join(inputFolder, files) else: strFilePattern = inputFolder + files wavFilesList = [] wavFilesList.extend(glob.glob(strFilePattern)) wavFilesList = sorted(wavFilesList) if len(wavFilesList) == 0: print("No WAV files found!") return Results = [] for wavFile in wavFilesList: R, regressionNames = aT.fileRegression(wavFile, model_name, model_type) Results.append(R) Results = numpy.array(Results) for i, r in enumerate(regressionNames): [Histogram, bins] = numpy.histogram(Results[:, i]) centers = (bins[0:-1] + bins[1::]) / 2.0 plt.subplot(len(regressionNames), 1, i + 1) plt.plot(centers, Histogram) plt.title(r) plt.show()
def regressionFileWrapper(inputFile, model_type, model_name): if not os.path.isfile(inputFile): raise Exception("Input audio file not found!") R, regressionNames = aT.fileRegression(inputFile, model_name, model_type) for i in range(len(R)): print("{0:s}\t{1:.3f}".format(regressionNames[i], R[i]))
def regressionFolderWrapperLinearlySeparable(inputFolder, model_type, model_name): files = "*.wav" if os.path.isdir(inputFolder): strFilePattern = os.path.join(inputFolder, files) else: strFilePattern = inputFolder + files wavFilesList = [] wavFilesList.extend(glob.glob(strFilePattern)) wavFilesList = sorted(wavFilesList) if len(wavFilesList) == 0: print("No WAV files found!") return Results = [] for wavFile in wavFilesList: R = aT.fileRegression(wavFile, model_name, model_type) Results.append(R) Results = numpy.array(Results) #Reasonable scatterplot for regression N = len(Results) y = numpy.arange(N) col = numpy.where(Results[:, 0] < .5, 'r', 'b') plt.scatter(y, Results, c=col, alpha=0.6) plt.show()
def get_emotions(self, audio_file_path, model_path, model_name): afp = Path(audio_file_path) model = Path(model_path) / model_name if not os.path.exists(Path(model_path)): print('Model folder does not exist') return if not os.path.exists(afp): print('File does not exist') return return aT.fileRegression(str(afp), str(model), 'svm')
def regressionFolderWrapper(inputFolder, model_type, model_name): files = "*.wav" if os.path.isdir(inputFolder): strFilePattern = os.path.join(inputFolder, files) else: strFilePattern = inputFolder + files wavFilesList = [] wavFilesList.extend(glob.glob(strFilePattern)) wavFilesList = sorted(wavFilesList) if len(wavFilesList) == 0: print("No WAV files found!") return Results = [] SyncFileNames = [] for wavFile in wavFilesList: R, regressionNames = aT.fileRegression(wavFile, model_name, model_type) Results.append(R) SyncFileNames.append(wavFile) Results = numpy.array(Results) # for i, r in enumerate(regressionNames): # [Histogram, bins] = numpy.histogram(Results[:, i]) # centers = (bins[0:-1] + bins[1::]) / 2.0 # plt.subplot(len(regressionNames), 1, i + 1) # plt.plot(centers, Histogram) # plt.title(r) # plt.show() #Reasonable scatterplot for regression N = len(Results) for idx, res in enumerate(Results): filename = SyncFileNames[idx] print("Results - {0} : {1}".format(Results[idx], filename)) t = numpy.arange(0.5, N) y = numpy.arange(N) col = numpy.where(Results[..., 0] < 0.5, 'r', 'b') plt.scatter(y, Results, c=col, alpha=0.6) plt.axhline(y=0.5, color='r', linestyle='--') plt.show()
'hmmTemp2', True, root_data_path + 'pyAudioAnalysis/data//scottish.segments') # test 2 print("\n\n\n * * * TEST 7 * * * \n\n\n") aT.featureAndTrainRegression(root_data_path + "pyAudioAnalysis/data/speechEmotion", 1, 1, 0.050, 0.050, "svm_rbf", "temp.mod", compute_beat=False) print( aT.fileRegression( root_data_path + "pyAudioAnalysis/data/speechEmotion/01.wav", "temp.mod", "svm_rbf")) print("\n\n\n * * * TEST 8 * * * \n\n\n") aT.featureAndTrainRegression(root_data_path + "pyAudioAnalysis/data/speechEmotion", 1, 1, 0.050, 0.050, "svm", "temp.mod", compute_beat=False) print( aT.fileRegression( root_data_path + "pyAudioAnalysis/data/speechEmotion/01.wav",
def sentiments(filepath): results = aT.fileRegression( filepath, "/home/mscuser/pyaudio/pyAudioAnalysis/pyAudioAnalysis/data/speechEmotion/", "svm") return results
print("\n\n\n * * * TEST 3 * * * \n\n\n") [Fs, x] = audioBasicIO.readAudioFile(root_data_path + "pyAudioAnalysis/data/doremi.wav") x = audioBasicIO.stereo2mono(x) specgram, TimeAxis, FreqAxis = audioFeatureExtraction.stChromagram(x, Fs, round(Fs * 0.040), round(Fs * 0.040), True) print("\n\n\n * * * TEST 4 * * * \n\n\n") aT.featureAndTrain([root_data_path +"SM/speech",root_data_path + "SM/music"], 1.0, 1.0, 0.2, 0.2, "svm", "temp", True) print("\n\n\n * * * TEST 5 * * * \n\n\n") [flagsInd, classesAll, acc, CM] = aS.mtFileClassification(root_data_path + "pyAudioAnalysis/data//scottish.wav", root_data_path + "pyAudioAnalysis/data/svmSM", "svm", True, root_data_path + 'pyAudioAnalysis/data/scottish.segments') print("\n\n\n * * * TEST 6 * * * \n\n\n") aS.trainHMM_fromFile(root_data_path + 'radioFinal/train/bbc4A.wav', root_data_path + 'radioFinal/train/bbc4A.segments', 'hmmTemp1', 1.0, 1.0) aS.trainHMM_fromDir(root_data_path + 'radioFinal/small', 'hmmTemp2', 1.0, 1.0) aS.hmmSegmentation(root_data_path + 'pyAudioAnalysis/data//scottish.wav', 'hmmTemp1', True, root_data_path + 'pyAudioAnalysis/data//scottish.segments') # test 1 aS.hmmSegmentation(root_data_path + 'pyAudioAnalysis/data//scottish.wav', 'hmmTemp2', True, root_data_path + 'pyAudioAnalysis/data//scottish.segments') # test 2 print("\n\n\n * * * TEST 7 * * * \n\n\n") aT.featureAndTrainRegression(root_data_path + "pyAudioAnalysis/data/speechEmotion", 1, 1, 0.050, 0.050, "svm_rbf", "temp.mod", compute_beat=False) print(aT.fileRegression(root_data_path + "pyAudioAnalysis/data/speechEmotion/01.wav", "temp.mod", "svm_rbf")) print("\n\n\n * * * TEST 8 * * * \n\n\n") aT.featureAndTrainRegression(root_data_path + "pyAudioAnalysis/data/speechEmotion", 1, 1, 0.050, 0.050, "svm", "temp.mod", compute_beat=False) print(aT.fileRegression(root_data_path + "pyAudioAnalysis/data/speechEmotion/01.wav", "temp.mod", "svm")) print("\n\n\n * * * TEST 9 * * * \n\n\n") aT.featureAndTrainRegression(root_data_path + "pyAudioAnalysis/data/speechEmotion", 1, 1, 0.050, 0.050, "randomforest", "temp.mod", compute_beat=False) print(aT.fileRegression(root_data_path + "pyAudioAnalysis/data/speechEmotion/01.wav", "temp.mod", "randomforest"))