SCNRv1
Overview
DSP Concepts proprietary Single-Channel Noise Reduction. Version 1.
Discussion
DSP Concepts proprietary Single-Channel Noise Reduction module. This module works in conjunction with the WOLA filterbank modules. The module has a mono input pin and mono output pin. The input pin is mic input signal and output pin is stationary noise-suppressed signal.
The module operates on any block size and any sampling rate. There is no design time parameters. At run time, you specify the minimum gain. The minimum gain is a lower clipping point of gain in dB for each frequency bin.
The module estimates SNR and determins attenuation of each frequency from gain table.
Module Pack
awe-mod-dspc-vui
ClassID
classID = 15300
Type Definition
typedef struct _ModuleSCNRv1
{
ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure
FLOAT32 minGaindB; // the minimum gain to be applied in dB
FLOAT32 noiseAdjust; // noise level adjustment.
FLOAT32 minGain; // the minimum gain to be applied in linear.
FLOAT32 attackTime; // Internal coefficient realizing the attack time.
FLOAT32 attackCoeff; // Internal coefficient realizing the attack time.
FLOAT32 freq1; // Internal coefficient realizing the attack time.
FLOAT32 b0_1; // Desired first numerator coefficient.
FLOAT32 b1_1; // Desired second numerator coefficient.
FLOAT32 a1_1; // Desired second denominator coefficient.
FLOAT32 freq2; // Internal coefficient realizing the attack time.
FLOAT32 b0_2; // Desired first numerator coefficient.
FLOAT32 b1_2; // Desired second numerator coefficient.
FLOAT32 a1_2; // Desired second denominator coefficient.
FLOAT32 ppriorTimeConst; // Internal coefficient realizing the attack time.
FLOAT32 ppriorEta; // Internal coefficient realizing the attack time.
FLOAT32* pxState; // Sb smoothing state for Px computation.
FLOAT32* pshatState; // Sb smoothing state for Ps_hat computation.
FLOAT32* gainState; // Sb smoothing state for gain computation.
FLOAT32* pnEnvState; // Attack release env state for Pn computation.
FLOAT32* prevPsHat; // Feedback memory.
} ModuleSCNRv1Class;
Variables
Properties
| Name | Type | Usage | isHidden | Default Value | Range | Units |
|---|---|---|---|---|---|---|
| minGaindB | float | parameter | 0 | -15 | -15:1:0 | dB |
| noiseAdjust | float | parameter | 0 | 0.5 | 0.01:0.01:1 | |
| minGain | float | derived | 1 | 0.1778 | Unrestricted | |
| attackTime | float | const | 1 | 2000 | Unrestricted | |
| attackCoeff | float | derived | 1 | 1.037e-05 | Unrestricted | |
| freq1 | float | const | 1 | 12 | Unrestricted | |
| b0_1 | float | derived | 1 | 0.0007848 | Unrestricted | |
| b1_1 | float | derived | 1 | 0.0007848 | Unrestricted | |
| a1_1 | float | derived | 1 | 0.9984 | Unrestricted | |
| freq2 | float | const | 1 | 5 | Unrestricted | |
| b0_2 | float | derived | 1 | 0.0003271 | Unrestricted | |
| b1_2 | float | derived | 1 | 0.0003271 | Unrestricted | |
| a1_2 | float | derived | 1 | 0.9993 | Unrestricted | |
| ppriorTimeConst | float | const | 1 | 311.9 | Unrestricted | |
| ppriorEta | float | derived | 1 | 0.9999 | Unrestricted | |
| pxState | float* | state | 1 | [1 x 32] | Unrestricted | |
| pshatState | float* | state | 1 | [1 x 32] | Unrestricted | |
| gainState | float* | state | 1 | [1 x 32] | Unrestricted | |
| pnEnvState | float* | state | 1 | [1 x 32] | Unrestricted | |
| prevPsHat | float* | state | 1 | [1 x 32] | Unrestricted |
Pins
Input Pins
| Name | in |
| Description | Audio input |
| Data type | float |
| Channel range | 1 |
| Block size range | Unrestricted |
| Sample rate range | Unrestricted |
| Complex support | Complex |
Output Pins
| Name | out |
| Description | audio output |
| Data Type | float |
Matlab Usage
File Name: scnr_v1_module.m
M = scnr_v1_module(NAME)
Single-channel noise reduction module. This module reduces stationary noise floor level. Arguments:
NAME - name of the module
Copyright (c) 2026 DSP Concepts, Inc.