WebRtc_noise_suppression
WebRtc_noise_suppression copied to clipboard
Noise suppression in high sample rate.
Hello, jagger2048! Thank You for Your great project!
In documentation for signal_processing_library.h I found this words:
// WebRtcSpl_AnalysisQMF(...) // // Splits a 0-2*F Hz signal into two sub bands: 0-F Hz and F-2*F Hz. The // current version has F = 8000, therefore, a super-wideband audio signal is // split to lower-band 0-8 kHz and upper-band 8-16 kHz. // // Input: // - in_data : Wide band speech signal, 320 samples (10 ms) // // Input & Output: // - filter_state1 : Filter state for first All-pass filter // - filter_state2 : Filter state for second All-pass filter // // Output: // - low_band : Lower-band signal 0-8 kHz band, 160 samples (10 ms) // - high_band : Upper-band signal 8-16 kHz band (flipped in frequency // domain), 160 samples (10 ms)
So why do You use WebRtcSpl_AnalysisQMF(...) (and WebRtcSpl_SynthesisQMF(...)) for 32000 Hz sound?
Hi masyagin1998,
The WebRtcSpl_AnalysisQMF() and WebRtcSpl_SynthesisQMF() function is the Quadrature mirror filter which can split the input signal into two bands, the lower one and the upper one. Its centre frequency is pi/2.
Maybe the annotation in signal_processing_library.h has some fuzzy description. Although It says F = 8000, sample rate = 16000, its input frame length supports up to 320 points, 10ms. That is a sample rate at 32000 Hz.
I'm not sure the QMF actually works for fs = 16000 or 32000 as I am not familiar with the QMF and it has been optimized with fix-point. In my opinion fs = 32k is more reasonable as the noise suppression can originally work at fs = 16000 without other processing.
I have updated a simple test for the QMF based two-band splitting filter at another project, After synthesis, it can be reconstructed the signal splitted into two bands, you can check the results at the project.