for i, p in enumerate(audio_test['pattern']): for _p in p: start = _p[0] - audio_test['info'][2][0] end = _p[1] - audio_test['info'][2][0] len_list.append(end - start) ground[i][start:end + 1] = i + 1 min_len = int( min(len_list) * len(subbeat_mat[ind]) / (audio_test['info'][2][1] - audio_test['info'][2][0])) + 1 min_len_list.append(min_len) print min_len_list start_time = time.time() for ind in range(5): chroma_frames = feature_mat[ind].transpose() r = (0.0, 1.0, 0.01) ideal_v_inv = vmo.find_threshold(chroma_frames, r=r, flag='a', dfunc='other', dfunc_handle=trnspose_inv, VERBOSE=False) oracle_inv = vmo.build_oracle(chroma_frames, flag='a', threshold=ideal_v_inv[0][1], feature='chroma', dfunc='other', dfunc_handle=trnspose_inv) pattern = van.find_repeated_patterns(oracle_inv, lower=5) print str(time.time() - start_time)
ground = np.zeros((len(audio_test['pattern']), audio_test['info'][2][1] - audio_test['info'][2][0])) for i, p in enumerate(audio_test['pattern']): for _p in p: start = _p[0] - audio_test['info'][2][0] end = _p[1] - audio_test['info'][2][0] ground[i][start:end + 1] = 1 ground_vec.append(ground) pttr_vec = [] min_len = int(np.mean(oracle_vec[0].lrs) / 2) for oracle in oracle_vec: pttr_vec.append(van.find_repeated_patterns(oracle, lower=min_len)) # pattern_vec[song_list[ind]] = pttr_vec # pattern_mat_vec[song_list[ind]] = pttr_mat_vec # # pttr_vec = pattern_vec[song_list[ind]] # pttr_mat_vec = pattern_mat_vec[song_list[ind]] # oracle_vec = vmo_dict[song_list[ind]] ref_pttr = pttr_vec[0][:] per_pttr = pttr_vec[1:5][:] add_pttr_list = [] pttr = per_pttr.pop() # min_len = int(np.mean(oracle_vec[0].lrs)/2) while per_pttr != []: for i, p in enumerate(pttr):
ground = np.zeros((len(audio_test["pattern"]), audio_test["info"][2][1] - audio_test["info"][2][0])) len_list = [] for i, p in enumerate(audio_test["pattern"]): for _p in p: start = _p[0] - audio_test["info"][2][0] end = _p[1] - audio_test["info"][2][0] len_list.append(end - start) ground[i][start : end + 1] = i + 1 # min_len = int(min(len_list)*len(subbeats)/(audio_test['info'][2][1]-audio_test['info'][2][0])/2)+1 # min_len = int(stats.hmean(np.array(oracle_inv.lrs)[np.where(np.array(oracle_inv.lrs) != 0)])) # min_len = 5 min_len = int(np.mean(oracle_inv.lrs) / 2) # Current optimal setting # print min_len ### Extract Repeated Suffixes from VMO pattern = van.find_repeated_patterns(oracle_inv, lower=min_len) ### Beat Time to Time pattern_time = [] for pttr in pattern: pttr_time = [] for p in pttr[0]: time = librosa.core.frames_to_time( np.array([subbeats[p - pttr[1]], subbeats[p - 1]]), sr=sr, n_fft=fft_size, hop_length=hop_size ) pttr_time.append(time) pattern_time.append(pttr_time) pattern_bpm = [] for pt_time in pattern_time:
subbeats.append(query.shape[1]) ground = np.zeros((len(audio_test['pattern']), audio_test['info'][2][1]-audio_test['info'][2][0])) for i,p in enumerate(audio_test['pattern']): for _p in p: start = _p[0] - audio_test['info'][2][0] end = _p[1] - audio_test['info'][2][0] ground[i][start:end+1] = 1 ground_vec.append(ground) pttr_vec = [] min_len = int(np.mean(oracle_vec[0].lrs)/2) for oracle in oracle_vec: pttr_vec.append(van.find_repeated_patterns(oracle, lower = min_len)) # pattern_vec[song_list[ind]] = pttr_vec # pattern_mat_vec[song_list[ind]] = pttr_mat_vec # # pttr_vec = pattern_vec[song_list[ind]] # pttr_mat_vec = pattern_mat_vec[song_list[ind]] # oracle_vec = vmo_dict[song_list[ind]] ref_pttr = pttr_vec[0][:] per_pttr = pttr_vec[1:5][:] add_pttr_list = [] pttr = per_pttr.pop() # min_len = int(np.mean(oracle_vec[0].lrs)/2) while per_pttr != []: for i,p in enumerate(pttr):