blob: 78b43ae582f72cd2f3e9291d440ff3572ee6ead1 [file] [log] [blame]
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
#ifndef MEASURE_RMS_H
#define MEASURE_RMS_H
/* Measure the rms of the non-silence segment of the signal in pcm, which
is of numSamples length, and sampled at sampleRate. pcm is assumed to
consist of silence - signal - silence, as might be logged during a
speech recognition attempt. The stimulus signal in this case should
be approximately a 3-second burst of pink noise presented at a level
comparable to normal speaking level. The RMS is measured using 25ms
duration non-overlapping windows. These are averaged over the whole
non-silence part of pcm, and the result is returned in rms. The
standard deviation of this measurement over all frames is returned in
stdRms, and the estimated duration of the non-silence region, in
seconds, is returned in duration. The target signal is taken to be
that segment that is onsetThresh dB above the background, and is
expected to be continuous, once the onset has been found. If
onsetThresh < 0.0, simply make the measurememt over the entire pcm
signal. In both cases, the mean of the entire signal is returned in
mean. */
void measureRms(short* pcm, int numSamples, float sampleRate,
float onsetThresh, float* rms, float* stdRms,
float* mean, float* duration);
#endif /* MEASURE_RMS_H */