gss icon indicating copy to clipboard operation
gss copied to clipboard

[Fix] Use number of channels when calculating BAN

Open anteju opened this issue 1 year ago • 9 comments

It seems the current implementation is missing a scaling by $M^{-1/2}$ when calculating BAN. This results in a gain of $10 \log_{10} M~\text{dB}$, which sometimes results in clipping depending on $M$ and the input signal level.

Please refer to eq. (17) in Warsitz, Blind Acoustic Beamforming Based on Generalized Eigenvalue Decomposition, 2007.

anteju avatar Mar 20 '23 16:03 anteju

@boeddeker, possibly of interest -- this seems to apply to pb_* repos as well.

anteju avatar Mar 20 '23 16:03 anteju

@boeddeker since you are the expert on this, I will defer to your opinion.

desh2608 avatar Mar 20 '23 17:03 desh2608

Yes, it is missing. It was already missing, when we translated the MATLAB code. I checked it once, but with [1, 0, 0, ...] as beamformer, then the function works as expected, but when you change the beamformer to [1, 1, 1, ...], the scale is too large.

Depending on your application, you may want to think about a normalization before writing files to the disk. For ASR we observed until now, always positive effects, hence we never had any issue with this scaling error, since we remove the scale afterward.

boeddeker avatar Mar 21 '23 10:03 boeddeker

I will keep this PR open (for visibility). As pointed out by @boeddeker, it does not seem to impact ASR much. For the CHiME-7 DASR challenge, participants can choose whether or not they want to apply it in their system.

desh2608 avatar Mar 21 '23 12:03 desh2608

@boeddeker & @desh2608, I just wanted to let you know, up to you whether to include it or not. Since you mentioned CHiME: processed audio is saved to fixed point format and some examples are clipped. This likely does not impact ASR significantly. However, it is nevertheless incorrect.

anteju avatar Mar 21 '23 15:03 anteju

Thanks for the heads up, in any case.

desh2608 avatar Mar 21 '23 15:03 desh2608

processed audio is saved to fixed point format and some examples are clipped.

This depends on how you dump the data to the disk. We use internally a normalization, before writing an audio file (see paderbox.io.dump_audio) to minimize the quantization issue.

boeddeker avatar Mar 21 '23 16:03 boeddeker

@popcornell could this explain some of the clipping issues you had observed, or were you able to resolve them?

desh2608 avatar Mar 21 '23 16:03 desh2608

I think they will possibly still occur because there is also clipping in some arrays in CHiME-6. Only way to prevent it is using peak normalization when the peak is outside [-1, 1]. But it also reduces dynamic range and also that could have an impact.

popcornell avatar Mar 22 '23 01:03 popcornell