Esempio n. 1
0
def experiment1_dct(num):
    with open(
            'select_filters/frog_data/experiment1/experiment1_train_sort_' +
            str(num) + '.pkl', 'rb') as train_pkl:
        train_data = pickle.load(train_pkl)
    with open(
            'select_filters/frog_data/experiment1/experiment1_test_' +
            str(num) + '.pkl', 'rb') as test_pkl:
        test_data = pickle.load(test_pkl)
    _, train_data = np.hsplit(train_data, [4])
    train_data, _ = np.vsplit(train_data, [20])
    train_data = train_data.T
    y_test, test_data = np.hsplit(test_data, [1])

    train_data = dct(train_data)
    train_data, _ = np.hsplit(train_data, [13])
    sample = load_excel_np('audio_data/cross_validation_sample1.xlsx')
    sample1 = 0
    for i in range(5):
        if i == num:
            continue
        sample1 += sample[i][0]
    y_train1 = np.ones(sample1, dtype=int)
    sample1 = 0
    for i in range(5):
        if i == num:
            continue
        sample1 += sample[i][1]
    y_train2 = np.zeros(sample1, dtype=int)
    y_train1 = np.hstack((y_train1, y_train2))
    sample = load_excel_np('audio_data/cross_validation_sample2.xlsx')
    sample1 = 0
    for i in range(5):
        if i == num:
            continue
        sample1 = sample1 + sample[i][0] + sample[i][1]
    y_train2 = np.zeros(sample1, dtype=int)
    y_train1 = np.hstack((y_train1, y_train2))
    y_train = np.reshape(y_train1, (y_train1.shape[0], 1))
    train_data = np.hstack((y_train, train_data))

    with open(
            'select_filters/frog_data/experiment1/experiment1_train_dct_' +
            str(num) + '.pkl', 'wb') as training_dct_pkl:
        pickle.dump(train_data, training_dct_pkl)
    del train_data

    test_data = dct(test_data)
    test_data, _ = np.hsplit(test_data, [13])
    test_data = np.hstack((y_test, test_data))

    with open(
            'select_filters/frog_data/experiment1/experiment1_test_dct_' +
            str(num) + '.pkl', 'wb') as test_dct_pkl:
        pickle.dump(test_data, test_dct_pkl)
Esempio n. 2
0
def experiment4_set_threshold(num):
	with open('select_filters/frog_data/experiment4/experiment4_train_x_'+str(num)+'.pkl', 'rb') as filters_pkl:
		filters_features = pickle.load(filters_pkl)
	sample2 = load_excel_np('audio_data/cross_validation_sample2.xlsx')
	sample1 = load_excel_np('audio_data/cross_validation_sample1.xlsx')
	sample = np.zeros(2, dtype=int)
	for i in range(5):
		if i == num:
			continue
		sample[0] += sample2[i][0]
		sample[1] = sample[1] + sample2[i][1] + sample1[i][1]
	threshold_data = set_threshold(filters_features, sample)
	with open('select_filters/frog_data/experiment4/experiment4_train_threshold_'+str(num)+'.pkl', 'wb') as threshold_data_pkl:
		pickle.dump(threshold_data , threshold_data_pkl, protocol=2)
	del threshold_data
	print('finished:'+str(num))
