/* * Copyright (c) 2019 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef MODULES_AUDIO_PROCESSING_LEGACY_NOISE_SUPPRESSION_H_ #define MODULES_AUDIO_PROCESSING_LEGACY_NOISE_SUPPRESSION_H_ #include #include namespace webrtc { class AudioBuffer; // The noise suppression (NS) component attempts to remove noise while // retaining speech. Recommended to be enabled on the client-side. class NoiseSuppression { public: // Determines the aggressiveness of the suppression. Increasing the level // will reduce the noise level at the expense of a higher speech distortion. enum class Level { kLow, kModerate, kHigh, kVeryHigh }; NoiseSuppression(size_t channels, int sample_rate_hz, Level level); ~NoiseSuppression(); NoiseSuppression(NoiseSuppression&) = delete; NoiseSuppression& operator=(NoiseSuppression&) = delete; void AnalyzeCaptureAudio(AudioBuffer* audio); void ProcessCaptureAudio(AudioBuffer* audio); // LEGACY: Returns the internally computed prior speech probability of current // frame averaged over output channels. This is not supported in fixed point, // for which |kUnsupportedFunctionError| is returned. float speech_probability() const; // LEGACY: Returns the size of the noise vector returned by NoiseEstimate(). static size_t num_noise_bins(); // LEGACY: Returns the noise estimate per frequency bin averaged over all // channels. std::vector NoiseEstimate(); private: class Suppressor; std::vector> suppressors_; }; } // namespace webrtc #endif // MODULES_AUDIO_PROCESSING_LEGACY_NOISE_SUPPRESSION_H_