Source code for lhotse.dataset.cut_transforms.perturb_volume

import random

from lhotse import CutSet


[docs] class PerturbVolume: """ A transform on batch of cuts (``CutSet``) that perturbs the volume of the recordings with a given probability :attr:`p`. If the effect is applied, then one of the perturbation factors from the constructor's :attr:`factors` parameter is sampled with uniform probability. """
[docs] def __init__( self, p: float, scale_low: float = 0.125, scale_high: float = 2.0, randgen: random.Random = None, preserve_id: bool = False, ) -> None: self.p = p self.scale_low = scale_low self.scale_high = scale_high self.random = randgen self.preserve_id = preserve_id
def __call__(self, cuts: CutSet) -> CutSet: if self.random is None: self.random = random return CutSet.from_cuts( cut.perturb_volume( factor=self.random.uniform(self.scale_low, self.scale_high), affix_id=not self.preserve_id, ) if self.random.random() <= self.p else cut for cut in cuts )