def frog1():
    fs = 44100
    wav_time = 120
    sections = [0.1, '01']
    preprocessings = ['non', 'norm1']
    mfcc_dim = 12
    way1 = 'pca'
    way2 = 'svm'

    train_sample = load_excel_np('evaluation/training_sample.xlsx')
    cross_vali_sample = load_excel_np(
        'evaluation/cross_validation_sample.xlsx')

    for section, section_name in zip(sections[0], sections[1]):
        for preprocessing in preprocessings:
            out_train_path = 'mfcc/frog_data/' + section_name + '_' + preprocessing + '_train_mfcc1.pkl'
            frog_training_extract_mfcc1(out_train_path, fs, mfcc_dim,
                                        train_sample, preprocessing)

            #out_test_path = 'mfcc/frog_data/'+section_name+'_'+preprocessing+'_test_mfcc.pkl'
            #frog_test_extract_mfcc(out_test_path, fs, wav_time, section, mfcc_dim, preprocessing)

            #ここから画像の可視化
            in_train_path = 'mfcc/frog_data/' + section_name + '_' + preprocessing + '_train_mfcc1.pkl'
            #in_test_path = 'mfcc/frog_data/'+section_name+'_'+preprocessing+'_test_mfcc.pkl'
            out_train_path = 'mfcc/frog_data/' + section_name + '_' + preprocessing + '_train_' + way1 + '1.pkl'
            #out_test_path = 'mfcc/frog_data/'+section_name+'_'+preprocessing+'_test_'+way1+'.pkl'
            frog_dim_reduction(in_train_path, in_test_path, out_train_path,
                               out_test_path, way1, test_sample)

            in_train_path = 'mfcc/frog_data/' + section_name + '_' + preprocessing + '_train_' + way1 + '1.pkl'
            name = section_name + '_' + preprocessing + '_mfcc_' + way1
            training_data_plot(in_train_path, test_sample[0], way1, name)

            in_train_path = 'mfcc/frog_data/' + section_name + '_' + preprocessing + '_train_mfcc2.pkl'
            in_test_path = 'mfcc/frog_data/' + section_name + '_' + preprocessing + '_test_mfcc.pkl'
            out_predict_path = 'mfcc/frog_data/predict/' + section_name + '_' + preprocessing + '_mfcc_predict1.xlsx'
            frog_classifier(in_train_path, in_test_path, out_predict_path,
                            way2, test_sample, wav_time, section)

            predict_path = 'mfcc/frog_data/predict/' + section_name + '_' + preprocessing + '_mfcc_predict1.xlsx'
            answer_path = 'evaluation/frog_sheet_' + str(section) + 's.xlsx'
            result_path = 'mfcc/frog_data/predict/' + section_name + '_' + preprocessing + '_mfcc_result1.xlsx'
            evaluate(predict_path, answer_path, result_path)
Esempio n. 4
0
def frog2():
    fs = 44100
    wav_time = 120
    sections = [[0.1, 0.5, 1.0], ['01', '05', '10']]
    preprocessings = [['non', 'zscore'], ['non', 'norm1']]
    nfft = 2048
    hoplength = 512
    filter_sample = 20
    way = 'pca'

    make_filters(fs, nfft)
    for section, section_name in zip(sections[0], sections[1]):
        test_sample = load_excel_np('evaluation/test_sample_' + str(section) +
                                    's.xlsx')
        for preprocessing1 in preprocessings[0]:
            for preprocessing2 in preprocessings[1]:
                out_train_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_filters_features2.pkl'
                frog_training_stft_log_filter2(out_train_path, fs, wav_time,
                                               section, nfft, hoplength,
                                               preprocessing1)

                in_train_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_filters_features2.pkl'
                out_train_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_threshold2.pkl'
                frog_set_threshold(in_train_path, out_train_path, test_sample)

                in_train_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_threshold2.pkl'
                out_train_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_sort2.pkl'
                frog_sort(in_train_path, out_train_path)

                in_train_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_sort2.pkl'
                out_test_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_test_sort2.pkl'
                frog_test_stft_log_filter(in_train_path, out_test_path, fs,
                                          wav_time, section, nfft, hoplength,
                                          filter_sample, preprocessing1)

                in_train_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_sort2.pkl'
                in_test_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_test_sort2.pkl'
                out_train_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_dct2.pkl'
                out_test_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_test_dct2.pkl'
                frog_dct(in_train_path, in_test_path, out_train_path,
                         out_test_path, filter_sample, preprocessing2)

                #ここから画像の可視化
                in_train_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_dct2.pkl'
                in_test_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_test_dct2.pkl'
                out_train_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_' + way + '2.pkl'
                out_test_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_test_' + way + '2.pkl'
                frog_dim_reduction(in_train_path, in_test_path, out_train_path,
                                   out_test_path, way, test_sample)

                in_train_path1 = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_' + way + '2.pkl'
                in_train_path2 = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_sort2.pkl'
                name1 = section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_select_filters_' + way
                name2 = section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_select_filter'
                training_data_plot(in_train_path1, test_sample[0], way, name1)
                select_filter_data_plot(in_train_path2, test_sample[0], name2)
