Flavor

class audb.Flavor(*, bit_depth=None, channels=None, format=None, mixdown=False, sampling_rate=None)[source]

Database flavor.

Helper class used by audb.load() to convert media files to the desired format. It stores the meta information about a flavor and offers a convenient way to convert files to it.

As the following example shows, it can also be used to convert files that are not part of a database:

original_file = "/org/path/file.flac"
converted_file = "/new/path/file.wav"

# convert file to 16 kHz
flavor = Flavor(sampling_rate=16000)
flavor(original_file, converted_file)
Parameters
Raises

ValueError – if a non-supported bit_depth, format, or sampling_rate is requested

__call__()

Flavor.__call__(src_path, dst_path, *, src_bit_depth=None, src_channels=None, src_sampling_rate=None)[source]

Convert file to flavor.

If bit_depth, channels or sampling_rate of source signal are known, they can be provided. Otherwise, they will be computed using audiofile.

Parameters
  • src_path (str) – path to input file

  • dst_path (str) – path to output file

  • src_bit_depth (Optional[int]) – bit depth

  • src_channels (Optional[int]) – number of channels

  • src_sampling_rate (Optional[int]) – sampling rate in Hz

Raises
  • ValueError – if extension of output file does not match the format of the flavor

  • RuntimeError – if a conversion is requested, but no output format is specified, and the input format is not WAV or FLAC

__eq__()

Flavor.__eq__(other)

Check if two objects are equal.

Return type

bool

arguments

Flavor.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)}

bit_depth

Flavor.bit_depth

Sample precision.

borrowed_arguments

Flavor.borrowed_arguments

Returns borrowed arguments.

Returns

Dictionary with borrowed arguments.

channels

Flavor.channels

Selected channels.

destination()

Flavor.destination(file)[source]

Return converted file path.

The file path will only change if the file is converted to a different format.

Parameters

file (str) – path to input file

Return type

str

Returns

path to output file

format

Flavor.format

File format.

from_dict()

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

Object

from_yaml()

static Flavor.from_yaml(path_or_stream, **kwargs)
Return type

Object

from_yaml_s()

static Flavor.from_yaml_s(yaml_string, **kwargs)
Return type

Object

hidden_arguments

Flavor.hidden_arguments

Returns hidden arguments.

Returns

List with names of hidden arguments.

id

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

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

mixdown

Flavor.mixdown

Apply mixdown.

path()

Flavor.path(name, version)[source]

Flavor path.

Parameters
  • name (str) – database name

  • version (str) – version string

Return type

str

Returns

relative path

resolvers

Flavor.resolvers

Return resolvers.

Returns

Dictionary with resolvers.

sampling_rate

Flavor.sampling_rate

Sampling rate in Hz.

short_id

Flavor.short_id

Short flavor ID.

This just truncates the ID to its last eight characters.

to_dict()

Flavor.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 (Optional[str]) – if file is written to disk, set to target directory

Return type

Dict[str, Union[bool, 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_yaml()

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

Save object to YAML file.

Parameters
  • path_or_stream (Union[str, IO]) – file path or stream

  • include_version (bool) – add version to class name

to_yaml_s()

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