mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 13:50:40 +01:00

This is a reland of 87a7b82520
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}
74 lines
3.3 KiB
C
74 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_ */
|