Ejemplo n.º 1
0
def get_transforms(bckgrd_aug_dir=None, secondary_bckgrd_aug_dir=None):
    list_of_aug = [
        #         AddGaussianNoise(min_amplitude=0.001, max_amplitude=0.015, p=0.3),
        AddGaussianNoise(p=0.2),
        AddGaussianSNR(p=0.2),
        Gain(min_gain_in_db=-15, max_gain_in_db=15, p=0.3)
    ]
    if bckgrd_aug_dir is not None:
        list_of_aug.append(AddBackgroundNoise(bckgrd_aug_dir, p=0.2))
    if secondary_bckgrd_aug_dir is not None:
        list_of_aug.append(
            AddShortNoises(secondary_bckgrd_aug_dir,
                           min_time_between_sounds=0.0,
                           max_time_between_sounds=15.0,
                           burst_probability=0.5,
                           p=0.6))
    list_of_aug += [
        AddGaussianNoise(p=0.2),
        AddGaussianSNR(p=0.2),
        Gain(min_gain_in_db=-15, max_gain_in_db=15, p=0.3)
    ]
    augmenter = Compose(list_of_aug)
    transforms = {
        "train": get_training_augmentation(augmenter),
        "valid": get_validation_augmentation()
    }
    return transforms
Ejemplo n.º 2
0
 def __init__(self, path_audio, y, resample_freq = 32000, max_length=3, augmentation=[], validation=False, num_class=264, pseudo_labels=None):
     self.labels2idx = {'Pump': 0, 'Spinach': 1,  'abalimi': 2,  'afukirira': 3,  'agriculture': 4, 'akammwanyi': 5,  'akamonde': 6, 'akasaanyi': 7, 'akatunda': 8, 'akatungulu': 9,
   'akawuka': 10, 'amakoola': 11, 'amakungula': 12, 'amalagala': 13, 'amappapaali': 14, 'amatooke': 15, 'banana': 16, 'beans': 17, 'bibala': 18, 'bulimi': 19, 'butterfly': 20, 'cabbages': 21,
   'cassava': 22, 'caterpillar': 23, 'caterpillars': 24, 'coffee': 25, 'crop': 26, 'ddagala': 27, 'dig': 28, 'disease': 29, 'doodo': 30, 'drought': 31, 'ebbugga': 32, 'ebibala': 33, 'ebigimusa': 34,
   'ebijanjaalo': 35, 'ebijjanjalo': 36, 'ebikajjo': 37, 'ebikolo': 38, 'ebikongoliro': 39, 'ebikoola': 40, 'ebimera': 41, 'ebinyebwa': 42, 'ebirime': 43, 'ebisaanyi': 44, 'ebisooli': 45,
   'ebisoolisooli': 46, 'ebitooke': 47, 'ebiwojjolo': 48, 'ebiwuka': 49, 'ebyobulimi': 50, 'eddagala': 51, 'eggobe': 52, 'ejjobyo': 53, 'ekibala': 54, 'ekigimusa': 55, 'ekijanjaalo': 56,
   'ekikajjo': 57, 'ekikolo': 58, 'ekikoola': 59, 'ekimera': 60, 'ekirime': 61, 'ekirwadde': 62, 'ekisaanyi': 63, 'ekitooke': 64, 'ekiwojjolo': 65, 'ekyeya': 66, 'emboga': 67, 'emicungwa': 68,
   'emisiri': 69, 'emiyembe': 70, 'emmwanyi': 71, 'endagala': 72, 'endokwa': 73, 'endwadde': 74, 'enkota': 75, 'ennima': 76, 'ennimiro': 77, 'ennyaanya': 78, 'ensigo': 79, 'ensiringanyi': 80, 'ensujju': 81,
   'ensuku': 82, 'ensukusa': 83, 'enva endiirwa': 84, 'eppapaali': 85, 'faamu': 86, 'farm': 87, 'farmer': 88, 'farming instructor': 89, 'fertilizer': 90, 'fruit': 91, 'fruit picking': 92,
   'garden': 93, 'greens': 94, 'ground nuts': 95, 'harvest': 96, 'harvesting': 97, 'insect': 98, 'insects': 99, 'irish potatoes': 100, 'irrigate': 101, 'kaamulali': 102, 'kasaanyi': 103, 'kassooli': 104,
   'kikajjo': 105, 'kikolo': 106, 'kisaanyi': 107, 'kukungula': 108, 'leaf': 109, 'leaves': 110, 'lumonde': 111, 'lusuku': 112, 'maize': 113, 'maize stalk borer': 114, 'maize streak virus': 115, 'mango': 116, 'mangoes': 117, 'matooke': 118,
   'matooke seedlings': 119, 'medicine': 120, 'miceere': 121, 'micungwa': 122, 'mpeke': 123, 'muceere': 124, 'mucungwa': 125, 'mulimi': 126, 'munyeera': 127, 'muwogo': 128,
   'nakavundira': 129, 'nambaale': 130, 'namuginga': 131, 'ndwadde': 132, 'nfukirira': 133, 'nnakati': 134, 'nnasale beedi': 135, 'nnimiro': 136, 'nnyaanya': 137, 'npk': 138, 'nursery bed': 139,
   'obulimi': 140, 'obulwadde': 141, 'obumonde': 142, 'obusaanyi': 143, 'obutunda': 144, 'obutungulu': 145, 'obuwuka': 146, 'okufukirira': 147, 'okufuuyira': 148, 'okugimusa': 149, 'okukkoola': 150,
   'okukungula': 151, 'okulima': 152, 'okulimibwa': 153, 'okunnoga': 154, 'okusaasaana': 155, 'okusaasaanya': 156, 'okusiga': 157,
   'okusimba': 158, 'okuzifuuyira': 159, 'olusuku': 160, 'omuceere': 161, 'omucungwa': 162, 'omulimi': 163, 'omulimisa': 164, 'omusiri': 165, 'omuyembe': 166,
   'onion': 167, 'orange': 168, 'pampu': 169, 'passion fruit': 170, 'pawpaw': 171, 'pepper': 172, 'plant': 173, 'plantation': 174, 'ppaapaali': 175, 'pumpkin': 176, 'rice': 177, 'seed': 178,
   'sikungula': 179, 'sow': 180, 'spray': 181, 'spread': 182, 'suckers': 183, 'sugarcane': 184, 'sukumawiki': 185, 'super grow': 186, 'sweet potatoes': 187, 'tomatoes': 188, 'vegetables': 189,
   'watermelon': 190, 'weeding': 191, 'worm': 192}
     
     self.idx2labels = {k:v for v,k in self.labels2idx.items()}
     identity = np.eye(num_class)
     self.augmentation = set(augmentation)
     self.samples = path_audio #+ path_augment
     self.max_length = max_length # 99% are shorter than 3 sec
     self.resample_freq=resample_freq
     self.validation = validation
     self.y = np.array([identity[self.labels2idx[t]] for t in y]).astype(np.float32) #+ [self.labels2idx[t] for t in y_aug]
     self.num_class = num_class
     self.noise = Compose([AddGaussianNoise(min_amplitude=0.001, max_amplitude=0.015, p=0.6),
                             TimeStretch(min_rate=0.8, max_rate=1.25, p=0.6),
                             PitchShift(min_semitones=-4, max_semitones=4, p=0.5),
                             Shift(min_fraction=-0.5, max_fraction=0.5, p=0.5),
                             Gain(min_gain_in_db=-12, max_gain_in_db=12, p=0.6), 
                             ])
 
     if pseudo_labels is not None:
         self.add_pl(pseudo_labels[0], pseudo_labels[1])
