Tone¶
- class auglib.transform.Tone(freq, *, gain_db=0.0, snr_db=None, shape='sine', lfo_rate=0.0, lfo_range=0.0, preserve_level=False, bypass_prob=None)[source]¶
Adds basic waveform.
The sine waveform will start at 0, the square and sawtooth waveform at -1, and the triangle waveform at 1. The waveform sawtooth has a rising ramp.
- Parameters
freq (
typing.Union
[float
,auglib.core.observe.Base
]) – fundamental frequency in Hzgain_db (
typing.Union
[float
,auglib.core.observe.Base
]) – gain in decibels. Ignored ifsnr_db
is notNone
snr_db (
typing.Union
[float
,auglib.core.observe.Base
,None
]) – signal-to-noise ratio in decibelsshape (
typing.Union
[str
,auglib.core.observe.Base
]) – tone shape, one of'sine'
,'square'
,'triangle'
,'sawtooth'
lfo_rate (
typing.Union
[float
,auglib.core.observe.Base
]) – modulation rate of Low Frequency Oscillatorlfo_range (
typing.Union
[float
,auglib.core.observe.Base
]) – modulation range of Low Frequency Oscillatorpreserve_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
Pure tone with 100 Hz.
>>> import audplot >>> import auglib >>> import numpy as np >>> transform = auglib.transform.Tone(100, gain_db=-10) >>> sampling_rate = 16000 >>> signal = np.zeros((1, 1600)) >>> augmented_signal = transform(signal, sampling_rate) >>> audplot.waveform(augmented_signal)
Add a triangle shaped tone with 4000 Hz to a speech signal with an SNR of 20 dB.
>>> import audb >>> import audiofile >>> transform = auglib.transform.Tone(4000, shape="triangle", snr_db=20) >>> 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__()¶
- Tone.__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¶
- Tone.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¶
- Tone.borrowed_arguments¶
Returns borrowed arguments.
- Returns
Dictionary with borrowed arguments.
id¶
- Tone.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¶
- Tone.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¶
- Tone.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()¶
- Tone.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()¶
- Tone.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