ClipByRatio¶
- class auglib.transform.ClipByRatio(ratio, *, soft=False, normalize=False, preserve_level=False, bypass_prob=None)[source]¶
Hard/soft-clip a certain fraction of the signal.
Rather than receiving a specific amplitude threshold, this function is designed to get instructed about the number of samples that are meant to be clipped, in relation to the total length of the signal. This ratio is internally translated into the amplitude threshold needed for achieving the specified intensity of the degradation. The optional argument
softtriggers a soft-clipping behaviour, for which the whole waveform is warped through a cubic non-linearity, resulting in a smooth transition between the flat (clipped) regions and the rest of the waveform.- Parameters:
ratio (
float|auglib.core.observe.Base) – ratio between the number of samples that are to be clipped and the total number of samples in the signalsoft (
bool|auglib.core.observe.Base) – apply soft-clippingnormalize (
bool|auglib.core.observe.Base) – after clipping normalize signal to 0 decibelspreserve_level (
bool|auglib.core.observe.Base) – ifTruethe root mean square value of the augmented signal will be the same as before augmentationbypass_prob (
float|auglib.core.observe.Base) – probability to bypass the transformation
Examples
Clip 5% of the samples of a speech signal.
>>> import audb >>> import audiofile >>> import audplot >>> import auglib >>> transform = auglib.transform.ClipByRatio(0.05) >>> files = audb.load_media("emodb", "wav/03a01Fa.wav", version="1.4.1") >>> signal, sampling_rate = audiofile.read(files[0]) >>> augmented_signal = transform(signal, sampling_rate) >>> audplot.waveform(augmented_signal)
__call__()¶
- ClipByRatio.__call__(signal, sampling_rate=None)¶
Apply transform to signal.
- Parameters:
signal (
numpy.ndarray) – signal to be transformedsampling_rate (
int) – sampling rate in Hz
- Return type:
- Returns:
augmented signal
- Raises:
ValueError – if the signal shape is not support by chosen transform parameters
ValueError – if
sampling_rateisNone, but the transform requires a sampling rateRuntimeError – if the given sampling rate is incompatible with the transform
arguments¶
- ClipByRatio.arguments¶
Returns arguments that are serialized.
- Returns:
Dictionary of arguments and their values.
- Raises:
RuntimeError – if arguments are found that are not assigned to attributes of the same name
Examples
>>> import audobject.testing >>> o = audobject.testing.TestObject("test", point=(1, 1)) >>> o.arguments {'name': 'test', 'point': (1, 1)}
borrowed_arguments¶
- ClipByRatio.borrowed_arguments¶
Returns borrowed arguments.
- Returns:
Dictionary with borrowed arguments.
from_dict()¶
- static ClipByRatio.from_dict(d, root=None, **kwargs)¶
- Return type:
from_yaml()¶
- static ClipByRatio.from_yaml(path_or_stream, **kwargs)¶
- Return type:
from_yaml_s()¶
- static ClipByRatio.from_yaml_s(yaml_string, **kwargs)¶
- Return type:
id¶
- ClipByRatio.id¶
Object identifier.
The ID of an object ID is created from its non-hidden arguments.
- Returns:
object identifier
Examples
>>> class Foo(Object): ... def __init__(self, bar: str): ... self.bar = bar >>> foo1 = Foo("I am unique!") >>> foo1.id '893df240-babe-d796-cdf1-c436171b7a96' >>> foo2 = Foo("I am different!") >>> foo2.id '9303f2a5-bfc9-e5ff-0ffa-a9846e2d2190' >>> foo3 = Foo("I am unique!") >>> foo1.id == foo3.id True
is_loaded_from_dict¶
- ClipByRatio.is_loaded_from_dict¶
Check if object was loaded from a dictionary.
Returns
Trueif object was initialized from a dictionary, e.g. after loading it from a YAML file.- Returns:
Trueif object was loaded from a dictionary,otherwise
False
resolvers¶
- ClipByRatio.resolvers¶
Return resolvers.
- Returns:
Dictionary with resolvers.
short_id¶
- ClipByRatio.short_id¶
Short object identifier.
The short ID consists of eight characters and is created from its non-hidden arguments.
- Returns:
short object identifier
Examples
>>> class Foo(Object): ... def __init__(self, bar: str): ... self.bar = bar >>> foo1 = Foo("I am unique!") >>> foo1.id '893df240-babe-d796-cdf1-c436171b7a96' >>> foo1.short_id '171b7a96' >>> foo2 = Foo("I am different!") >>> foo2.short_id '6e2d2190' >>> foo3 = Foo("I am unique!") >>> foo1.short_id == foo3.short_id True
to_dict()¶
- ClipByRatio.to_dict(*, include_version=True, flatten=False, root=None)¶
Converts object to a dictionary.
Includes items from
audobject.Object.arguments. If an argument has a resolver, its value is encoded. Usually, the object can be re-instantiated usingaudobject.Object.from_dict(). However, ifflatten=True, this is not possible.- Parameters:
- Return type:
collections.abc.Mapping[str,typing.Union[bool,datetime.datetime,dict,float,int,list,None,str]]- Returns:
dictionary that represent the object
Examples
>>> import audobject.testing >>> o = audobject.testing.TestObject("test", point=(1, 1)) >>> o.to_dict(include_version=False) {'$audobject.core.testing.TestObject': {'name': 'test', 'point': [1, 1]}} >>> o.to_dict(flatten=True) {'name': 'test', 'point.0': 1, 'point.1': 1}
to_samples()¶
to_yaml()¶
to_yaml_s()¶
- ClipByRatio.to_yaml_s(*, include_version=True)¶
Convert object to YAML string.
- Parameters:
include_version (
bool) – add version to class name- Return type:
- Returns:
YAML string
Examples
>>> import audobject.testing >>> o = audobject.testing.TestObject("test", point=(1, 1)) >>> print(o.to_yaml_s(include_version=False)) $audobject.core.testing.TestObject: name: test point: - 1 - 1