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 test_substitute(self): audio, sampling_rate = AudioLoader.load_audio(self.sample_wav_file) aug = naa.ShiftAug(sampling_rate, duration=0.5) augmented_audio = aug.augment(audio) self.assertFalse(np.array_equal(audio, augmented_audio)) self.assertTrue(len(audio), len(augmented_audio))
def testSubsitute(self): audio, sampling_rate = librosa.load(self.sample_wav_file) aug = naa.ShiftAug(sampling_rate, shift_max=0.5) augmented_audio = aug.augment(audio) self.assertFalse(np.array_equal(audio, augmented_audio)) self.assertTrue(len(audio), len(augmented_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 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 aug_timeshift(data, sampling_rate): aug = naa.ShiftAug(sampling_rate=sr) augmented_data = aug.augment(data) return augmented_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()
""" Pitch Augmenter This augmentation is a wrapper of librosa function. It change pitch randomly """ aug = naa.PitchAug(sampling_rate=sampling_rate, pitch_factor=0.5) augmented_audio = aug.substitute(audio) VisualWave.visual('Pitch', augmented_audio, sampling_rate) """ Shift Augmenter The idea of shifting time is very simple. It just shift audio to left/right with a random second. If shifting audio to left (fast forward) with x seconds, first x seconds will mark as 0 (i.e. silence). If shifting audio to right (back forward) with x seconds, last x seconds will mark as 0 (i.e. silence). """ aug = naa.ShiftAug(sampling_rate=sampling_rate, shift_max=0.2) augmented_audio = aug.substitute(audio) VisualWave.visual('Shift', augmented_audio, sampling_rate) """ Speed Augmenter Same as changing pitch, this augmentation is performed by librosa function. It stretches times series by a fixed rate. """ aug = naa.SpeedAug(speed_factor=1.5) augmented_audio = aug.substitute(audio) VisualWave.visual('Speed', augmented_audio, sampling_rate) # Frequency Masking and Time Masking flow = naf.Sequential([
def add_shift(data, sr): aug = naa.ShiftAug(sampling_rate=sr) return aug.augment(data)