def frog1_train_select(num):
    fs = 44100
    nfft = 2048
    with open('haar_like/frog_data/filters.pkl', 'rb') as filters_pkl:
        filters = pickle.load(filters_pkl)
    filter_sample = filters.shape[0]
    para_hz, filters = np.hsplit(filters, [2])
    sample = load_excel_np('audio_data/cross_validation_sample1.xlsx')
    filter_feature = np.empty(filter_sample)
    if num != 0:
        for i in range(0, sample[0][0]):
            x, _ = librosa.load('audio_data/frog1/frog' + str(i) + '.wav',
                                sr=fs)
            filter_feature1 = wav_stft_filter(x, nfft, filters)
            filter_feature = np.vstack((filter_feature, filter_feature1))
    if num != 1:
        for i in range(sample[0][0], sample[0][0] + sample[1][0]):
            x, _ = librosa.load('audio_data/frog1/frog' + str(i) + '.wav',
                                sr=fs)
            filter_feature1 = wav_stft_filter(x, nfft, filters)
            filter_feature = np.vstack((filter_feature, filter_feature1))
    if num != 2:
        for i in range(sample[0][0] + sample[1][0],
                       sample[0][0] + sample[1][0] + sample[2][0]):
            x, _ = librosa.load('audio_data/frog1/frog' + str(i) + '.wav',
                                sr=fs)
            filter_feature1 = wav_stft_filter(x, nfft, filters)
            filter_feature = np.vstack((filter_feature, filter_feature1))
    if num != 3:
        for i in range(
                sample[0][0] + sample[1][0] + sample[2][0],
                sample[0][0] + sample[1][0] + sample[2][0] + sample[3][0]):
            x, _ = librosa.load('audio_data/frog1/frog' + str(i) + '.wav',
                                sr=fs)
            filter_feature1 = wav_stft_filter(x, nfft, filters)
            filter_feature = np.vstack((filter_feature, filter_feature1))
    if num != 4:
        for i in range(
                sample[0][0] + sample[1][0] + sample[2][0] + sample[3][0],
                sample[0][0] + sample[1][0] + sample[2][0] + sample[3][0] +
                sample[4][0]):
            x, _ = librosa.load('audio_data/frog1/frog' + str(i) + '.wav',
                                sr=fs)
            filter_feature1 = wav_stft_filter(x, nfft, filters)
            filter_feature = np.vstack((filter_feature, filter_feature1))
    filter_feature = np.delete(filter_feature, obj=0, axis=0)
    filter_feature = np.hstack((para_hz, filter_feature.T))
    with open('haar_like/frog_data/frog1/frog1_train_' + str(num) + '.pkl',
              'wb') as train_mfcc_pkl:
        pickle.dump(filter_feature, train_mfcc_pkl, protocol=2)
    del filter_feature
    print('finished:' + str(num))
Esempio n. 6
0
def frog1():
    fs = 44100
    wav_time = 120
    sections = [[0.1, 0.5, 1.0], ['01', '05', '10']]
    preprocessings = [['non', 'zscore'], ['non', 'norm1']]
    nfft = 2048
    hoplength = 512
    filter_sample = 20
    way = 'pca'

    train_sample = load_excel_np('evaluation/training_sample.xlsx')
    cross_vali_sample = load_excel_np(
        'evaluation/cross_validation_sample.xlsx')

    for section, section_name in zip(sections[0], sections[1]):
        test_sample = load_excel_np('evaluation/test_sample_' + str(section) +
                                    's.xlsx')
        for preprocessing1 in preprocessings[0]:
            for preprocessing2 in preprocessings[1]:
                out_train_path = 'select_filters/frog_data/' + section_name + '_' + preprocessing1 + '_' + preprocessing2 + '_train_filters_features2.pkl'
                frog_training_stft_log_filter2(out_train_path, fs, wav_time,
                                               section, nfft, hoplength,
                                               preprocessing1)
