summaryrefslogtreecommitdiff
path: root/src/audio
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2023-08-21 18:05:29 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2023-08-21 18:05:29 -0400
commit6dcc127c0a5078e4cbba329943489307cd8428a7 (patch)
tree339ee2191751f5d906ddf676f4bb74f8ba6b8457 /src/audio
parent3dd192eed2f706df7581b6655dc4b1843d4df4d8 (diff)
downloadabaddon-portaudio-6dcc127c0a5078e4cbba329943489307cd8428a7.tar.gz
abaddon-portaudio-6dcc127c0a5078e4cbba329943489307cd8428a7.zip
decay vad prob over time
Diffstat (limited to 'src/audio')
-rw-r--r--src/audio/manager.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/audio/manager.cpp b/src/audio/manager.cpp
index dc3e7e9..7b88c67 100644
--- a/src/audio/manager.cpp
+++ b/src/audio/manager.cpp
@@ -482,6 +482,9 @@ bool AudioManager::DecayVolumeMeters() {
m_capture_peak_meter -= 600;
if (m_capture_peak_meter < 0) m_capture_peak_meter = 0;
+ const auto x = m_vad_prob.load() - 0.05f;
+ m_vad_prob.store(x < 0.0f ? 0.0f : x);
+
std::lock_guard<std::mutex> _(m_vol_mtx);
for (auto &[ssrc, meter] : m_volumes) {
@@ -505,13 +508,13 @@ bool AudioManager::CheckVADRNNoise(const int16_t *pcm, float *denoised_left, flo
for (size_t i = 0; i < 480; i++) {
rnnoise_input[i] = static_cast<float>(pcm[i * 2]);
}
- m_vad_prob = rnnoise_process_frame(m_rnnoise[0], denoised_left, rnnoise_input);
+ m_vad_prob = std::max(m_vad_prob.load(), rnnoise_process_frame(m_rnnoise[0], denoised_left, rnnoise_input));
if (m_enable_noise_suppression) {
for (size_t i = 0; i < 480; i++) {
rnnoise_input[i] = static_cast<float>(pcm[i * 2 + 1]);
}
- m_vad_prob = rnnoise_process_frame(m_rnnoise[1], denoised_right, rnnoise_input);
+ rnnoise_process_frame(m_rnnoise[1], denoised_right, rnnoise_input);
}
return m_vad_prob > m_prob_threshold;