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): audio, sampling_rate = librosa.load(self.sample_wav_file) mel_spectrogram = LoadUtil.load_mel_spectrogram(self.sample_wav_file, n_mels=128) # flows = [ naf.Sequential([ nas.FrequencyMaskingAug(mask_factor=80), nas.TimeMaskingAug(mask_factor=80) ]), naf.Sometimes([ nas.FrequencyMaskingAug(mask_factor=80), nas.TimeMaskingAug(mask_factor=80) ], pipeline_p=0.9), naf.Sequential([ naf.Sequential([ nas.FrequencyMaskingAug(mask_factor=80), nas.TimeMaskingAug(mask_factor=80) ]), naf.Sometimes([ nas.FrequencyMaskingAug(mask_factor=80), nas.TimeMaskingAug(mask_factor=80) ], 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_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 test_substitute(self): freq_mask_para = 80 mel_spectrogram = LoadUtil.load_mel_spectrogram(self.sample_wav_file, n_mels=128) aug = FrequencyMaskingAug(mask_factor=freq_mask_para) augmented_mel_spectrogram = aug.augment(mel_spectrogram) 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]))
def test_substitute(self): time_mask_para = 80 mel_spectrogram = LoadUtil.load_mel_spectrogram( self.sample_wav_file, n_mels=self.num_of_freq_channel) aug = TimeMaskingAug(mask_factor=time_mask_para) augmented_mel_spectrogram = aug.augment(mel_spectrogram) 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]))