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)
Пример #2
0
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()
Пример #3
0
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]))
Пример #4
0
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()
Пример #5
0
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]))
Пример #6
0
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')
Пример #8
0
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()
Пример #9
0
                   '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",
Пример #10
0
def sentiments(filepath):
    results = aT.fileRegression(
        filepath,
        "/home/mscuser/pyaudio/pyAudioAnalysis/pyAudioAnalysis/data/speechEmotion/",
        "svm")
    return results
Пример #11
0
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"))