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)
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)
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))
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)
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)
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)
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))
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))