def test_spectrogram(self): # https://freewavesamples.com/yamaha-v50-rock-beat-120-bpm sample_wav_file = os.path.abspath(os.path.join( os.path.dirname(__file__), '..', '..', 'data', 'Yamaha-V50-Rock-Beat-120bpm.wav')) mel_spectrogram = LoadUtil.load_mel_spectrogram(sample_wav_file, n_mels=128) flow = naf.Sequential([ nas.FrequencyMaskingAug(mask_factor=50), nas.TimeMaskingAug(mask_factor=20), nas.TimeMaskingAug(mask_factor=30)]) augmented_mel_spectrogram = flow.augment(mel_spectrogram) for aug in flow: if aug.name == 'FrequencyMasking_Aug': self.assertEqual(len(mel_spectrogram[aug.model.f0]), np.count_nonzero(mel_spectrogram[aug.model.f0])) self.assertEqual(0, np.count_nonzero(augmented_mel_spectrogram[aug.model.f0])) elif aug.name == 'TimeMasking_Aug': self.assertEqual(len(mel_spectrogram[:, aug.model.t0]), np.count_nonzero(mel_spectrogram[:, aug.model.t0])) self.assertEqual(0, np.count_nonzero(augmented_mel_spectrogram[:, aug.model.t0])) else: # Unexpected flow self.assertFalse(True) self.assertTrue(len(flow) > 0)
def test_n_output_spectrogram(self): mel_spectrogram = AudioLoader.load_mel_spectrogram( self.sample_wav_file, n_mels=128) # flows = [ naf.Sequential([nas.FrequencyMaskingAug(), nas.TimeMaskingAug()]), naf.Sometimes([nas.FrequencyMaskingAug(), nas.TimeMaskingAug()], pipeline_p=0.9), naf.Sequential([ naf.Sequential( [nas.FrequencyMaskingAug(), nas.TimeMaskingAug()]), naf.Sometimes( [nas.FrequencyMaskingAug(), nas.TimeMaskingAug()], pipeline_p=0.9) ]) ] for flow in flows: augmented_mel_spectrograms = flow.augment(mel_spectrogram, n=3) self.assertGreater(len(augmented_mel_spectrograms), 1) for augmented_mel_spectrogram in augmented_mel_spectrograms: self.assertFalse( np.array_equal(mel_spectrogram, augmented_mel_spectrogram)) self.assertLess(0, len(flows))
def test_spectrogram(self): mel_spectrogram = AudioLoader.load_mel_spectrogram( self.sample_wav_file, n_mels=128) flow = naf.Sequential([ nas.FrequencyMaskingAug(stateless=False), nas.TimeMaskingAug(stateless=False), nas.TimeMaskingAug(stateless=False) ]) augmented_mel_spectrogram = flow.augment(mel_spectrogram) for aug in flow: if aug.name == 'FrequencyMasking_Aug': aug_data = augmented_mel_spectrogram[ aug.f0:aug.f0 + aug.f, aug.time_start:aug.time_end] orig_data = mel_spectrogram[aug.f0:aug.f0 + aug.f, aug.time_start:aug.time_end] self.assertEqual(orig_data.size, np.count_nonzero(orig_data)) self.assertEqual(0, np.count_nonzero(aug_data)) elif aug.name == 'TimeMasking_Aug': self.assertEqual(len(mel_spectrogram[:, aug.t0]), np.count_nonzero(mel_spectrogram[:, aug.t0])) self.assertEqual( 0, np.count_nonzero(augmented_mel_spectrogram[:, aug.t0])) else: raise ValueError('Unexpected flow for {} augmenter'.format( aug.name)) self.assertTrue(len(flow) > 0)
def __init__(self, paths, labels, augment=False): self.paths = paths self.labels = labels self.flow = naf.Sequential( [nas.FrequencyMaskingAug(), nas.TimeMaskingAug()]) if augment: self.augment = True
def test_multi_thread(self): mel_spectrogram = LoadUtil.load_mel_spectrogram(self.sample_wav_file, n_mels=128) n = 3 augs = [ nas.FrequencyMaskingAug(mask_factor=80), nas.TimeMaskingAug(mask_factor=80) ] for num_thread in [1, 3]: for aug in augs: augmented_data = aug.augment(mel_spectrogram, n=n, num_thread=num_thread) self.assertEqual(len(augmented_data), n)
def get_random_time_mask(self): return nas.TimeMaskingAug(mask_factor=40)