def extract_gmm_feature( data, max_length_sec = 10 ): try: filename, lbl = data sr,signal = read(filename) if len(signal.shape) > 1: signal = signal[:,0] signal = signal - signal.mean() signal = signal[:max_length_sec*sr] signal = np.array(remove_silence( signal, 0.005 )) if np.sum(signal) == 0.0: print "Empty", filename return filename, None, None mfcc = librosa.feature.mfcc( signal, n_fft = gmm_fft_points, hop_length = gmm_fft_overlap, n_mfcc = gmm_mfcc_coefficients, fmax = 5000 ) #mfcc = preprocess_mfcc(mfcc) delta_mfcc_1 = delta( mfcc, order = 1 ) delta_mfcc_2 = delta( mfcc, order = 2 ) total_features = np.vstack( [ mfcc, delta_mfcc_1, delta_mfcc_2 ] ) total_features = np.transpose( total_features ) total_features = preprocess_mfcc( total_features ) #total_features = StandardScaler().fit_transform( total_features ) gmm = GMM(n_components=1) gmm.fit( total_features ) res_features = np.hstack( [gmm.means_[0], gmm.covars_[0]] ) #print gmm.means_.shape #result_features = np.vstack( [ gmm. ] ) return filename, lbl, res_features except Exception,e: print e return filename, None, None
def extract_mfcc_features(data, max_length_sec = 10 ): try: filename, lbl = data #signal, sr = librosa.load(filename) sr, signal = read(filename) if len(signal) == 0: return filename, None, None if len(signal.shape) > 1: signal = signal[:,0] signal = signal - signal.mean() signal = signal[:max_length_sec*sr] signal = np.array(remove_silence( list(signal), 0.01 )) if np.sum(signal) == 0.0: print "Empty", filename return filename, None, None mfcc = librosa.feature.mfcc( signal, n_fft = fft_points, hop_length = fft_overlap, n_mfcc = mfcc_coefficients, fmax = 5000 ) delta_mfcc_1 = delta( mfcc, order = 1 ) delta_mfcc_2 = delta( mfcc, order = 2 ) #print "Took", time.time() - start, "length", original_len, "size", os.path.getsize( filename ), "pre process", preprocess_time, "load", loading_time total_features = np.vstack( [ mfcc, delta_mfcc_1, delta_mfcc_2 ] ) total_features = np.transpose( total_features ) total_features = preprocess_mfcc( total_features ) #total_features = StandardScaler().fit_transform( total_features ) return filename, lbl, total_features except Exception,e: print signal, signal.shape print e traceback.print_exc(file=sys.stdout) print filename return filename, None, None