LV005-概述
一、音频数据流
一般来说,会遇到以下数据流的情况:
- 录音

- 对讲

- 录音

也并不都是按照上面的数据流,主要看需求,需要加哪些算法。
二、常用音频算法
| AEC(Acoustic echo cancellation) | 回声消除 | 消除回声,尤其是在通话或会议过程中,扬声器声音被麦克风拾取,导致反复回传形成回声。 |
| AGC(Automatic Gain Control) | 自动增益控制 | 自动调节音量,使得音频信号的强度保持在一个稳定的范围内,防止声音过大或过小。 |
| ALC(Automatic Level Control) | 线性增益控制 | ALC 常用来稳定输出功率幅度,个人理解就是一个线性放大的算法,对音频整体进行放大。 |
| NR(Noise Suppression) | 降噪 | 抑制背景噪声,如风声、键盘声、交通噪声等,以提高语音的清晰度和质量。 |
| ANC(Active Noise Control) | 主动噪声控制 | 感觉和 NR 一样,只是不同的叫法。 |
| HS(howling suppression) | 啸叫抑制算法 | 啸叫噪声往往比较尖锐刺耳,通过 HS 算法进行抑制。 |
1. 声学回声消除 AEC
1.1 简介
在语音通信中,扬声器播放出的声音由终端麦克风采集到传输给远端,使远端说话者听到自己的声音,形成声学回声。声学回声严重影响着通话的语音质量,如何更好地消除声学回声一直是算法工程师关注的焦点。由于产生声学回声的系统是时变非线性系统,所以通常的声学回声消除算法包括自适应滤波器和非线性处理两个模块:自适应滤波器负责模拟和跟踪回声路径,消除一部分线性回声;非线性处理则进一步对残留的回声进行抑制, 如下图所示:

常见的自适应滤波算法有最小均方算法(LMS, Least Mean Square),归一化最小均方算法(NLMS, Normalized Least Mean Square),仿射投影算法(APA, Affine Projection Algorithm),递归最小二乘法(RLS, Recursive Least Squares),以及这些算法的衍生算法。 AEC 模块在系统中的位置一般如下所示:

1.2 效果展示
经过 AEC 的处理可以消除回采到的扬声器播放的声音,l 效果与陈列回声消除效果接近。AEC 效果示意如下:
| Ref | ![]() |
| Input | ![]() |
| Output | ![]() |
估计回声路径的特征参数,产生一个模拟的回声通络,得到估计的回声信号,从接收信号中减去该信号,实现回声消除。可能存在的问题有:双讲抑制
和回声残留。

2. 自动增益 AGC
2.1 简介
在音视频通话的现实场景中,由于不同人的说话音量不同,同一人可能在不同地方说话,麦克风增益的不同等原因,导致麦克风端收到的信号大小不一,远端的人也会听到时大时小的音量,甚至扬声器破音与音量过小的情况均会发生。因此,对发送端音量的均衡是很有必要的。
自动增益控制(AGC, Auto Gain Control)可以极大地缓解有设备差异、说话人音量大小、距离远近灯因素导致的音量的差异,提升对端听着的主观听感。 AGC 算法通常位于音频前端算法上行处理和下行处理的最后一个模块,如图 :

2.2 效果展示
主要效果就是提高远距离或小声说话的声音,压制近距离或大声说话的声音。AGC 效果如下:
| 原始信号 | ![]() |
| 使用 agc 后 | ![]() |
首先判断噪声段和语音段,然后将语音段赋值拉升或压缩至目标增益范围。可能出现的问题如下:
AGC 处理需要收敛时间,远近音源切换是会有一个渐变过程。
如果远近音源同时发声时,远处音源拉升较小。
开启压制功能后,语音会有所抑制,通常关闭 AGC 的压制功能。
3. 线性增益控制 ALC
3.1 简介
由于 AGC 的特性, 当目标增益足够大时, 对极小的信号将会得到更大的放大,使得对端听到被放大的底噪。为了让小信号放大倍数得到控制的同时语音信号得到应有的放大倍数,可以减小 AGC 的目标增益,同时对信号进行线性放大(ALC)。

感觉网上资料不多,没有很多会提到音频中的 alc 算法,有一些多媒体处理平台会带,个人理解就是一个调整整体信号增益的算法,比如统一放大多少倍这种。
3.2 效果展示
这里有一个 alc 算法使用前后的效果图:
| 原始信号 | ![]() |
| 使用 alc 后 | ![]() |
4.1 简介
在语音通信中, 麦克风不可避免的会采集到环境底噪,底噪经过增益放大后,使对端听到夹杂着噪声的语音,影响着通话质量。为了提升通话语音质量,对麦克风信号的降噪环节必不可少。 降噪模块在整个音频算法中的位置如图 :

4.2 效果展示
可以降低环境中的平稳噪声(空调、风扇等),但降噪效果远不如陈列降噪算法,并且对语音损伤更大。ANC 效果如下:
| 原始信号 | ![]() |
| 使用 ANC 后 | ![]() |
噪声与语音信号特性不同,实时估计噪声信号,然后利用估计的噪声信号去降低原始数据中的噪声。可能存在的问题:
不能彻底区分语音和噪声,会对语音产生一定的损伤
非平稳噪声无法处理(键盘声、走路声)
降噪能力相对较弱
5. 啸叫抑制 HS
5.1 简介
当一个人在演讲或演唱时,他们的声音会被话筒捕捉,随后通过扩音系统在音箱中放大并播放出来。这个过程会形成一个循环:音箱中放大的声音再次被同一话筒拾取,然后再次通过扩音系统放大,接着再次被拾取。这个声音信号的连续循环和放大过程,我们称之为“回授”,也就是声反馈现象。如果这个循环的增益足够大,就会导致声音信号的不断增强,最终产生尖锐的啸叫声,即我们通常所说的啸叫,啸叫抑制也叫声反馈抑制。

对于啸叫的音频,音色会比较尖锐。如果从频谱上看,则可看到少数频点的能量相较于整个频带尤其突出,且多数分布在中高频。这些能量较大的频点就是啸叫频点,需要对这些频点进行抑制。
5.2 效果展示
HS 效果如下:
| 原始信号 | ![]() |
| 使用 HS 后 | ![]() |
参考资料:
音频处理——常用音频算法名词简称解释(AEC、AGC、NS、HPF、BSS、BF、DOA、DER)-CSDN 博客
主动噪声控制 (Active Noise Control, ANC)理论及 Matlab 代码实现 - 凌逆战 - 博客园