def frog_training_stft_filter(fs, nfft, wav_time, section):
    cross_validation = 5
    with open('haar_like/frog_data/filters_' + str(nfft) + '.pkl',
              'rb') as filters_pkl:
        filters_x = pickle.load(filters_pkl)
        filter_sample = filters_x.shape[0]
        para_hz, filters = np.hsplit(filters_x, [2])

        split_sample = int(wav_time / section)
        split_interval = int(fs * section)
        evaluation = load_excel_np('evaluation/frog_sheet_' + str(section) +
                                   's.xlsx')

        filters_features = []
        for i in range(cross_validation):
            filters_features1 = np.empty(filter_sample)
            training_evaluation = np.empty(1, int)
            for j in range(cross_validation):
                if i == j:
                    continue
                x, f = librosa.load('test_data/frog' + str(j + 1) + '.wav',
                                    sr=fs)
                for k in range(split_sample):
                    x_split = x[k * split_interval:(k + 1) * split_interval]
                    filters_features2 = wav_stft_filter(x_split, nfft, filters)
                    filters_features1 = np.vstack(
                        (filters_features1, filters_features2
                         ))  # features[split_sample][filter_sample]
                training_evaluation = np.hstack(
                    (training_evaluation, evaluation[j]))
            filters_features1 = np.delete(filters_features1, 0,
                                          0)  # delite [0][]
            training_evaluation = training_evaluation[1:]
            training_evaluation = training_evaluation.reshape(
                (split_sample * 4, 1))
            filters_features1 = np.hstack(
                (training_evaluation, filters_features1))
            filters_features1 = filters_features1[np.argsort(
                filters_features1[:, 0])[::-1]]
            filters_features1 = np.delete(filters_features1, obj=0, axis=1)
            filters_features1 = np.hstack((para_hz, filters_features1.T))
            filters_features.append(filters_features1)
    print('finished:frog_training_stft_filter')
    return filters_features
def VAD_MFCC():
    fs = 44100
    wav_time = 120
    nfft = 2048
    sections = [[0.1, 0.5, 1.0], ['01', '05', '10']]

    for section, section_name in zip(sections[0], sections[1]):
        test_sample = load_excel_np('evaluation/test_sample_' + str(section) +
                                    's.xlsx')
        #MFCCを抽出
        train_mfcc = frog_training_extract_mfcc(fs, nfft, wav_time, section)
        test_mfcc = frog_test_extract_mfcc(fs, nfft, wav_time, section)
        #図を作成
        train_pca, test_pca = frog_dim_reduction(train_mfcc, test_mfcc, 'pca',
                                                 test_sample)
        name = section_name + '_mfcc'
        training_data_plot('mfcc', train_pca[0], test_sample[0], 'pca', name)
        #識別器で分類
        #SVM
        out_predict_path = 'mfcc/predict/predict_' + section_name + '_mfcc_svm.xlsx'
        frog_classifier(train_mfcc, test_mfcc, out_predict_path, 'svm',
                        test_sample, wav_time, section)
        predict_path = 'mfcc/predict/predict_' + section_name + '_mfcc_svm.xlsx'
        answer_path = 'evaluation/frog_sheet_' + str(section) + 's.xlsx'
        result_path = 'mfcc/predict/result_' + section_name + '_mfcc_svm.xlsx'
        evaluate(predict_path, answer_path, result_path)
        #lda->normal distribution
        train_lda, test_lda = frog_dim_reduction(train_mfcc, test_mfcc, 'lda',
                                                 test_sample)
        out_predict_path = 'mfcc/predict/predict_' + section_name + '_mfcc_lda.xlsx'
        frog_classifier(train_lda, test_lda, out_predict_path, 'lda',
                        test_sample, wav_time, section)
        predict_path = 'mfcc/predict/predict_' + section_name + '_mfcc_lda.xlsx'
        answer_path = 'evaluation/frog_sheet_' + str(section) + 's.xlsx'
        result_path = 'mfcc/predict/result_' + section_name + '_mfcc_lda.xlsx'
        evaluate(predict_path, answer_path, result_path)
