def predict_sample(self, frames): freq, sp = clip_to_freq(frames) smooth_sp = smooth_freq(freq, sp, cutoff=600) lm_x, lm_y = local_maxima(freq, smooth_sp) sorted_maxima = [x for (y, x) in sorted(zip(lm_x, lm_y))] if len(sorted_maxima) < 100: sorted_maxima += [0 for i in range(100)] top_100 = sorted_maxima[:100] top_x = np.array(top_100[:self.sample_size]).flatten() return self.classifier.predict(top_x)
def build_classifier(dir_name, sample_size=5, c="gnb"): files = os.listdir(dir_name) wav_files = [x for x in files if x.endswith(".wav")] classifier = AudioClassifier(sample_size, c) for fn in wav_files: file_full = os.path.join(dir_name, fn) frames = sample_audio(file_full, start=0) freq, sp = clip_to_freq(frames) smooth_sp = smooth_freq(freq, sp, cutoff=600) lm_x, lm_y = local_maxima(freq, smooth_sp) sorted_maxima = [x for (y, x) in sorted(zip(lm_x, lm_y))] if len(sorted_maxima) < 100: sorted_maxima += [0 for i in range(100)] top_100 = sorted_maxima[:100] top_x = np.array(top_100[:classifier.sample_size]).flatten() class_name = fn.split("_")[0] refit = False if len(set(classifier.classifier_y)) > 1: refit = True classifier.add_point(top_x, class_name, refit) return classifier