Пример #1
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))
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    def test_no_change_source(self):
        data = AudioLoader.load_mel_spectrogram(self.sample_wav_file,
                                                n_mels=128)
        aug = nas.FrequencyMaskingAug()
        aug_data = aug.augment(data)

        comparison = data == aug_data
        self.assertFalse(comparison.all())
Пример #5
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
Пример #6
0
    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)
Пример #7
0
    def test_substitute(self):
        data = AudioLoader.load_mel_spectrogram(self.sample_wav_file,
                                                n_mels=128)
        aug = nas.FrequencyMaskingAug(stateless=False)

        aug_data = aug.augment(data)

        self.assertEqual(len(data[aug.f0]), np.count_nonzero(data[aug.f0]))
        self.assertEqual(
            0, np.count_nonzero(aug_data[aug.f0][aug.time_start:aug.time_end]))
        self.assertEqual(
            0, len(np.where(aug_data[aug.f0][:aug.time_start] == 0)[0]))
        self.assertEqual(
            0, len(np.where(aug_data[aug.f0][aug.time_end:] == 0)[0]))
 def get_random_freq_mask(self):
     return nas.FrequencyMaskingAug(mask_factor=40)
Пример #9
0
    def test_empty_input(self):
        data = np.array([])
        aug = nas.FrequencyMaskingAug()
        aug_data = aug.augment(data)

        self.assertTrue(np.array_equal(np.array([]), aug_data))