Esempio n. 9
0
            plt.scatter(x=training_sort[i, 4:4 + sample[0]],
                        y=y_train,
                        color="blue",
                        marker="o",
                        label="fg")  # fg...o,blue,0
            y_train = np.ones(sample[1])
            plt.scatter(x=training_sort[i, 4 + sample[0]:],
                        y=y_train,
                        color="red",
                        marker="x",
                        label="no")  # no...x,red,1
            plt.axvline(training_sort[i][1],
                        color="green")  # threshold...green
            plt.legend()  # 凡例を表示
            plt.savefig('select_filters/pictures/' + name + '_' + str(i + 1))
            plt.clf()
        plt.close()


if __name__ == '__main__':
    in_train_path1 = 'select_filters/frog_data/training_pca2.pkl'
    in_train_path2 = 'select_filters/frog_data/training_sort2.pkl'
    section = 0.5
    test_sample = load_excel_np('evaluation/test_sample_' + str(section) +
                                's.xlsx')
    way = 'pca'
    name1 = 'select_filters_05_pca'
    name2 = 'select_filter_05'
    filter_sample = 6
    training_data_plot(in_train_path1, test_sample[0], way, name1)
    select_filter_data_plot(in_train_path2, test_sample[0], name2)
Esempio n. 10
0
		return predict

def frog_classifier(train_data_x, test_data_x, out_predict_path, way, sample, wav_time, section):
	cross_validation = 5
	split_sample = int(wav_time / section)
	predict = np.empty(split_sample, dtype=int)
	if way == 'svm':
		for i in range(cross_validation):
			predict1 = linear_svm(train_data_x[i], test_data_x[i], sample[i])
			predict = np.vstack((predict, predict1))
		predict = np.delete(predict, obj=0, axis=0)
		np_excel(predict, out_predict_path)
		print('finished:predict_'+way)
	elif way == 'pca' or way =='lda':
		for i in range(cross_validation):
			predict1 = normal_distribution_predict(train_data_x[i], test_data_x[i], way, sample[i])
			predict = np.vstack((predict, predict1))
		predict = np.delete(predict, obj=0, axis=0)
		np_excel(predict, out_predict_path)
		print('finished:predict_'+way)


if __name__ == '__main__':
    in_train_path = 'mfcc/frog_data/05_non_non_train_mfcc2.pkl'
    in_test_path = 'mfcc/frog_data/05_non_non_test_mfcc.pkl'
    out_predict_path = 'mfcc/predict.xlsx'
    way = 'svm'
    test_sample = load_excel_np('evaluation/test_sample_0.5s.xlsx')
    wav_time = 120
    section = 0.5
    frog_classifier(in_train_path, in_test_path, out_predict_path, way, test_sample, wav_time, section)
