音频3A——初步了解音频3A

文章目录


前言

在日常的音视频通话过程中,说话的双端往往会面对比较复杂的场景,比如:环境存在较大的噪声,扬声器需要开启外放导致麦克风重新采集到,麦克风固定而人物需要走来走去等等的场景。

而为了面对这些复杂的场景,音频通话不得不引入算法对于声音进行预处理,再进行发送给远端。而3A是对于音视预处理的三种算法的统称。这三种算法分别是:

  • AEC(Acoustic Echo Cancellation):声学回声消除
  • AGC (Automatic Gain Control):自动增益控制

以及硬件3A和软件3A中不同的降噪技术:

  • ANS (Automatic Noise Suppression) : 自动噪声抑制(软件噪声抑制算法)
  • ANR(Active Noise Reduction):主动噪声消除(硬件噪声抑制算法)

本篇文章中,会对3A的应用场景、基本原理、一些开源的3A库、以及引入3A会带来哪些问题做详细的介绍


|版本声明:山河君,未经博主允许,禁止转载

一、3A使用的场景和原理

1.AEC

  • 解决问题:消除回声,尤其是在通话或会议过程中,扬声器声音被麦克风拾取,导致反复回传形成回声。
  • 应用场景:视频会议、电话会议、语音助手等涉及麦克风和扬声器同时使用的场景。
  • 工作原理:AEC 技术通过比较输入音频信号和输出信号,识别并减弱回声部分,确保只有原始的语音信号被传输。

2.AGC

  • 解决问题:自动调节音量,使得音频信号的强度保持在一个稳定的范围内,防止声音过大或过小。
  • 应用场景:语音通信、录音、音频采集系统中,用于在距离、音量差异较大的情况下确保音量一致性。
  • 工作原理:AGC 监测输入信号的电平,当声音过弱时自动提高增益,过强时降低增益,从而保证输出信号的音量在适当范围内。

3.ANS/ANR

ANS和ANR虽然目的都是为了降低音频通话过程中产生的噪声,但是两者在使用时机和原理上,存在很大的区别,具体

  • 解决问题:抑制背景噪声,如风声、键盘声、交通噪声等,以提高语音的清晰度和质量。
  • 应用场景:语音通信、会议、录音、语音识别等场景,特别是在嘈杂环境中进行的音频处理。
  • 工作原理:ANS 技术通过分析音频信号中的噪声成分并将其过滤,保留清晰的语音部分,从而提高音质。而ANR是通过使用麦克风捕捉环境噪声,并产生与噪声相位相反的声音信号来进行噪声抵消。

4.硬件3A和软件3A的区别

1)层级不同

  • 硬件3A是通过专用的音频处理芯片或设备在硬件层面实现的音频增强功能,如自动增益控制、回声消除和噪声抑制。
  • 软件3A通过音频处理算法和数字信号处理(DSP)在软件层面实现,包括在移动设备或电脑上运行的音频增强功能。

2)处理顺序不同

  • 硬件3A处理顺序:AEC->ANR->AGC
  • 软件3A处理顺序:AEC->AGC->ANS

产生不同的原因:

硬件3A往往需要处理实时性高的任务,因此ANR被提前应用,因为硬件可以更高效地处理环境噪声,减少低频噪声干扰,再进行增益控制。

而软件3A通常以灵活性为目标,处理复杂的噪声场景,因此优先进行增益控制,然后再通过算法进行噪声抑制,以确保语音信号在处理前后的一致性。

3)优缺点

硬件3A 软件3A
延迟 低延迟: 由于硬件直接处理信号,通常具有较低的延迟 由于音频信号需要经过处理器的计算,可能会带来一定的延迟
成本 开发和制造专用硬件需要较高的成本,且设备升级或维修困难 依赖现有的处理器和硬件,不需要额外的音频处理芯片,从而降低了成本
性能 专用硬件可以更有效地处理音频信号,节省系统的CPU和电源资源,特别在移动设备或嵌入式系统中表现更好 软件处理音频通常需要占用设备的CPU和内存资源,可能影响其他应用的运行
扩展性 硬件方案较为固定,不容易根据不同场景需求进行调整或升级 软件可以通过更新或升级实现新功能,而无需更换硬件设备
维护 硬件处理通常是固定的,保证了一定的一致性和稳定性 软件算法可以根据不同的需求进行调整和优化

5.处理过程

这里以硬件3A举例

整体3A工作流程如下:

  1. 近端麦克风采集到Noise, Speaker和人声
  2. AEC通过AF(滤波器)模拟回声通道,再通过NLP进行非线性回声消除
  3. 通过ANR进行噪声抑制
  4. 通过AGC进行音量增益
  5. 通过EQ和CNG增加语音舒适度(非必须)再发送到远端

二、3A带来的问题

既然3A能够带来那么多的好处,为什么使用场景上通常只是在音频通话中使用呢? 例如演唱会、音乐会等等不使用呢?并且在实际场景中,还要根据环境不同进行调节参数呢?

