Ejemplo n.º 1
0
    def test_background_noise(self):
        # noise > audio
        aug = naa.NoiseAug(noises=[self.noise])
        augmented_audio = aug.augment(self.audio)
        self.assertTrue(augmented_audio is not None)

        # audio > noise
        aug = naa.NoiseAug(noises=[self.audio])
        augmented_audio = aug.augment(self.noise)
        self.assertTrue(augmented_audio is not None)
Ejemplo n.º 2
0
    def test_color_noise(self):
        colors = naa.NoiseAug().model.COLOR_NOISES

        for color in colors:
            aug = naa.NoiseAug(color=color)
            augmented_audio = aug.augment(self.audio)

            self.assertFalse(np.array_equal(self.audio, augmented_audio))
            self.assertTrue(len(self.audio), len(augmented_audio))
            self.assertTrue(self.sampling_rate > 0)
Ejemplo n.º 3
0
    def test_substitute(self):
        aug = naa.NoiseAug()
        augmented_audio = aug.augment(self.audio)

        self.assertFalse(np.array_equal(self.audio, augmented_audio))
        self.assertTrue(len(self.audio), len(augmented_audio))
        self.assertTrue(self.sampling_rate > 0)
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
Ejemplo n.º 5
0
    def testSubsitute(self):
        audio, sampling_rate = librosa.load(self.sample_wav_file)

        aug = naa.NoiseAug()
        augmented_audio = aug.substitute(audio)

        self.assertFalse(np.array_equal(audio, augmented_audio))
        self.assertTrue(len(audio), len(augmented_audio))
Ejemplo n.º 6
0
def load(audio_path):
    y, sr = librosa.load(audio_path)
    aug_noise = naa.NoiseAug(noise_factor=sr / 1000)
    augmented_noise = aug_noise.substitute(y)
    y_trim = librosa.effects.remix(augmented_noise,
                                   intervals=librosa.effects.split(y))
    mfcc = librosa.feature.mfcc(y=y_trim, sr=sr)
    return mfcc.T
Ejemplo n.º 7
0
    def test_zone(self):
        zone = (0, 1)
        coverage = 1.
        expected_aug_data_size = int(len(self.audio) * (zone[1] - zone[0]) * coverage)

        # background noise
        aug = naa.NoiseAug(zone=zone, noises=[self.noise], coverage=coverage)
        aug.model.stateless = False
        aug.augment(self.audio)

        self.assertTrue(-1 <= len(aug.model.aug_data) - expected_aug_data_size <= 1)

        # colored noise
        aug = naa.NoiseAug(zone=zone, color='pink', coverage=coverage)
        aug.model.stateless = False
        aug.augment(self.audio)

        self.assertTrue(-1 <= len(aug.model.aug_data) - expected_aug_data_size <= 1)
Ejemplo n.º 8
0
 def noise_injection(self):
     """
     define a noise augmentation instance using nlpaug
     :return: noise augmentation instance
     """
     # pick randomly k samples from aug_noises
     sampling = random.choices(self.aug_noises, k=3)
     # define instance for noise augmentation
     noise_injection = naa.NoiseAug(zone=(0.0, 1.0), noises=sampling)
     return noise_injection
Ejemplo n.º 9
0
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
Ejemplo n.º 10
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))
Ejemplo n.º 11
0
def process_audio_files_with_aug(filename, dirpath):
    sr = 16000
    audio_array, sample_rate = librosa.load(os.path.join(dirpath, 'flac', filename), sr=sr)
    aug_crop = naa.CropAug(sampling_rate=sr)
    audio_array_crop = aug_crop.augment(audio_array)
    aug_loud = naa.LoudnessAug(loudness_factor=(2, 5))
    audio_array_loud = aug_loud.augment(audio_array)
    aug_noise = naa.NoiseAug(noise_factor=0.03)
    audio_array_noise = aug_noise.augment(audio_array)

    audio_array_list= [audio_array,audio_array_crop,audio_array_loud,
                       audio_array_noise ]

    out_list = convert_audio_to_processed_list(audio_array_list, filename, dirpath)

    return out_list
