AlgorithmStatus SilenceRate::process() { EXEC_DEBUG("process()"); AlgorithmStatus status = acquireData(); if (status != OK) return status; const vector<Real>& frame = _frame.firstToken(); if (frame.empty()) { throw EssentiaException("SilenceRate: a given input frame was empty, " "cannot compute the power of an empty frame."); } Real power = instantPower(frame); for (int i=0; i<(int)_outputs.size(); i++) { Real& output = _outputs[i]->firstToken(); output = power < _thresholds[i]? 1.0 : 0.0; } releaseData(); return OK; }
void SilenceRate::compute() { const vector<Real>& frame = _frame.get(); Real power = instantPower(frame); for (int i=0; i<int(_outputs.size()); ++i) { Real& output = _outputs[i]->get(); output = power < _thresholds[i]? 1.0 : 0.0; } }
void Leq::compute() { const std::vector<Real>& signal = _signal.get(); Real& leq = _leq.get(); if (signal.empty()) { throw EssentiaException("Leq: input signal is empty"); } leq = pow2db(instantPower(signal)); }
void StartStopCut::findNonSilentFrame(std::vector<Real> audio, int& nonSilentFrame, uint lastFrame) { std::vector<Real> frame; uint nFrame = 0; _frameCutter->input("signal").set(audio); _frameCutter->output("frame").set(frame); while (nFrame < lastFrame) { _frameCutter->compute(); // If it was the last one (ie: it was empty), then we're done. if (!frame.size()) break; nonSilentFrame = instantPower(frame) > _threshold; if (nonSilentFrame) break; nFrame++; } _frameCutter->reset(); }