def augment_audio(data, sampling_rate, loudness_factor, speed_range, pitch_range, shift_max, noise_factor): """ OPTIONS: LOUDNESS AUGMENTER: naa.LoudnessAug() MASK AUGMENTER: naa.MaskAug() SPEED AUGMENTER: naa.SpeedAug() SHIFT AUGMENTER: naa.ShiftAug() NOISE AUGMENTER: naa.NoiseAug() CROP AUGMENTER: naa.CropAug() PITCH AUGMENTER_ naa.PitchAug() """ flow = naf.Sequential([naa.LoudnessAug(loudness_factor), naa.SpeedAug(speed_range), naa.PitchAug(sampling_rate = sampling_rate, pitch_range = pitch_range), naa.ShiftAug(sampling_rate = sampling_rate, shift_max = shift_max), naa.NoiseAug(noise_factor), ]) augmented_audio = flow.augment(data) return augmented_audio
def testSubsitute(self): audio, sampling_rate = librosa.load(self.sample_wav_file) aug = naa.SpeedAug(speed_factor=1.5) augmented_audio = aug.augment(audio) self.assertFalse(np.array_equal(audio, augmented_audio)) self.assertTrue(len(audio), len(augmented_audio))
def test_substitute(self): for _ in range(10): aug = naa.SpeedAug(stateless=False) aug_data = aug.augment(self.audio) if aug.aug_factor < 1: self.assertGreater(len(aug_data), len(self.audio)) else: self.assertLess(len(aug_data), len(self.audio))
def test_audio(self): audio, sampling_rate = AudioLoader.load_audio(self.sample_wav_file) flow = naf.Sequential([ naa.NoiseAug(), naa.PitchAug(sampling_rate=sampling_rate, factor=(0.2, 1.5)), naa.ShiftAug(sampling_rate=sampling_rate, duration=2), naa.SpeedAug(factor=(1.5, 3)) ]) augmented_audio = flow.augment(audio) self.assertFalse(np.array_equal(audio, augmented_audio)) self.assertTrue(len(audio), len(augmented_audio))
def setUpClass(cls): env_config_path = os.path.abspath(os.path.join( os.path.dirname(__file__), '..', '..', '.env')) load_dotenv(env_config_path) # https://freewavesamples.com/yamaha-v50-rock-beat-120-bpm cls.sample_wav_file = os.path.join( os.environ.get("TEST_DIR"), 'res', 'audio', 'Yamaha-V50-Rock-Beat-120bpm.wav' ) cls.audio, cls.sampling_rate = AudioLoader.load_audio(cls.sample_wav_file) cls.audio_augs = [ naa.CropAug(sampling_rate=cls.sampling_rate), naa.SpeedAug(), ]
def gen_augmented(original, sample_rate): # list of augmentors available from the nlpaug library augment_list = [ #naa.CropAug(sampling_rate=sample_rate) naa.NoiseAug(), naa.SpeedAug(), naa.LoudnessAug(factor=(0.5, 2)), naa.VtlpAug(sampling_rate=sample_rate, zone=(0.0, 1.0)), naa.PitchAug(sampling_rate=sample_rate, factor=(-1, 3)) ] # sample augmentation randomly aug_idx = random.randint(0, len(augment_list) - 1) augmented_data = augment_list[aug_idx].augment(original) return augmented_data
def test_zone(self): zone = (0, 1) coverage = 1. for _ in range(10): aug = naa.SpeedAug(zone=zone, coverage=coverage) aug.model.stateless = False aug.augment(self.audio) if aug.model.aug_factor < 1: self.assertGreater( len(aug.model.aug_data), len(self.audio[aug.model.start_pos:aug.model.end_pos])) else: self.assertLess( len(aug.model.aug_data), len(self.audio[aug.model.start_pos:aug.model.end_pos]))
def test_audio(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')) audio, sampling_rate = librosa.load(sample_wav_file) flow = naf.Sequential([ naa.NoiseAug(), naa.PitchAug(sampling_rate=sampling_rate, factor=(0.2, 1.5)), naa.ShiftAug(sampling_rate=sampling_rate, duration=2), naa.SpeedAug(factor=(1.5, 3)) ]) augmented_audio = flow.augment(audio) self.assertFalse(np.array_equal(audio, augmented_audio)) self.assertTrue(len(audio), len(augmented_audio))
def test_audio(self): # https://freewavesamples.com/yamaha-v50-rock-beat-120-bpm sample_wav_file = os.path.join(os.environ.get("TEST_DIR"), 'res', 'audio', 'Yamaha-V50-Rock-Beat-120bpm.wav') audio, sampling_rate = AudioLoader.load_audio(sample_wav_file) flow = naf.Sequential([ naa.NoiseAug(), naa.PitchAug(sampling_rate=sampling_rate, factor=(0.2, 1.5)), naa.ShiftAug(sampling_rate=sampling_rate, duration=2), naa.SpeedAug(factor=(1.5, 3)) ]) augmented_audio = flow.augment(audio) self.assertFalse(np.array_equal(audio, augmented_audio)) self.assertTrue(len(audio), len(augmented_audio))
def setUpClass(cls): env_config_path = os.path.abspath( os.path.join(os.path.dirname(__file__), '..', '..', '.env')) load_dotenv(env_config_path) # https://freewavesamples.com/yamaha-v50-rock-beat-120-bpm cls.sample_wav_file = os.environ.get( "DATA_DIR") + 'Yamaha-V50-Rock-Beat-120bpm.wav' cls.audio, cls.sampling_rate = librosa.load(cls.sample_wav_file) cls.textual_augs = [ nac.RandomCharAug(), naw.ContextualWordEmbsAug(), nas.ContextualWordEmbsForSentenceAug() ] cls.audio_augs = [ naa.CropAug(sampling_rate=cls.sampling_rate), naa.SpeedAug(), ]
def test_coverage_and_zone(self): params = [ ((0.3, 0.7), 1), ((0, 1), 1) ] for zone, coverage in params: augs = [ naa.LoudnessAug(zone=zone, coverage=coverage, stateless=False), naa.MaskAug(zone=zone, coverage=coverage, stateless=False), naa.NoiseAug(zone=zone, coverage=coverage, stateless=False), naa.PitchAug(zone=zone, coverage=coverage, stateless=False, sampling_rate=self.sampling_rate), naa.SpeedAug(zone=zone, coverage=coverage, stateless=False), naa.VtlpAug(zone=zone, coverage=coverage, stateless=False, sampling_rate=self.sampling_rate), naa.NormalizeAug(zone=zone, coverage=coverage, stateless=False), naa.PolarityInverseAug(zone=zone, coverage=coverage, stateless=False) ] for aug in augs: aug_data = aug.augment(self.audio) self.assertTrue(len(aug_data[aug.start_pos:aug.end_pos]), int(len(self.audio) * (zone[1] - zone[0]) * coverage))
def aug_speed(data, speed_range=(0.9, 1.1)): aug = naa.SpeedAug(speed_range=speed_range) augmented_data = aug.augment(data) return augmented_data
def speed(data): aug = naa.SpeedAug() return aug.augment(data)
try: os.makedirs(path) except OSError: print("Creation of the directory %s failed" % path) else: print("Creation of the directory %s success" % path) if os.path.exists(csv_file_path): input_directory = Path(csv_file_path) for my_filename in input_directory.glob("*_AUDIO_*.wav"): audio, sampling_rate = librosa.load(my_filename) VisualWave.visual('Original', audio, sampling_rate) flow = naf.Sequential([ naa.NoiseAug(), naa.PitchAug(sampling_rate=sampling_rate, pitch_factor=1.5), naa.ShiftAug(sampling_rate=sampling_rate, shift_max=2), naa.SpeedAug(speed_factor=1.5) ]) augmented_audio = flow.augment(audio) VisualWave.visual('augment', augmented_audio, sampling_rate) my_filename = my_filename.stem librosa.output.write_wav(path + my_filename + '.wav', augmented_audio, sampling_rate, norm=False) except ValueError: print("Skipping the following line: ", row[0]) csvFile.close()
def add_speed(data, sr): aug = naa.SpeedAug() return aug.augment(data)