Ejemplo n.º 12
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))
Ejemplo n.º 13
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))
Ejemplo n.º 14
0
    def process_audio_files_with_aug(self, audio_path):
        sr = 16000
        audio_array, sample_rate = librosa.load(audio_path, sr=sr)
        aug_crop = naa.CropAug(sampling_rate=sr)
        audio_array_crop = aug_crop.augment(audio_array)
        aug_loud = naa.LoudnessAug(loudness_factor=(2, 5))
        audio_array_loud = aug_loud.augment(audio_array)
        aug_noise = naa.NoiseAug(noise_factor=0.03)
        audio_array_noise = aug_noise.augment(audio_array)

        mel_spec_array_load = melspectrogram(audio_array_loud, hparams=hparams)
        mel_spec_array_noise = melspectrogram(audio_array_noise,
                                              hparams=hparams)

        audio_array_list = [mel_spec_array_load, mel_spec_array_noise]

        # audio_array_list= [audio_array_crop,audio_array_loud,
        #                    audio_array_noise ]

        return audio_array_list
Ejemplo n.º 15
0
def augmentation():
    doss = 0
    for dossier in os.listdir(
            '.'):  # on parcourt tous les dossiers du répertoire courant
        if os.path.isdir(dossier):  # si c'est bien un dossier
            cpt = 0
            doss += 1
            print("Dossier " + str(doss) + " sur 28")
            if doss >= 14:
                for file in os.listdir(
                        './' + dossier + '/'
                ):  # on parcours tous les fichiers .wav de ce repertoire
                    if not os.path.isdir(
                            file):  # si c'est bien un fichier .wav
                        path = './' + dossier + '/' + file
                        audio, sampling_rate = librosa.load(path)
                        freq = sampling_rate
                        """
						Noise injection
						It simply add some random value into data.
						"""
                        liste_factor = [0.03, 0.02, 0.01]

                        for fact in liste_factor:
                            cpt += 1
                            aug = naa.NoiseAug(nosie_factor=fact)
                            augmented_audio = aug.substitute(audio)
                            path = './' + dossier + '/' + str(cpt) + '_' + file
                            out_f = path
                            wavf.write(out_f, freq, augmented_audio)

                        liste_factor = [0.5, 2, 5]

                        for fact in liste_factor:
                            cpt += 1
                            aug = naa.PitchAug(sampling_rate=sampling_rate,
                                               pitch_factor=fact)
                            augmented_audio = aug.substitute(audio)
                            path = './' + dossier + '/' + str(cpt) + '_' + file
                            out_f = path
                            wavf.write(out_f, freq, augmented_audio)
Ejemplo n.º 16
0
    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))
Ejemplo n.º 17
0
augment data for one audio recording
"""

import librosa
from nlpaug.util.visual.wave import VisualWave
import nlpaug.augmenter.audio as naa
import nlpaug.flow as naf

path = '/home/akomaty/Documents/Projets/Co-encadrement_Emna_Rejaibi/Audio_files/300_P/split/Participant/300_AUDIO_fixed_5.wav'
audio, sampling_rate = librosa.load(path)
VisualWave.visual('Original', audio, sampling_rate)
"""
Noise injection
It simply add some random value into data.
"""
aug = naa.NoiseAug(nosie_factor=0.05)

augmented_audio = aug.substitute(audio)
VisualWave.visual('Noise', augmented_audio, sampling_rate)
"""
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. 
Ejemplo n.º 18
0
def aug_noise(data, noise_factor=0.03):
	aug = naa.NoiseAug(noise_factor=noise_factor)
	augmented_data = aug.augment(data)
	return augmented_data
Ejemplo n.º 19
0
    def test_empty_input(self):
        audio = np.array([])
        aug = naa.NoiseAug()
        augmented_audio = aug.augment(audio)

        self.assertTrue(np.array_equal(audio, augmented_audio))
Ejemplo n.º 20
0
            csv_file_path = 'D:/Emna/DAIC WOZ # EMNA/DAIC WOZ # EMNA/' + participant_ID + '_P/split/Participant/'
            path = 'C:/Users/yobitrust/Desktop/DAIC_augmented/' + participant_ID + '_P/split/Participant/'
            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])
Ejemplo n.º 21
0
def add_noise(data, sr):
    aug = naa.NoiseAug(noise_factor=0.03)
    return aug.augment(data)