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
soft
triggers 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 (
typing.Union
[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 (
typing.Union
[bool
,auglib.core.observe.Base
]) – apply soft-clippingnormalize (
typing.Union
[bool
,auglib.core.observe.Base
]) – after clipping normalize signal to 0 decibelspreserve_level (
typing.Union
[bool
,auglib.core.observe.Base
]) – ifTrue
the root mean square value of the augmented signal will be the same as before augmentationbypass_prob (
typing.Union
[float
,auglib.core.observe.Base
,None
]) – 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 (
typing.Optional
[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_rate
isNone
, but the transform requires a samling 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.
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
True
if object was initialized from a dictionary, e.g. after loading it from a YAML file.- Returns
True
if object was loaded from a dictionary,otherwise
False
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
include_version (
bool
) – add version to class nameflatten (
bool
) – flatten the dictionaryroot (
typing.Optional
[str
]) – if file is written to disk, set to target directory
- Return type
typing.Dict
[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()¶
- ClipByRatio.to_yaml(path_or_stream, *, include_version=True)¶
Save object to YAML file.
- Parameters
path_or_stream (
typing.Union
[str
,typing.IO
]) – file path or streaminclude_version (
bool
) – add version to class name