Exemple #1
0
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;
}
Exemple #2
0
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;
  }
}
Exemple #3
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));
}
Exemple #4
0
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();
}