(signal,
        samplerate=16000,
        winlen=0.025,
        winstep=0.01,
        nfilt=26,
        nfft=512,
        lowfreq=0,
        highfreq=None,
        preemph=0.97,
        winfunc=lambda x: numpy.ones((x,)))
return numpy.dot(pspec * R, fb.T) / feat
Compute Spectral Subband Centroid features from an audio signal.

    :param signal: the audio signal from which to compute features. Should be an N*1 array
    :param samplerate: the samplerate of the signal we are working with.
    :param winlen: the length of the analysis window in seconds. Default is 0.025s (25 milliseconds)
    :param winstep: the step between successive windows in seconds. Default is 0.01s (10 milliseconds)
    :param nfilt: the number of filters in the filterbank, default 26.
    :param nfft: the FFT size. Default is 512.
    :param lowfreq: lowest band edge of mel filters. In Hz, default is 0.
    :param highfreq: highest band edge of mel filters. In Hz, default is samplerate/2
    :param preemph: apply preemphasis filter with preemph as coefficient. 0 is no filter. Default is 0.97.
    :param winfunc: the analysis window to apply to each frame. By default no window is applied. You can use numpy window functions here e.g. winfunc=numpy.hamming
    :returns: A numpy array of size (NUMFRAMES by nfilt) containing features. Each row holds 1 feature vector.
Compute Spectral Subband Centroid features from an audio signal.
Compute Spectral Subband Centroid features from an audio signal .
def ssc(signal,
        samplerate=16000,
        winlen=0.025,
        winstep=0.01,
        nfilt=26,
        nfft=512,
        lowfreq=0,
        highfreq=None,
        preemph=0.97,
        winfunc=lambda x: numpy.ones((x,))):
  """Compute Spectral Subband Centroid features from an audio signal.

    :param signal: the audio signal from which to compute features. Should be an N*1 array
    :param samplerate: the samplerate of the signal we are working with.
    :param winlen: the length of the analysis window in seconds. Default is 0.025s (25 milliseconds)
    :param winstep: the step between successive windows in seconds. Default is 0.01s (10 milliseconds)
    :param nfilt: the number of filters in the filterbank, default 26.
    :param nfft: the FFT size. Default is 512.
    :param lowfreq: lowest band edge of mel filters. In Hz, default is 0.
    :param highfreq: highest band edge of mel filters. In Hz, default is samplerate/2
    :param preemph: apply preemphasis filter with preemph as coefficient. 0 is no filter. Default is 0.97.
    :param winfunc: the analysis window to apply to each frame. By default no window is applied. You can use numpy window functions here e.g. winfunc=numpy.hamming
    :returns: A numpy array of size (NUMFRAMES by nfilt) containing features. Each row holds 1 feature vector.
    """
  highfreq = highfreq or samplerate / 2
  signal = sigproc.preemphasis(signal, preemph)
  frames = sigproc.framesig(signal, winlen * samplerate, winstep * samplerate,
                            winfunc)
  pspec = sigproc.powspec(frames, nfft)
  pspec = numpy.where(pspec == 0,
                      numpy.finfo(float).eps,
                      pspec)  # if things are all zeros we get problems

  fb = get_filterbanks(nfilt, nfft, samplerate, lowfreq, highfreq)
  feat = numpy.dot(pspec, fb.T)  # compute the filterbank energies
  R = numpy.tile(
      numpy.linspace(1, samplerate / 2, numpy.size(pspec, 1)),
      (numpy.size(pspec, 0), 1))

  return numpy.dot(pspec * R, fb.T) / feat
def ssc ( signal , samplerate = 16000 , winlen = 0.025 , winstep = 0.01 , nfilt = 26 , nfft = 512 , lowfreq = 0 , highfreq = None , preemph = 0.97 , winfunc = lambda x : numpy . ones ( ( x , ) ) ) : highfreq = highfreq or samplerate / 2 signal = sigproc . preemphasis ( signal , preemph ) frames = sigproc . framesig ( signal , winlen * samplerate , winstep * samplerate , winfunc ) pspec = sigproc . powspec ( frames , nfft ) pspec = numpy . where ( pspec == 0 , numpy . finfo ( float ) . eps , pspec ) # if things are all zeros we get problems fb = get_filterbanks ( nfilt , nfft , samplerate , lowfreq , highfreq ) feat = numpy . dot ( pspec , fb . T ) # compute the filterbank energies R = numpy . tile ( numpy . linspace ( 1 , samplerate / 2 , numpy . size ( pspec , 1 ) ) , ( numpy . size ( pspec , 0 ) , 1 ) ) return numpy . dot ( pspec * R , fb . T ) / feat