Mercurial > hg > plosone_underreview
diff scripts/load_features.py @ 43:b1d9ba5f888e branch-tests
debugging tests
author | Maria Panteli <m.x.panteli@gmail.com> |
---|---|
date | Fri, 15 Sep 2017 16:17:55 +0100 |
parents | 3b67cd634b9a |
children | 06e5711f9f62 |
line wrap: on
line diff
--- a/scripts/load_features.py Fri Sep 15 12:27:11 2017 +0100 +++ b/scripts/load_features.py Fri Sep 15 16:17:55 2017 +0100 @@ -103,7 +103,7 @@ return music_idx - def get_features(self, df, stop_sec=30.0, class_label='Country', precomp_melody=False): + def get_features(self, df, stop_sec=30.0, class_label='Country', precomp_melody=True): oplist = [] mflist = [] chlist = [] @@ -116,26 +116,32 @@ continue print 'file ' + str(i) + ' of ' + str(n_files) music_idx = self.get_music_idx_for_file(df['Speech'].iloc[i]) - if len(music_idx)==0: - # no music segments -> skip this file + #min_dur_sec=8.0 + #min_n_frames = np.int(np.floor(min_dur_sec * self.framessr2)) + if len(music_idx)==0: # or len(music_idx)<min_n_frames: + # no music segments or music segment too short -> skip this file continue - try: - op, mfcc = self.get_op_mfcc_for_file(df['Melspec'].iloc[i], stop_sec=stop_sec) - ch = self.get_chroma_for_file(df['Chroma'].iloc[i], stop_sec=stop_sec) - pb = self.get_pb_for_file(df['Melodia'].iloc[i], precomp_melody=precomp_melody, stop_sec=stop_sec) + if 1: + # allow feature extraction of longer segments (2*stop_sec) + # because some of it might be speech segments that are filtered out + stop_sec_feat = 2 * stop_sec + op, mfcc = self.get_op_mfcc_for_file(df['Melspec'].iloc[i], stop_sec=stop_sec_feat) + ch = self.get_chroma_for_file(df['Chroma'].iloc[i], stop_sec=stop_sec_feat) + pb = self.get_pb_for_file(df['Melodia'].iloc[i], precomp_melody=precomp_melody, stop_sec=stop_sec_feat) #if precomp_melody: # pb = self.load_precomputed_pb_from_melodia(df['Melodia'].iloc[i], stop_sec=stop_sec) #else: # pb = self.get_pb_from_melodia(df['Melodia'].iloc[i], stop_sec=stop_sec) - except: + else: continue n_stop = np.int(np.ceil(stop_sec * self.framessr2)) print n_stop, len(op), len(mfcc), len(ch), len(pb) - min_n_frames = np.min([n_stop, len(op), len(mfcc), len(ch), len(pb)]) # ideally, features should have the same number of frames - if min_n_frames==0: + max_n_frames = np.min([n_stop, len(op), len(mfcc), len(ch), len(pb)]) # ideally, features should have the same number of frames + if max_n_frames==0: # no features extracted -> skip this file continue - music_idx = music_idx[music_idx<min_n_frames] + # music segment duration must be <= 30sec + music_idx = music_idx[music_idx<max_n_frames] n_frames = len(music_idx) oplist.append(op.iloc[music_idx, :]) mflist.append(mfcc.iloc[music_idx, :]) @@ -271,8 +277,11 @@ else: root = root_BL base = base.split('_')[-1].split('.csv')[0]+'_vamp_mtg-melodia_melodia_melody.csv' + bihist_file = os.path.join(root, base) + if not os.path.exists(bihist_file): + return pbihist print 'load precomputed pitch bihist', root - pbihist = np.loadtxt(os.path.join(root, base), delimiter=',').T + pbihist = np.loadtxt(bihist_file, delimiter=',').T n_stop = np.int(np.ceil(stop_sec * self.framessr2)) pbihist = pbihist[:, :np.min([pbihist.shape[0], n_stop])] return pbihist