def mod_4hz(self, rate_wavsample):
    """Computes and returns the 4Hz modulation energy features for the given input wave file"""

    # Set parameters
    wl = self.win_length_ms
    ws = self.win_shift_ms
    nf = self.n_filters
    f_min = self.f_min
    f_max = self.f_max
    pre = self.pre_emphasis_coef

    c = bob.ap.Spectrogram(rate_wavsample[0], wl, ws, nf, f_min, f_max, pre)
    c.energy_filter=True
    c.log_filter=False
    c.energy_bands=True

    sig =  rate_wavsample[1]
    energy_bands = c(sig)
    filtering_res = self.pass_band_filtering(energy_bands, rate_wavsample[0])
    mod_4hz = self.modulation_4hz(filtering_res, rate_wavsample)
    mod_4hz = self.averaging(mod_4hz)
    e = bob.ap.Energy(rate_wavsample[0], wl, ws)
    energy_array = e(rate_wavsample[1])
    labels = self._voice_activity_detection(energy_array, mod_4hz)
    labels = utils.smoothing(labels,self.smoothing_window) # discard isolated speech less than 100ms
    logger.info("After Mod-4Hz based VAD there are %d frames remaining over %d", numpy.sum(labels), len(labels))
    return labels, energy_array, mod_4hz
Computes and returns the 4Hz modulation energy features for the given input wave file