Preprocessors¶
Collections of preprocessors to use as decorators for the analyzers process
Preprocessors process the (frame, eod) arguments in order to handle various preprocessing such as :
- Downmixing to mono
- Adapt the frames to match the input_blocksize and input_stepsize
- of the analyzer
downmix_to_mono¶
timeside.core.preprocessors.
downmix_to_mono
(process_func)[source]¶Pre-processing decorator that downmixes frames from multi-channel to mono
Downmix is achieved by averaging all channels
>>> from timeside.core.preprocessors import downmix_to_mono >>> @downmix_to_mono ... def process(analyzer,frames,eod): ... print 'Frames, eod inside process :' ... print frames, eod ... return frames, eod ... >>> import numpy as np >>> frames = np.asarray([[1,2],[3,4],[5,6],[7,8],[9,10]]) >>> eod = False >>> frames_, eod_ = process(object(),frames,eod) Frames, eod inside process : [ 1.5 3.5 5.5 7.5 9.5] FalseOutside Process frames and eod are preserved :
>>> frames_ array([[ 1, 2], [ 3, 4], [ 5, 6], [ 7, 8], [ 9, 10]]) >>> eod_ False
frames_adapter¶
timeside.core.preprocessors.
frames_adapter
(process_func)[source]¶Pre-processing decorator that adapt frames to match input_blocksize and input_stepsize of the decorated analyzer
>>> from timeside.core.preprocessors import frames_adapter >>> @frames_adapter ... def process(analyzer,frames,eod): ... analyzer.frames.append(frames) ... return frames, eod >>> class Fake_Analyzer(object): ... def __init__(self): ... self.input_blocksize = 4 ... self.input_stepsize = 3 ... self.frames = [] # Container for the frame as viewed by process ... @staticmethod ... def id(): ... return 'fake_analyzer' >>> import numpy as np >>> analyzer = Fake_Analyzer() >>> frames = np.asarray(range(0,12)) >>> eod = False >>> frames_, eod_ = process(analyzer,frames,eod)Inside the process the frames have been adapted to match input_blocksize and input_stepsize
>>> analyzer.frames [array([0, 1, 2, 3]), array([3, 4, 5, 6]), array([6, 7, 8, 9])]Outside the process, the original frames and eod are preserved:
>>> frames_ array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) >>> eod_ FalseReleasing the process with eod=True will zeropad the last frame if necessary
>>> frames = np.asarray(range(12,14)) >>> eod = True >>> frames_, eod_ = process(analyzer,frames,eod) >>> analyzer.frames [array([0, 1, 2, 3]), array([3, 4, 5, 6]), array([6, 7, 8, 9]), array([ 9, 10, 11, 12]), array([12, 13, 0, 0])]