from__future__importabsolute_importfrom__future__importdivisionfrom__future__importprint_functionimportjsonimportrandomfromdata_utils.augmentor.volumn_perturbimportVolumnPerturbAugmentorclassAugmentationPipeline(object):def__init__(self,augmentation_config,random_seed=0):self._rng=random.Random(random_seed)self._augmentors,self._rates=self._parse_pipeline_from(augmentation_config)deftransform_audio(self,audio_segment):foraugmentor,rateinzip(self._augmentors,self._rates):ifself._rng.uniform(0.,1.)<=rate:augmentor.transform_audio(audio_segment)def_parse_pipeline_from(self,config_json):try:configs=json.loads(config_json)exceptExceptionase:raiseValueError("Augmentation config json format error: ""%s"%str(e))augmentors=[self._get_augmentor(config["type"],config["params"])forconfiginconfigs]rates=[config["rate"]forconfiginconfigs]returnaugmentors,ratesdef_get_augmentor(self,augmentor_type,params):ifaugmentor_type=="volumn":returnVolumnPerturbAugmentor(self._rng,**params)else:raiseValueError("Unknown augmentor type [%s]."%augmentor_type)