class_docstr: Tempo Estimation Processor class.
  
  Parameters
  ----------
  method : {'comb', 'acf', 'dbn', None}
      Method used for tempo histogram creation, e.g. from a beat
      activation function or tempo classification layer.
  min_bpm : float, optional
      Minimum tempo to detect [bpm].
  max_bpm : float, optional
      Maximum tempo to detect [bpm].
  act_smooth : float, optional
      Smooth the activation function over `act_smooth` seconds.
  hist_smooth : int, optional
      Smooth the tempo histogram over `hist_smooth` bins.
  alpha : float, optional
      Scaling factor for the comb filter.
  fps : float, optional
      Frames per second.
  histogram_processor : :class:`TempoHistogramProcessor`, optional
      Processor used to create a tempo histogram.
  interpolate : bool, optional
      Interpolate tempo with quadratic interpolation.
  
  Examples
  --------
  Create a TempoEstimationProcessor. The returned array represents the
  estimated tempi (given in beats per minute) and their relative strength.
  
  >>> proc = TempoEstimationProcessor(fps=100)
  >>> proc  # doctest: +ELLIPSIS
  <madmom.features.tempo.TempoEstimationProcessor object at 0x...>
  
  Call this TempoEstimationProcessor with the beat activation function
  obtained by RNNBeatProcessor to estimate the tempi.
  
  >>> from madmom.features.beats import RNNBeatProcessor
  >>> act = RNNBeatProcessor()('tests/data/audio/sample.wav')
  >>> proc(act)  # doctest: +NORMALIZE_WHITESPACE
  array([[176.47059,  0.47469],
         [117.64706,  0.17667],
         [240.     ,  0.15371],
         [ 68.96552,  0.09864],
         [ 82.19178,  0.09629]])
class_docstr_tok: ["Tempo","Estimation","Processor","class",".","Parameters","--","--","--","--","--","method",":","{","'comb","'",",","'acf","'",",","'dbn","'",",","None","}","Method","used","for","tempo","histogram","creation",",","e.g",".","from","a","beat","activation","function","or","tempo","classification","layer",".","min_bpm",":","float",",","optional","Minimum","tempo","to","detect","[","bpm","]",".","max_bpm",":","float",",","optional","Maximum","tempo","to","detect","[","bpm","]",".","act_smooth",":","float",",","optional","Smooth","the","activation","function","over","`","act_smooth","`","seconds",".","hist_smooth",":","int",",","optional","Smooth","the","tempo","histogram","over","`","hist_smooth","`","bins",".","alpha",":","float",",","optional","Scaling","factor","for","the","comb","filter",".","fps",":","float",",","optional","Frames","per","second",".","histogram_processor",":",":","class",":","`","TempoHistogramProcessor","`",",","optional","Processor","used","to","create","a","tempo","histogram",".","interpolate",":","bool",",","optional","Interpolate","tempo","with","quadratic","interpolation",".","Examples","--","--","--","--","Create","a","TempoEstimationProcessor",".","The","returned","array","represents","the","estimated","tempi","(","given","in","beats","per","minute",")","and","their","relative","strength",".",">",">",">","proc","=","TempoEstimationProcessor","(","fps=100",")",">",">",">","proc","#","doctest",":","+ELLIPSIS","<","madmom.features.tempo.TempoEstimationProcessor","object","at","0x","...",">","Call","this","TempoEstimationProcessor","with","the","beat","activation","function","obtained","by","RNNBeatProcessor","to","estimate","the","tempi",".",">",">",">","from","madmom.features.beats","import","RNNBeatProcessor",">",">",">","act","=","RNNBeatProcessor","(",")","(","'tests\/data\/audio\/sample.wav","'",")",">",">",">","proc","(","act",")","#","doctest",":","+NORMALIZE_WHITESPACE","array","(","[","[","176.47059",",","0.47469","]",",","[","117.64706",",","0.17667","]",",","[","240.",",","0.15371","]",",","[","68.96552",",","0.09864","]",",","[","82.19178",",","0.09629","]","]",")"]
docstr: Detect the tempi from the (beat) activations.
  
  Parameters
  ----------
  activations : numpy array
      Beat activation function.
  
  Returns
  -------
  tempi : numpy array
      Array with the dominant tempi [bpm] (first column) and their
      relative strengths (second column).
code: def process_offline(self, activations, **kwargs):
      """
      Detect the tempi from the (beat) activations.
  
      Parameters
      ----------
      activations : numpy array
          Beat activation function.
  
      Returns
      -------
      tempi : numpy array
          Array with the dominant tempi [bpm] (first column) and their
          relative strengths (second column).
  
      """
      # smooth the activations if needed
      if self.act_smooth is not None:
          act_smooth = int(round(self.fps * self.act_smooth))
          activations = smooth_signal(activations, act_smooth)
      # generate tempo histogram from beat activations/TCN classification
      histogram = self.histogram_processor(activations)
      # smooth the histogram
      histogram = smooth_histogram(histogram, self.hist_smooth)
      # detect the tempi and return them
      return detect_tempo(
          histogram, self.fps, interpolate=self.interpolate
      )
  
imports: from __future__ import absolute_import, division, print_function
  import sys
  import warnings
  from operator import itemgetter
  import numpy
  from ..audio.signal import smooth
  from ..processors import BufferProcessor, OnlineProcessor
label_desc: Use image node_id 8 for calling the TempoEstimationProcessor obj's underlying member method code with example usage: obj.process_offline(activations) and returns: detect_tempo