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
Пример #2
0
    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))
Пример #3
0
    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))
Пример #4
0
    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))
Пример #5
0
    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))
Пример #6
0
    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))
Пример #7
0
def aug_timeshift(data, sampling_rate):
	aug = naa.ShiftAug(sampling_rate=sr)
	augmented_data = aug.augment(data)
	return augmented_data
Пример #8
0
            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([
Пример #10
0
def add_shift(data, sr):
    aug = naa.ShiftAug(sampling_rate=sr)
    return aug.augment(data)