18aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org/* 28aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 38aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org * 48aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org * Use of this source code is governed by a BSD-style license 58aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org * that can be found in the LICENSE file in the root of the source 68aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org * tree. An additional intellectual property rights grant can be found 78aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org * in the file PATENTS. All contributing project authors may 88aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org * be found in the AUTHORS file in the root of the source tree. 98aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org */ 108aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org 118aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org#ifndef WEBRTC_COMMON_AUDIO_VAD_INCLUDE_VAD_H_ 128aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org#define WEBRTC_COMMON_AUDIO_VAD_INCLUDE_VAD_H_ 138aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org 148aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org#include "webrtc/base/checks.h" 15e9e7896293747b2084e7f018675276f5096cdafckwiberg#include "webrtc/base/scoped_ptr.h" 168aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org#include "webrtc/common_audio/vad/include/webrtc_vad.h" 178aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org#include "webrtc/typedefs.h" 188aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org 198aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.orgnamespace webrtc { 208aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org 218aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.orgclass Vad { 228aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org public: 238aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org enum Aggressiveness { 248aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org kVadNormal = 0, 258aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org kVadLowBitrate = 1, 268aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org kVadAggressive = 2, 278aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org kVadVeryAggressive = 3 288aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org }; 298aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org 308aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org enum Activity { kPassive = 0, kActive = 1, kError = -1 }; 318aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org 32e9e7896293747b2084e7f018675276f5096cdafckwiberg virtual ~Vad() = default; 338aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org 34e9e7896293747b2084e7f018675276f5096cdafckwiberg // Calculates a VAD decision for the given audio frame. Valid sample rates 35e9e7896293747b2084e7f018675276f5096cdafckwiberg // are 8000, 16000, and 32000 Hz; the number of samples must be such that the 36e9e7896293747b2084e7f018675276f5096cdafckwiberg // frame is 10, 20, or 30 ms long. 37ff1a3e36bdd023fc2d3bef9af6b161ce144ffd6bhenrik.lundin@webrtc.org virtual Activity VoiceActivity(const int16_t* audio, 38ff1a3e36bdd023fc2d3bef9af6b161ce144ffd6bhenrik.lundin@webrtc.org size_t num_samples, 39e9e7896293747b2084e7f018675276f5096cdafckwiberg int sample_rate_hz) = 0; 4012cfc9b4dacd6942377df1f29a64bdbec591920ekwiberg 41e9e7896293747b2084e7f018675276f5096cdafckwiberg // Resets VAD state. 42e9e7896293747b2084e7f018675276f5096cdafckwiberg virtual void Reset() = 0; 438aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org}; 448aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org 45e9e7896293747b2084e7f018675276f5096cdafckwiberg// Returns a Vad instance that's implemented on top of WebRtcVad. 46e9e7896293747b2084e7f018675276f5096cdafckwibergrtc::scoped_ptr<Vad> CreateVad(Vad::Aggressiveness aggressiveness); 47e9e7896293747b2084e7f018675276f5096cdafckwiberg 488aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org} // namespace webrtc 49e9e7896293747b2084e7f018675276f5096cdafckwiberg 508aa4d2d2cd46bca6da7e071583482dd7ed0e2d0chenrik.lundin@webrtc.org#endif // WEBRTC_COMMON_AUDIO_VAD_INCLUDE_VAD_H_ 51