Data management

TimeSide offers various ways to access to audio data or metadata. AnalyzerResult is the python data structure where TimeSide embeds all the data resulting from a given analyzer processors after a run. It is thus the base object to access the analysis results and all the corresponding metadata. Bellow are some examples of use of the AnalyzerResult object and some of its methods.

Usage : AnalyzerResult(data_mode=None, time_mode=None)

Four different time_mode can be specified :

  • ‘framewise’ : data are returned on a frame basis (i.e. with specified blocksize, stepsize and framerate)
  • ‘global’ : a global data value is return for the entire audio item
  • ‘segment’ : data are returned on a segmnet basis (i.e. with specified start time and duration)
  • ‘event’ : data are returned on a segment basis (i.e. with specified start time)

Two different data_mode can be specified :

  • ‘value’ : data are returned as numpy Array of arbitrary type
  • ‘label’ : data are returned as label indexes (specified by the label_metadata key)

Default values are time_mode = ‘framewise’ and data_mode = ‘value’

See : timeside.core.analyzer.AnalyzerResult(), timeside.core.analyzer.AnalyzerResult

Default

Create a new analyzer result without default arguments

>>> from timeside.core.analyzer import AnalyzerResult
>>> res = AnalyzerResult()
>>> res.keys()
['id_metadata', 'data_object', 'audio_metadata', 'parameters']
>>> for key,value in res.items():
...     print '%s : %s' % (key, value)
...
id_metadata : {'description': '', 'author': '', 'version': '', 'date': '', 'proc_uuid': '', 'id': '', 'unit': '', 'name': ''}
data_object : {'y_value': array([], dtype=float64), 'value': array([], dtype=float64), 'frame_metadata': {'blocksize': None, 'samplerate': None, 'stepsize': None}}
audio_metadata : {'sha1': '', 'is_segment': None, 'uri': '', 'channels': None, 'start': 0, 'channelsManagement': '', 'duration': None}
parameters : {}

Specification of time_mode

Four different time_mode can be specified :

  • ‘framewise’ : data are returned on a frame basis (i.e. with specified blocksize, stepsize and framerate)
  • ‘global’ : a global data value is return for the entire audio item
  • ‘segment’ : data are returned on a segmnet basis (i.e. with specified start time and duration)
  • ‘event’ : data are returned on a segment basis (i.e. with specified start time)

Framewise

>>> res = AnalyzerResult(time_mode='framewise')
>>> res.data_object.keys()
['value', 'y_value', 'frame_metadata']

Global

No frame metadata information is needed for these modes. The ‘frame_metadata’ key/attribute is deleted.

>>> res = AnalyzerResult(time_mode='global')
>>> res.data_object.keys()
['value', 'y_value']
>>> res.data_object
GlobalValueObject(value=array([], dtype=float64), y_value=array([], dtype=float64))

Segment

>>> res = AnalyzerResult(time_mode='segment')
>>> res.keys()
['id_metadata', 'data_object', 'audio_metadata', 'parameters']
>>> res.data_object
SegmentValueObject(value=array([], dtype=float64), y_value=array([], dtype=float64), time=array([], dtype=float64), duration=array([], dtype=float64))

Event

>>> res = AnalyzerResult(time_mode='event')
>>> res.keys()
['id_metadata', 'data_object', 'audio_metadata', 'parameters']
>>> res.data_object
EventValueObject(value=array([], dtype=float64), y_value=array([], dtype=float64), time=array([], dtype=float64))

Specification of data_mode

Two different data_mode can be specified :

  • ‘value’ : data are returned as numpy Array of arbitrary type
  • ‘label’ : data are returned as label indexes (specified by the label_metadata key)

Value

>>> res = AnalyzerResult(data_mode='value')
>>> res.data_object.keys()
['value', 'y_value', 'frame_metadata']

In the dataObject key, the ‘value’ key is kept and the ‘label’ key is deleted.

>>> res.data_object
FrameValueObject(value=array([], dtype=float64), y_value=array([], dtype=float64), frame_metadata=FrameMetadata(samplerate=None, blocksize=None, stepsize=None))

Label

A label_metadata key is added.

>>> res = AnalyzerResult(data_mode='label')
>>> res.data_object.keys()
['label', 'label_metadata', 'frame_metadata']
>>> res.data_object
FrameLabelObject(label=array([], dtype=int64), label_metadata=LabelMetadata(label=None, description=None, label_type='mono'), frame_metadata=FrameMetadata(samplerate=None, blocksize=None, stepsize=None))