AudioProcessingImpl: Add a VAD submodule
Add a VoiceActivityDetectorWrapper submodule in AudioProcessingImpl and enable injecting speech probability into GainController2. Bug: webrtc:13663 Change-Id: I05e13b737d085b45ac8ce76660191867c56834c2 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/265166 Commit-Queue: Hanna Silen <silen@webrtc.org> Reviewed-by: Alessio Bazzica <alessiob@webrtc.org> Cr-Commit-Position: refs/heads/main@{#37275}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
ff45105b42
commit
0c1ad2992b
@ -30,9 +30,12 @@ class AudioBuffer;
|
||||
// microphone gain and/or applying digital gain.
|
||||
class GainController2 {
|
||||
public:
|
||||
// Ctor. If `use_internal_vad` is true, an internal voice activity
|
||||
// detector is used for digital adaptive gain.
|
||||
GainController2(const AudioProcessing::Config::GainController2& config,
|
||||
int sample_rate_hz,
|
||||
int num_channels);
|
||||
int num_channels,
|
||||
bool use_internal_vad);
|
||||
GainController2(const GainController2&) = delete;
|
||||
GainController2& operator=(const GainController2&) = delete;
|
||||
~GainController2();
|
||||
@ -44,13 +47,18 @@ class GainController2 {
|
||||
void SetFixedGainDb(float gain_db);
|
||||
|
||||
// Applies fixed and adaptive digital gains to `audio` and runs a limiter.
|
||||
void Process(AudioBuffer* audio);
|
||||
// If the internal VAD is used, `speech_probability` is ignored. Otherwise
|
||||
// `speech_probability` is used for digital adaptive gain if it's available
|
||||
// (limited to values [0.0, 1.0]).
|
||||
void Process(absl::optional<float> speech_probability, AudioBuffer* audio);
|
||||
|
||||
// Handles analog level changes.
|
||||
void NotifyAnalogLevel(int level);
|
||||
|
||||
static bool Validate(const AudioProcessing::Config::GainController2& config);
|
||||
|
||||
AvailableCpuFeatures GetCpuFeatures() const { return cpu_features_; }
|
||||
|
||||
private:
|
||||
static int instance_count_;
|
||||
const AvailableCpuFeatures cpu_features_;
|
||||
|
||||
Reference in New Issue
Block a user