
This is a reland of 87a7b82520b83a6cf42da27cdc46142c2eb6248c Original change's description: > Refactoring of the noise suppressor and adding true multichannel support > > This CL adds proper multichannel support to the noise suppressor. > To accomplish that in a safe way, a full refactoring of the noise > suppressor code has been done. > > Due to floating point precision, the changes made are not entirely > bitexact. They are, however, very close to being bitexact. > > As a safety measure, the former noise suppressor code is preserved > and a kill-switch is added to allow revering to the legacy noise > suppressor in case issues arise. > > Bug: webrtc:10895, b/143344262 > Change-Id: I0b071011b23265ac12e6d4b3956499d122286657 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158407 > Commit-Queue: Per Åhgren <peah@webrtc.org> > Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#29646} Bug: webrtc:10895, b/143344262 Change-Id: I236f1e67bb0baa4e30908a4cf7a8a7bb55fbced3 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158747 Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org> Commit-Queue: Per Åhgren <peah@webrtc.org> Cr-Commit-Position: refs/heads/master@{#29663}
75 lines
3.3 KiB
C
75 lines
3.3 KiB
C
/*
|
|
* Copyright (c) 2012 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_NS_NSX_DEFINES_H_
|
|
#define MODULES_AUDIO_PROCESSING_LEGACY_NS_NSX_DEFINES_H_
|
|
|
|
#define ANAL_BLOCKL_MAX 256 /* Max analysis block length */
|
|
#define HALF_ANAL_BLOCKL 129 /* Half max analysis block length + 1 */
|
|
#define NUM_HIGH_BANDS_MAX 2 /* Max number of high bands */
|
|
#define SIMULT 3
|
|
#define END_STARTUP_LONG 200
|
|
#define END_STARTUP_SHORT 50
|
|
#define FACTOR_Q16 2621440 /* 40 in Q16 */
|
|
#define FACTOR_Q7 5120 /* 40 in Q7 */
|
|
#define FACTOR_Q7_STARTUP 1024 /* 8 in Q7 */
|
|
#define WIDTH_Q8 3 /* 0.01 in Q8 (or 25 ) */
|
|
|
|
/* PARAMETERS FOR NEW METHOD */
|
|
#define DD_PR_SNR_Q11 2007 /* ~= Q11(0.98) DD update of prior SNR */
|
|
#define ONE_MINUS_DD_PR_SNR_Q11 41 /* DD update of prior SNR */
|
|
#define SPECT_FLAT_TAVG_Q14 \
|
|
4915 /* (0.30) tavg parameter for spectral flatness measure */
|
|
#define SPECT_DIFF_TAVG_Q8 \
|
|
77 /* (0.30) tavg parameter for spectral flatness measure */
|
|
#define PRIOR_UPDATE_Q14 1638 /* Q14(0.1) Update parameter of prior model */
|
|
#define NOISE_UPDATE_Q8 26 /* 26 ~= Q8(0.1) Update parameter for noise */
|
|
|
|
/* Probability threshold for noise state in speech/noise likelihood. */
|
|
#define ONE_MINUS_PROB_RANGE_Q8 205 /* 205 ~= Q8(0.8) */
|
|
#define HIST_PAR_EST 1000 /* Histogram size for estimation of parameters */
|
|
|
|
/* FEATURE EXTRACTION CONFIG */
|
|
/* Bin size of histogram */
|
|
#define BIN_SIZE_LRT 10
|
|
/* Scale parameters: multiply dominant peaks of the histograms by scale factor
|
|
* to obtain. */
|
|
/* Thresholds for prior model */
|
|
#define FACTOR_1_LRT_DIFF \
|
|
6 /* For LRT and spectral difference (5 times bigger) */
|
|
/* For spectral_flatness: used when noise is flatter than speech (10 times
|
|
* bigger). */
|
|
#define FACTOR_2_FLAT_Q10 922
|
|
/* Peak limit for spectral flatness (varies between 0 and 1) */
|
|
#define THRES_PEAK_FLAT 24 /* * 2 * BIN_SIZE_FLAT_FX */
|
|
/* Limit on spacing of two highest peaks in histogram: spacing determined by bin
|
|
* size. */
|
|
#define LIM_PEAK_SPACE_FLAT_DIFF 4 /* * 2 * BIN_SIZE_DIFF_FX */
|
|
/* Limit on relevance of second peak */
|
|
#define LIM_PEAK_WEIGHT_FLAT_DIFF 2
|
|
#define THRES_FLUCT_LRT \
|
|
10240 /* = 20 * inst->modelUpdate; fluctuation limit of LRT feat. */
|
|
/* Limit on the max and min values for the feature thresholds */
|
|
#define MAX_FLAT_Q10 38912 /* * 2 * BIN_SIZE_FLAT_FX */
|
|
#define MIN_FLAT_Q10 4096 /* * 2 * BIN_SIZE_FLAT_FX */
|
|
#define MAX_DIFF 100 /* * 2 * BIN_SIZE_DIFF_FX */
|
|
#define MIN_DIFF 16 /* * 2 * BIN_SIZE_DIFF_FX */
|
|
/* Criteria of weight of histogram peak to accept/reject feature */
|
|
#define THRES_WEIGHT_FLAT_DIFF \
|
|
154 /*(int)(0.3*(inst->modelUpdate)) for flatness and difference */
|
|
|
|
#define STAT_UPDATES 9 /* Update every 512 = 1 << 9 block */
|
|
#define ONE_MINUS_GAMMA_PAUSE_Q8 \
|
|
13 /* ~= Q8(0.05) Update for conservative noise estimate */
|
|
#define GAMMA_NOISE_TRANS_AND_SPEECH_Q8 \
|
|
3 /* ~= Q8(0.01) Update for transition and noise region */
|
|
|
|
#endif /* MODULES_AUDIO_PROCESSING_LEGACY_NS_NSX_DEFINES_H_ */
|