A Hybrid SFANC-FxNLMS Algorithm for Active Noise Control based on Deep Learning

Zhengding Luo, Dongyuan Shi, Woon-Seng Gan
8/17/2022
eess.SYcs.LGcs.SD

Official code: Luo-Zhengding/SFANC-FxNLMS-ANC-Algorithm-based-on-Deep-Learning (86 stars, last commit 2025-08-28).

Abstract

The selective fixed-filter active noise control (SFANC) method selecting the best pre-trained control filters for various types of noise can achieve a fast response time. However, it may lead to large steady-state errors due to inaccurate filter selection and the lack of adaptability. In comparison, the filtered-X normalized least-mean-square (FxNLMS) algorithm can obtain lower steady-state errors through adaptive optimization. Nonetheless, its slow convergence has a detrimental effect on dynamic noise attenuation. Therefore, this paper proposes a hybrid SFANC-FxNLMS approach to overcome the adaptive algorithm's slow convergence and provide a better noise reduction level than the SFANC method. A lightweight one-dimensional convolutional neural network (1D CNN) is designed to automatically select the most suitable pre-trained control filter for each frame of the primary noise. Meanwhile, the FxNLMS algorithm continues to update the coefficients of the chosen pre-trained control filter at the sampling rate. Owing to the effective combination of the two algorithms, experimental results show that the hybrid SFANC-FxNLMS algorithm can achieve a rapid response time, a low noise reduction error, and a high degree of robustness.

View on arXivView PDF

Code Implementations(1)

This paper proposes a hybrid SFANC-FxNLMS approach to overcome the adaptive algorithm's slow convergence and provide a better noise reduction level than the SFANC method.

8625Python, Jupyter NotebookApr 18, 20221 years ago

Cite this paper

@article{luo2022hybrid,
  title  = {A Hybrid SFANC-FxNLMS Algorithm for Active Noise Control based on Deep Learning},
  author = {Zhengding Luo and Dongyuan Shi and Woon-Seng Gan},
  year   = {2022},
  eprint = {2208.08082},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/2208.08082}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2208.08082.svg)](https://codeofpaper.com/paper/2208.08082)

Discussion