下面来看一看3A引入的一些问题:

  1. AEC(声学回声消除)相关问题:
  • 误消除问题:在回声和语音信号难以区分时,AEC可能误将真实语音当作回声进行消除,导致语音部分被削弱或失真。
  • 延迟引发的失效:AEC依赖于精确的时间同步,如果延迟过大,回声消除器可能无法及时捕捉并处理回声,导致回声仍然存在。
  • 双讲问题:当两个人同时说话时,AEC 可能无法准确处理双向回声,从而导致语音不清晰或部分对话丢失。
  1. AGC(自动增益控制)相关问题:
  • 过度增益调整:AGC可能会导致音量波动过大,特别是在安静的环境下,它会试图放大背景噪声,导致不必要的噪声变得明显。
  • 语音动态损失:在音乐或情感丰富的对话中,AGC可能削减声音的动态范围,使得声音显得过于平淡,失去了原有的情感表现。
  • 慢速反应:AGC可能会对快速变化的音量反应不及时,导致声音过大会有突然的削弱,或者在突然安静后有一段时间声音仍然较高。
  1. ANS(自动噪声抑制)相关问题:
  • 语音质量下降:ANS在过度抑制背景噪声时,可能会削减语音的自然部分,导致语音失真或听起来不自然、机械化。
  • 残留噪声或伪影:在抑制噪声时,ANS有时会留下残余噪声或产生伪影音效(如"嗡嗡"声),特别是在环境噪声复杂或变动较大的情况下。
  • 适应性不足:对于突发性或非持续性的噪声,ANS可能不够灵敏,导致这些噪声在处理时被漏过或抑制效果较差。
  1. 综合问题:
  • 处理延迟:音频3A技术的处理通常需要一些计算时间,特别是对于实时通话应用,这些延迟可能会影响自然的对话流畅性,导致讲话者之间出现不自然的停顿。
  • 复杂环境表现不足:在非常复杂的音频环境下(例如同时存在回声、噪声和音量差异),音频3A系统可能无法同时应对所有问题,导致回声未完全消除、噪声仍然存在或音量波动不稳定。
  • 算法适应问题:音频3A技术往往需要根据不同的环境和设备进行优化。如果没有正确调校,音频质量反而可能受到负面影响,尤其在不同设备(如不同品牌麦克风、扬声器)或不同声学环境中,可能会表现不一致。

三、开源3A算法

下面介绍一些常用的3A开源算法库

介绍 功能 优点 缺点 git地址
webrtc 最为广泛使用的实时音频处理库之一 AEC、AGC、ANS 、VAD(语音检测技术) 功能丰富(不仅仅是3A)、跨平台、社区活跃、低延迟场景 使用复杂度高、性能高、调节困难 webrtc地址
SpeexDSP 轻量级的开源音频处理库,适合低功耗或嵌入式设备 AEC、AGC、ANS 轻量级、易于集成、低功耗和低延迟 功能不如 WebRTC 丰富、更新较少、高噪音环境表现一般 SpeexDsp地址
PulseAudio AEC Module Linux 上常用的音频管理系统,它的模块中集成了回声消除功能,可以结合 WebRTC AEC 模块 AEC(基于 WebRTC) 无缝集成到桌面和应用程序中、基于 WebRTC、易用性 局限于 Linux 平台、使用体验有时受限于 PulseAudio 的整体设置、仅提供回声消除功能 PulseAudio 地址
RNNoise 基于深度学习的噪声抑制库,通过机器学习模型有效减少环境噪音 ANS(基于神经网络) 在复杂的噪声环境中效果非常好,特别适合高噪声背景下的语音通信,高效且低延迟,可以根据不同场景进行模型的训练和微调 只支持噪声抑制,训练模型难度,平台支持有限 RNNoise地址

总结

  • WebRTC Audio Processing:功能全面,适合复杂的实时音频通信应用,但复杂且资源占用较大。
  • SpeexDSP:轻量、简单,适合嵌入式和低功耗设备,但功能较为基础。
  • PulseAudio AEC:适合 Linux 桌面应用,集成简单,但功能相对较少。
  • RNNoise:神经网络噪声抑制效果好,适合高噪声环境,但需要与其他库结合使用。

总结

本篇文章是先对音频3A的概念和一些常用的开源算法的介绍,后面博主会结合实际一一对3A中的算法进行介绍,实际上个人也是从事音视频开发工作后才慢慢了解到这些知识,为了梳理和避免遗忘才坚持在写博客,如果有些不足的地方还希望读者能够指点出来。

如果对您有所帮助,请帮忙点个赞吧!

相关推荐
简鹿办公7 小时前
如何提取某站 MV 视频中的音乐为 MP3 音频
音视频·简鹿视频格式转换器·视频提取mp3音频
yufengxinpian7 小时前
集成了高性能ARM Cortex-M0+处理器的一款SimpleLink 2.4 GHz无线模块-RF-BM-2340B1
单片机·嵌入式硬件·音视频·智能硬件
runing_an_min9 小时前
ffmpeg视频滤镜:替换部分帧-freezeframes
ffmpeg·音视频·freezeframes
runing_an_min11 小时前
ffmpeg视频滤镜:提取缩略图-framestep
ffmpeg·音视频·framestep
小曲曲11 小时前
接口上传视频和oss直传视频到阿里云组件
javascript·阿里云·音视频
安静读书14 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
佑华硬盘拷贝机14 小时前
音频档案批量拷贝:专业SD拷贝机解决方案
音视频
EasyNVR14 小时前
NVR管理平台EasyNVR多个NVR同时管理:全方位安防监控视频融合云平台方案
安全·音视频·监控·视频监控
xcLeigh21 小时前
HTML5超酷响应式视频背景动画特效(六种风格,附源码)
前端·音视频·html5
韩曙亮1 天前
【FFmpeg】FFmpeg 内存结构 ③ ( AVPacket 函数简介 | av_packet_ref 函数 | av_packet_clone 函数 )
ffmpeg·音视频·avpacket·av_packet_clone·av_packet_ref·ffmpeg内存结构