Ejemplo n.º 3
0
     5,
 },
 {
     "instance": ClippingDistortion(p=1.0),
     "num_runs": 5
 },
 {
     "instance":
     FrequencyMask(min_frequency_band=0.5,
                   max_frequency_band=0.6,
                   p=1.0),
     "num_runs":
     5,
 },
 {
     "instance": Gain(min_gain_in_db=-6, max_gain_in_db=6, p=1.0),
     "num_runs": 5
 },
 {
     "instance": PitchShift(min_semitones=-4, max_semitones=4, p=1.0),
     "num_runs": 5,
 },
 {
     "instance": LoudnessNormalization(p=1.0),
     "num_runs": 5
 },
 {
     "instance": Mp3Compression(backend="lameenc", p=1.0),
     "num_runs": 5,
     "name": "Mp3CompressionLameenc",
 },
Ejemplo n.º 4
0
                 min_snr=5.0,
                 max_snr=20.0,
                 **kwargs):
        super().__init__(always_apply, p)

        self.min_snr = min_snr
        self.max_snr = max_snr

    def apply(self, y: np.ndarray, **params):
        snr = np.random.uniform(self.min_snr, self.max_snr)
        a_signal = np.sqrt(y**2).max()
        a_noise = a_signal / (10**(snr / 20))

        pink_noise = cn.powerlaw_psd_gaussian(1, len(y))
        a_pink = np.sqrt(pink_noise**2).max()
        augmented = (y + pink_noise * 1 / a_pink * a_noise).astype(y.dtype)
        return augmented


AUGMENT = Compose([
    PitchShift(min_semitones=-4, max_semitones=4, p=0.2),
    Gain(min_gain_in_db=-12, max_gain_in_db=12, p=0.2),
    AddGaussianNoise(min_amplitude=0.001, max_amplitude=0.015, p=0.2),
    AddGaussianSNR(min_SNR=0.1, max_SNR=1, p=0.2),
    PinkNoiseSNR(min_snr=5.0, max_snr=10, p=0.2)
])


def do_aug(samples, sample_rate):
    return AUGMENT(samples, sample_rate)
Ejemplo n.º 5
0
        output_file_path = os.path.join(
            output_dir, "AddShortNoises_{:03d}.wav".format(i)
        )
        augmented_samples = augmenter(samples=samples, sample_rate=SAMPLE_RATE)
        wavfile.write(output_file_path, rate=SAMPLE_RATE, data=augmented_samples)

    # PolarityInversion
    augmenter = Compose([PolarityInversion(p=1.0)])
    output_file_path = os.path.join(
        output_dir, "PolarityInversion_{:03d}.wav".format(0)
    )
    augmented_samples = augmenter(samples=samples, sample_rate=SAMPLE_RATE)
    wavfile.write(output_file_path, rate=SAMPLE_RATE, data=augmented_samples)

    # Gain
    augmenter = Compose(
        [
            Gain(
                min_gain_in_db=-6,
                max_gain_in_db=6,
                p=1.0,
            )
        ]
    )
    for i in range(5):
        output_file_path = os.path.join(
            output_dir, "Gain_{:03d}.wav".format(i)
        )
        augmented_samples = augmenter(samples=samples, sample_rate=SAMPLE_RATE)
        wavfile.write(output_file_path, rate=SAMPLE_RATE, data=augmented_samples)