声学与数字信号处理系列

7 篇文章
1
声波与数字信号基础
· 7 分钟阅读

相消干涉

主动降噪(ANC)的物理基础是声波的相消干涉。两个频率相同、相位相反的声波叠加后会相互抵消。

原始噪声信号:

$$ p_n(t) = A \cos(2\pi ft + \phi) $$

ANC 系统生成的反向声波:

2
自适应滤波:从 LMS 到 NLMS
· 7 分钟阅读

LMS 算法

自适应滤波的核心问题是:给定参考信号 x(n) 和期望信号 d(n),找到一个滤波器系数向量 w,使输出 y(n) 逼近 d(n)

最小均方(Least Mean Square, LMS)算法是解决这个问题最经典的方法,由 Widrow 和 Hoff 在 1960 年提出。核心思路是每次迭代都沿着误差曲面最陡的方向下降一步——也就是随机梯度下降。

3
FXLMS 与主动降噪系统架构
· 7 分钟阅读

主动降噪(ANC, Active Noise Control)的核心思路是用扬声器发出一个与噪声相位相反、幅值相同的声波,通过相消干涉抵消掉目标区域的噪声。落地到硬件系统,需要解决两个问题:用什么传感器感知噪声,以及用哪种控制策略生成抗噪声。这两点决定了 ANC 系统的架构分类——前馈、反馈和混合式。

4
变步长与频域自适应算法
· 6 分钟阅读

固定步长的收敛矛盾

标准 LMS 算法和 NLMS 算法都使用固定的步长参数 $\mu$。步长大小的选择直接影响算法性能,但存在一个根本矛盾:

  • 大步长:收敛速度快,能够快速追踪环境变化,但稳态误差大,滤波精度低
  • 小步长:稳态误差小,滤波精度高,但收敛速度慢,对突变响应迟缓

这个矛盾在回声消除、主动噪声控制等应用中尤为突出——系统启动时需要快速收敛,稳态后则希望维持低误差。固定步长无法同时满足两阶段的需求。

5
嵌入式 ANC:STM32 实战
· 9 分钟阅读

硬件架构

实现实时 ANC 首先要选择合适的硬件平台。控制器需要在微秒级完成自适应滤波运算,同时管理多路音频数据流。

模块功能典型选型
主控制器执行自适应算法STM32F4/F7, ESP32-S3, nRF5340
参考麦克风采集环境噪声Knowles SPH0645, Infineon IM69D130
误差麦克风采集残余噪声Knowles SPH0645, TDK ICS-43434
音频 DAC输出抗噪声信号ES9218, PCM5102
功放驱动扬声器Class-D

参考麦克风位于耳罩外侧,采集外部环境噪声作为算法参考输入。误差麦克风位于耳罩内侧,采集扬声器附近的残余噪声,用于评估降噪效果并驱动自适应更新。音频 DAC 将数字抗噪声信号转为模拟量,经功放放大后驱动扬声器。

6
嵌入式 ANC:ESP32 实战
· 6 分钟阅读

ESP32-S3 的双核 Xtensa LX7 处理器带有向量指令集扩展,适合执行嵌入式 ANC 所需的实时 DSP 运算。配合 ESP-DSP 库可以高效实现自适应滤波器。

I2S 麦克风采集

ANC 需要至少两路同步输入:参考麦克风(采集环境噪声)和误差麦克风(采集残余误差)。ESP32-S3 的 I2S 外设支持同时接收多路 ADC 数据,配置为 16 位、16 kHz 采样即可满足消费级 ANC 需求。

7
ANC 调试与性能优化
· 11 分钟阅读

主动降噪系统的工程实现中,最耗时、最依赖经验的部分不是算法选型,而是参数调优和稳定性调试。滤波器阶数、步长系数、采样率——每一个参数都牵一发而动全身。本文从实践经验出发,梳理 ANC 调试中的关键参数选择逻辑和常见问题定位方法。