Esempio n. 11
0
def frog2_test_mfcc(num):
	fs = 192000
	nfft = 8192
	with open('mfcc/frog_data/experiment2/melfilterbank2.pkl', 'rb') as filterbank_pkl:
		melfilterbank = pickle.load(filterbank_pkl)
	del filterbank_pkl
	sample = load_excel_np('audio_data/cross_validation_sample2.xlsx')
	mfcc = np.empty((np.sum(sample[num]), 13))
	mfcc_count = 0
	if num == 0:
		for i in range(0, sample[0][0]):
			x, _ = librosa.load('audio_data/frog2/frog'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 1
			mfcc_count += 1
		for i in range(0, sample[0][1]):
			x, _ = librosa.load('audio_data/frog2/back'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 0
			mfcc_count += 1
		for i in range(0, sample[0][2]):
			x, _ = librosa.load('audio_data/frog3/back'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 0
			mfcc_count += 1
	if num == 1:
		for i in range(sample[0][0], sample[0][0]+sample[1][0]):
			x, _ = librosa.load('audio_data/frog2/frog'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 1
			mfcc_count += 1
		for i in range(sample[0][1], sample[0][1]+sample[1][1]):
			x, _ = librosa.load('audio_data/frog2/back'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 0
			mfcc_count += 1
		for i in range(sample[0][2], sample[0][2]+sample[1][2]):
			x, _ = librosa.load('audio_data/frog3/back'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 0
			mfcc_count += 1
	if num == 2:
		for i in range(sample[0][0]+sample[1][0], sample[0][0]+sample[1][0]+sample[2][0]):
			x, _ = librosa.load('audio_data/frog2/frog'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 1
			mfcc_count += 1
		for i in range(sample[0][1]+sample[1][1], sample[0][1]+sample[1][1]+sample[2][1]):
			x, _ = librosa.load('audio_data/frog2/back'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 0
			mfcc_count += 1
		for i in range(sample[0][2]+sample[1][2], sample[0][2]+sample[1][2]+sample[2][2]):
			x, _ = librosa.load('audio_data/frog3/back'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 0
			mfcc_count += 1
	if num == 3:
		for i in range(sample[0][0]+sample[1][0]+sample[2][0], sample[0][0]+sample[1][0]+sample[2][0]+sample[3][0]):
			x, _ = librosa.load('audio_data/frog2/frog'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 1
			mfcc_count += 1
		for i in range(sample[0][1]+sample[1][1]+sample[2][1], sample[0][1]+sample[1][1]+sample[2][1]+sample[3][1]):
			x, _ = librosa.load('audio_data/frog2/back'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 0
			mfcc_count += 1
		for i in range(sample[0][2]+sample[1][2]+sample[2][2], sample[0][2]+sample[1][2]+sample[2][2]+sample[3][2]):
			x, _ = librosa.load('audio_data/frog3/back'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 0
			mfcc_count += 1
	if num == 4:
		for i in range(sample[0][0]+sample[1][0]+sample[2][0]+sample[3][0], sample[0][0]+sample[1][0]+sample[2][0]+sample[3][0]+sample[4][0]):
			x, _ = librosa.load('audio_data/frog2/frog'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 1
			mfcc_count += 1
		for i in range(sample[0][1]+sample[1][1]+sample[2][1]+sample[3][1], sample[0][1]+sample[1][1]+sample[2][1]+sample[3][1]+sample[4][1]):
			x, _ = librosa.load('audio_data/frog2/back'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 0
			mfcc_count += 1
		for i in range(sample[0][2]+sample[1][2]+sample[2][2]+sample[3][2], sample[0][2]+sample[1][2]+sample[2][2]+sample[3][2]+sample[4][2]):
			x, _ = librosa.load('audio_data/frog3/back'+str(i)+'.wav', sr=fs)
			mfcc[mfcc_count][1:13] = wav_mfcc(x, nfft, melfilterbank)
			mfcc[mfcc_count][0] = 0
			mfcc_count += 1

	with open('mfcc/frog_data/experiment2/test_mfcc'+str(num)+'.pkl', 'wb') as test_mfcc_pkl:
		pickle.dump(mfcc, test_mfcc_pkl, protocol=2)
	del mfcc
	del test_mfcc_pkl
	print('finished:test_mfcc'+str(num))
Esempio n. 12
0
def experiment4_train_mfcc(num):
	fs = 44100
	nfft = 2048
	sample1 = load_excel_np('audio_data/cross_validation_sample2.xlsx')
	sample2 = load_excel_np('audio_data/cross_validation_sample1.xlsx')
	mfcc = np.empty(13)
	if num != 0:
		for i in range(0, sample1[0][0]):
			x, _ = librosa.load('audio_data/frog2/frog'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
		for i in range(0, sample1[0][1]):
			x, _ = librosa.load('audio_data/frog2/back'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
		for i in range(0, sample2[0][1]):
			x, _ = librosa.load('audio_data/frog1/back'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
	if num != 1:
		for i in range(sample1[0][0], sample1[0][0]+sample1[1][0]):
			x, _ = librosa.load('audio_data/frog2/frog'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
		for i in range(sample1[0][1], sample1[0][1]+sample1[1][1]):
			x, _ = librosa.load('audio_data/frog2/back'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
		for i in range(sample2[0][1], sample2[0][1]+sample2[1][1]):
			x, _ = librosa.load('audio_data/frog1/back'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
	if num != 2:
		for i in range(sample1[0][0]+sample1[1][0], sample1[0][0]+sample1[1][0]+sample1[2][0]):
			x, _ = librosa.load('audio_data/frog2/frog'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
		for i in range(sample1[0][1]+sample1[1][1], sample1[0][1]+sample1[1][1]+sample1[2][1]):
			x, _ = librosa.load('audio_data/frog2/back'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
		for i in range(sample2[0][1]+sample2[1][1], sample2[0][1]+sample2[1][1]+sample2[2][1]):
			x, _ = librosa.load('audio_data/frog1/back'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
	if num != 3:
		for i in range(sample1[0][0]+sample1[1][0]+sample1[2][0], sample1[0][0]+sample1[1][0]+sample1[2][0]+sample1[3][0]):
			x, _ = librosa.load('audio_data/frog2/frog'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
		for i in range(sample1[0][1]+sample1[1][1]+sample1[2][1], sample1[0][1]+sample1[1][1]+sample1[2][1]+sample1[3][1]):
			x, _ = librosa.load('audio_data/frog2/back'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
		for i in range(sample2[0][1]+sample2[1][1]+sample2[2][1], sample2[0][1]+sample2[1][1]+sample2[2][1]+sample2[3][1]):
			x, _ = librosa.load('audio_data/frog1/back'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
	if num != 4:
		for i in range(sample1[0][0]+sample1[1][0]+sample1[2][0]+sample1[3][0], sample1[0][0]+sample1[1][0]+sample1[2][0]+sample1[3][0]+sample1[4][0]):
			x, _ = librosa.load('audio_data/frog2/frog'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
		for i in range(sample1[0][1]+sample1[1][1]+sample1[2][1]+sample1[3][1], sample1[0][1]+sample1[1][1]+sample1[2][1]+sample1[3][1]+sample1[4][1]):
			x, _ = librosa.load('audio_data/frog2/back'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))
		for i in range(sample2[0][1]+sample2[1][1]+sample2[2][1]+sample2[3][1], sample2[0][1]+sample2[1][1]+sample2[2][1]+sample2[3][1]+sample2[4][1]):
			x, _ = librosa.load('audio_data/frog1/back'+str(i)+'.wav', sr=fs)
			mfcc1 = wav_mfcc(x, nfft)
			mfcc = np.vstack((mfcc, mfcc1))

	mfcc = np.delete(mfcc, obj=0, axis=0)
	y_test1 = np.empty(1, dtype=int)
	for i in range(5):
		if i == num:
			continue
		y_test2 = np.ones(sample1[i][0], dtype=int)
		y_test1 = np.hstack((y_test1, y_test2))
		y_test2 = np.zeros(sample1[i][1]+sample2[i][1], dtype=int)
		y_test1 = np.hstack((y_test1, y_test2))
	y_test1 = y_test1[1:]
	y_test = np.reshape(y_test1, (y_test1.shape[0], 1))
		
	mfcc = np.hstack((y_test, mfcc))
	with open('mfcc/frog_data/experiment4/experiment4_train_mfcc_'+str(num)+'.pkl', 'wb') as train_mfcc_pkl:
		pickle.dump(mfcc, train_mfcc_pkl, protocol=2)
	del mfcc
	del train_mfcc_pkl
	print('finished:4_train_mfcc'+str(num))