// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // The EnergyEndpointer class finds likely speech onset and offset points. // // The implementation described here is about the simplest possible. // It is based on timings of threshold crossings for overall signal // RMS. It is suitable for light weight applications. // // As written, the basic idea is that one specifies intervals that // must be occupied by super- and sub-threshold energy levels, and // defers decisions re onset and offset times until these // specifications have been met. Three basic intervals are tested: an // onset window, a speech-on window, and an offset window. We require // super-threshold to exceed some mimimum total durations in the onset // and speech-on windows before declaring the speech onset time, and // we specify a required sub-threshold residency in the offset window // before declaring speech offset. As the various residency requirements are // met, the EnergyEndpointer instance assumes various states, and can return the // ID of these states to the client (see EpStatus below). // // The levels of the speech and background noise are continuously updated. It is // important that the background noise level be estimated initially for // robustness in noisy conditions. The first frames are assumed to be background // noise and a fast update rate is used for the noise level. The duration for // fast update is controlled by the fast_update_dur_ paramter. // // If used in noisy conditions, the endpointer should be started and run in the // EnvironmentEstimation mode, for at least 200ms, before switching to // UserInputMode. // Audio feedback contamination can appear in the input audio, if not cut // out or handled by echo cancellation. Audio feedback can trigger a false // accept. The false accepts can be ignored by setting // ep_contamination_rejection_period. #ifndef COMPONENTS_SPEECH_ENDPOINTER_ENERGY_ENDPOINTER_H_ #define COMPONENTS_SPEECH_ENDPOINTER_ENERGY_ENDPOINTER_H_ #include <stdint.h> #include <memory> #include <vector> #include "components/speech/endpointer/energy_endpointer_params.h" namespace speech { // Endpointer status codes enum EpStatus { … }; class EnergyEndpointer { … }; } // namespace speech #endif // COMPONENTS_SPEECH_ENDPOINTER_ENERGY_ENDPOINTER_H_