AMRNB

class auglib.transform.AMRNB(bit_rate, *, dtx=False, preserve_level=False, bypass_prob=None)[source]

Encode-decode signal using AMRNB codec.

Adaptive Multi Rate - Narrow Band (AMRNB) speech codec. A lossy format used in 3rd generation mobile telephony and defined in 3GPP TS 26.071 et al.

The input signal needs to have a sampling rate of 8000 Hz.

Parameters:
  • bit_rate (int | auglib.core.observe.Base) – target bit rate of the encoded stream in bits per second. Supported bit rates: 4750, 5150, 5900, 6700, 7400, 7950, 10200, 12200. Any positive bit rate is allowed, but will be converted to the closest supported one.

  • dtx (bool | auglib.core.observe.Base) – enable discontinuous transmission (DTX)

  • preserve_level (bool | auglib.core.observe.Base) – if True the root mean square value of the augmented signal will be the same as before augmentation

  • bypass_prob (float | auglib.core.observe.Base) – probability to bypass the transformation

Examples

>>> import audb
>>> import audiofile
>>> import audplot
>>> import auglib
>>> transform = auglib.transform.AMRNB(7400)
>>> files = audb.load_media(
...     "emodb",
...     "wav/03a01Fa.wav",
...     version="1.4.1",
...     sampling_rate=8000,
... )
>>> signal, sampling_rate = audiofile.read(files[0])
>>> augmented_signal = transform(signal, sampling_rate)
>>> audplot.waveform(augmented_signal)
../_images/auglib-transform-AMRNB-1.png

__call__()

AMRNB.__call__(signal, sampling_rate=None)

Apply transform to signal.

Parameters:
  • signal (numpy.ndarray) – signal to be transformed

  • sampling_rate (int) – sampling rate in Hz

Return type:

numpy.ndarray

Returns:

augmented signal

Raises:
  • ValueError – if the signal shape is not support by chosen transform parameters

  • ValueError – if sampling_rate is None, but the transform requires a sampling rate

  • RuntimeError – if the given sampling rate is incompatible with the transform

arguments

AMRNB.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

AMRNB.borrowed_arguments

Returns borrowed arguments.

Returns:

Dictionary with borrowed arguments.

from_dict()

static AMRNB.from_dict(d, root=None, **kwargs)
Return type:

audobject.core.object.Object

from_yaml()

static AMRNB.from_yaml(path_or_stream, **kwargs)
Return type:

audobject.core.object.Object

from_yaml_s()

static AMRNB.from_yaml_s(yaml_string, **kwargs)
Return type:

audobject.core.object.Object

hidden_arguments

AMRNB.hidden_arguments

Returns hidden arguments.

Returns:

List with names of hidden arguments.

id

AMRNB.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

AMRNB.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

resolvers

AMRNB.resolvers

Return resolvers.

Returns:

Dictionary with resolvers.

short_id

AMRNB.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()

AMRNB.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 using audobject.Object.from_dict(). However, if flatten=True, this is not possible.

Parameters:
  • include_version (bool) – add version to class name

  • flatten (bool) – flatten the dictionary

  • root (str) – if file is written to disk, set to target directory

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()

AMRNB.to_samples(value, sampling_rate=None, *, length=None, allow_negative=True)

Convert duration value to samples.

Return type:

int

to_yaml()

AMRNB.to_yaml(path_or_stream, *, include_version=True)

Save object to YAML file.

Parameters:
  • path_or_stream (str | io.IOBase) – file path or stream

  • include_version (bool) – add version to class name

to_yaml_s()

AMRNB.to_yaml_s(*, include_version=True)

Convert object to YAML string.

Parameters:

include_version (bool) – add version to class name

Return type:

str

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