From aafdde18d1ec913bc5da356a3ef1bc3ea14c3194 Mon Sep 17 00:00:00 2001 From: Skudalen Date: Fri, 2 Jul 2021 11:42:17 +0200 Subject: [PATCH] feat: make func to store mfcc data in json --- Handle_emg_data.py | 31 +- Present_data.py | 9 +- __pycache__/Handle_emg_data.cpython-38.pyc | Bin 25066 -> 25300 bytes mfcc_data.json | 71955 +++++++++---------- 4 files changed, 35607 insertions(+), 36388 deletions(-) diff --git a/Handle_emg_data.py b/Handle_emg_data.py index ee0619f..6d25e94 100644 --- a/Handle_emg_data.py +++ b/Handle_emg_data.py @@ -608,20 +608,22 @@ class DL_data_handler: # load audio file signal, sample_rate = sample[0], sample[1] - n_fft = MFCC_WINDOWSIZE * sample_rate - hop_length = MFCC_STEPSIZE * sample_rate + signal = signal['emg'].to_numpy() + test_df_for_bugs(signal, key, i) # extract mfcc + #n_fft = MFCC_WINDOWSIZE * sample_rate + #hop_length = MFCC_STEPSIZE * sample_rate #mfcc = librosa.feature.mfcc(signal, sample_rate, n_mfcc=NR_COEFFICIENTS, n_fft=n_fft, hop_length=hop_length) - _, mfcc = mfcc_custom(signal, sample_rate, MFCC_WINDOWSIZE, MFCC_STEPSIZE, NR_COEFFICIENTS, NR_MEL_BINS) + mfcc = mfcc_custom(signal, sample_rate, MFCC_WINDOWSIZE, MFCC_STEPSIZE, NR_COEFFICIENTS, NR_MEL_BINS) mfcc = mfcc.T - print(len(mfcc)) + #print(len(mfcc)) # store only mfcc feature with expected number of vectors #if len(mfcc) == num_mfcc_vectors_per_segment: data["mfcc"].append(mfcc.tolist()) data["labels"].append(key) - print("sample:{}".format(i)) + print("sample:{}".format(i+1)) # save MFCCs to json file with open(json_path, "w") as fp: @@ -651,7 +653,7 @@ def make_df_from_xandy(x, y, emg_nr): # Help: returns the samplerate of a df def get_samplerate(df:DataFrame): min, max = get_min_max_timestamp(df) - if max > 60: + if max > 60 and min < 60: seconds = max - 60 - min else: seconds = max - min @@ -669,10 +671,19 @@ def get_xory_from_df(x_or_y, df:DataFrame): # Slightly modified mfcc with inputs like below. # Returns N (x_values from original df) and mfcc_y_values -def mfcc_custom(df:DataFrame, samplesize, windowsize=MFCC_WINDOWSIZE, +def mfcc_custom(signal, samplesize, windowsize=MFCC_WINDOWSIZE, stepsize=MFCC_STEPSIZE, nr_coefficients=NR_COEFFICIENTS, nr_mel_filters=NR_MEL_BINS): - N = get_xory_from_df('x', df) - y = get_xory_from_df('y', df) - return N, mfcc(y, samplesize, windowsize, stepsize, nr_coefficients, nr_mel_filters) \ No newline at end of file + + return mfcc(signal, samplesize, windowsize, stepsize, nr_coefficients, nr_mel_filters) + +def test_df_for_bugs(signal, key, placement_index): + df = DataFrame(signal) + if df.isnull().values.any(): + print('NaN in subject', key, 'in sample', placement_index) + if df.shape[1] != (1): + print('Shape:', df.shape[1], 'at subject', key, 'in sample', placement_index) + + + diff --git a/Present_data.py b/Present_data.py index 74d991f..8aa3f39 100644 --- a/Present_data.py +++ b/Present_data.py @@ -126,7 +126,6 @@ def denoice_dataset(handler:CSV_handler, subject_nr, which_arm, round, emg_nr): df_new = make_df_from_xandy(N, y_values, emg_nr) return df_new - def test_for_NaN(dict, samples_per_person): for key, value in dict.items(): for i in range(samples_per_person): @@ -222,9 +221,11 @@ def main(): csv_handler = CSV_handler() csv_handler.load_data('soft') dl_data_handler = DL_data_handler(csv_handler) - dl_data_handler.store_samples(2) - dict = dl_data_handler.samples_per_subject - print(len(dict.get(2))) + dl_data_handler.store_samples(15) + #dict = dl_data_handler.samples_per_subject + #print(dict.get(1)[10][0], dict.get(1)[10][1]) + #print(dict.get(1)[12][0], dict.get(1)[12][1]) + dl_data_handler.save_mfcc() diff --git a/__pycache__/Handle_emg_data.cpython-38.pyc b/__pycache__/Handle_emg_data.cpython-38.pyc index addbbb1641b8087e1a3229de57eef802789dd1b2..508c66f73a22cf39184a4ecf3baf82e7e2864189 100644 GIT binary patch delta 3820 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