1 /* 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 12 /* 13 * This header file includes the VAD API calls. Specific function calls are given below. 14 */ 15 16 #ifndef WEBRTC_COMMON_AUDIO_VAD_INCLUDE_WEBRTC_VAD_H_ // NOLINT 17 #define WEBRTC_COMMON_AUDIO_VAD_INCLUDE_WEBRTC_VAD_H_ 18 19 #include <stddef.h> 20 21 #include "webrtc/typedefs.h" 22 23 typedef struct WebRtcVadInst VadInst; 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 29 // Creates an instance to the VAD structure. 30 VadInst* WebRtcVad_Create(); 31 32 // Frees the dynamic memory of a specified VAD instance. 33 // 34 // - handle [i] : Pointer to VAD instance that should be freed. 35 void WebRtcVad_Free(VadInst* handle); 36 37 // Initializes a VAD instance. 38 // 39 // - handle [i/o] : Instance that should be initialized. 40 // 41 // returns : 0 - (OK), 42 // -1 - (NULL pointer or Default mode could not be set). 43 int WebRtcVad_Init(VadInst* handle); 44 45 // Sets the VAD operating mode. A more aggressive (higher mode) VAD is more 46 // restrictive in reporting speech. Put in other words the probability of being 47 // speech when the VAD returns 1 is increased with increasing mode. As a 48 // consequence also the missed detection rate goes up. 49 // 50 // - handle [i/o] : VAD instance. 51 // - mode [i] : Aggressiveness mode (0, 1, 2, or 3). 52 // 53 // returns : 0 - (OK), 54 // -1 - (NULL pointer, mode could not be set or the VAD instance 55 // has not been initialized). 56 int WebRtcVad_set_mode(VadInst* handle, int mode); 57 58 // Calculates a VAD decision for the |audio_frame|. For valid sampling rates 59 // frame lengths, see the description of WebRtcVad_ValidRatesAndFrameLengths(). 60 // 61 // - handle [i/o] : VAD Instance. Needs to be initialized by 62 // WebRtcVad_Init() before call. 63 // - fs [i] : Sampling frequency (Hz): 8000, 16000, or 32000 64 // - audio_frame [i] : Audio frame buffer. 65 // - frame_length [i] : Length of audio frame buffer in number of samples. 66 // 67 // returns : 1 - (Active Voice), 68 // 0 - (Non-active Voice), 69 // -1 - (Error) 70 int WebRtcVad_Process(VadInst* handle, int fs, const int16_t* audio_frame, 71 size_t frame_length); 72 73 // Checks for valid combinations of |rate| and |frame_length|. We support 10, 74 // 20 and 30 ms frames and the rates 8000, 16000 and 32000 Hz. 75 // 76 // - rate [i] : Sampling frequency (Hz). 77 // - frame_length [i] : Speech frame buffer length in number of samples. 78 // 79 // returns : 0 - (valid combination), -1 - (invalid combination) 80 int WebRtcVad_ValidRateAndFrameLength(int rate, size_t frame_length); 81 82 #ifdef __cplusplus 83 } 84 #endif 85 86 #endif // WEBRTC_COMMON_AUDIO_VAD_INCLUDE_WEBRTC_VAD_H_ // NOLINT 87