PinkNoise¶
- class auglib.transform.PinkNoise(*, gain_db=0.0, snr_db=None, preserve_level=False, bypass_prob=None)[source]¶
Adds pink noise.
Pink noise or 1/f noise is a signal with a frequency spectrum such that the power spectral density is inversely proportional to the frequency of the signal. It’s magnitude in dB falls 10 dB each octave.
- Parameters:
gain_db (
float|auglib.core.observe.Base) – gain in decibels Ignored ifsnr_dbis notNonesnr_db (
float|auglib.core.observe.Base) – signal-to-noise ratio in 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
Pure pink noise.
>>> import audplot >>> import auglib >>> import numpy as np >>> auglib.seed(0) >>> transform = auglib.transform.PinkNoise(gain_db=-10) >>> signal = np.zeros((1, 16000)) >>> augmented_signal = transform(signal) >>> audplot.waveform(augmented_signal)
It’s magnitude falls 10 dB each octave.
>>> import audmath >>> import matplotlib.pyplot as plt >>> import seaborn as sns >>> magnitude, f = plt.mlab.magnitude_spectrum( ... augmented_signal[0, :], Fs=16000 ... ) >>> # Smooth magnitude >>> magnitude = np.convolve(magnitude, np.ones(14) / 14, mode="same") >>> plt.semilogx(f, audmath.db(magnitude), color="#e13b41") >>> plt.xlim([10, 10010]) >>> plt.ylim([-75, -45]) >>> plt.ylabel("Magnitude / dB") >>> plt.xlabel("Frequency / Hz") >>> plt.grid(alpha=0.4) >>> sns.despine() >>> plt.tight_layout()
Pink Noise added with an SNR of 10 dB to speech.
>>> import audb >>> import audiofile >>> transform = auglib.transform.PinkNoise(snr_db=10) >>> files = audb.load_media("emodb", "wav/03a01Fa.wav", version="1.4.1") >>> signal, _ = audiofile.read(files[0]) >>> augmented_signal = transform(signal) >>> audplot.waveform(augmented_signal)
__call__()¶
- PinkNoise.__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¶
- PinkNoise.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¶
- PinkNoise.borrowed_arguments¶
Returns borrowed arguments.
- Returns:
Dictionary with borrowed arguments.
from_dict()¶
- static PinkNoise.from_dict(d, root=None, **kwargs)¶
- Return type:
from_yaml()¶
- static PinkNoise.from_yaml(path_or_stream, **kwargs)¶
- Return type:
from_yaml_s()¶
- static PinkNoise.from_yaml_s(yaml_string, **kwargs)¶
- Return type:
id¶
- PinkNoise.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¶
- PinkNoise.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¶
- PinkNoise.resolvers¶
Return resolvers.
- Returns:
Dictionary with resolvers.
short_id¶
- PinkNoise.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()¶
- PinkNoise.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()¶
- PinkNoise.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