def test_serialize_deserialize_transform_speed(audio): speed_orig = Speed(factor=1.1) data_speed = speed_orig.to_dict() speed = AudioTransform.from_dict(data_speed) perturbed_speed = speed(audio, SAMPLING_RATE) assert perturbed_speed.shape == (1, 14545)
def perturb_speed(self, factor: float, affix_id: bool = True) -> 'Recording': """ Return a new ``Recording`` that will lazily perturb the speed while loading audio. The ``num_samples`` and ``duration`` fields are updated to reflect the shrinking/extending effect of speed. :param factor: The speed will be adjusted this many times (e.g. factor=1.1 means 1.1x faster). :param affix_id: When true, we will modify the ``Recording.id`` field by affixing it with "_sp{factor}". :return: a modified copy of the current ``Recording``. """ transforms = self.transforms if self.transforms is not None else [] transforms.append(Speed(factor=factor).to_dict()) new_num_samples = perturb_num_samples(self.num_samples, factor) new_duration = new_num_samples / self.sampling_rate return fastcopy( self, id=f'{self.id}_sp{factor}' if affix_id else self.id, num_samples=new_num_samples, duration=new_duration, transforms=transforms )
def test_speed(audio): speed = Speed(factor=1.1) perturbed = speed(audio, SAMPLING_RATE) assert perturbed.shape == (1, 14545)