作者:Pavel Han
来源:https://mp.weixin.qq.com/s/ymbWU8AHeulrTPE78v_7Tg
本文对WebRTC中的音频处理模块APM(Audio Module Processing)部分的框架、音频数据处理在其中进行处理的总体工作流程进行了简单的总结。
目前大多数低成本IPC领域的Camera SOC都普遍把Audio Codec内包在芯片内部,这种情况下,对于音频输入输出的支持,就不再需要外接Audio Codec,直接把麦克风接入Camera SOC的MIC接口,或者在Camera SOC的Audio Line Out/HPOUT等接口外接功放来驱动扬声器。
例如君正、爱芯元智、瑞芯微、SigmaStar、联咏等的整个IPC系列都内包了Audio Codec:

以上内包Audio Codec的设计,自然是简化了音频电路的设计,降低了成本,但是这些内包的Audio Codec模块功能往往比较孱弱,基本上只有Audio ADC和Audio DAC的功能,相比于更为专业的外置独立Audio Codec芯片,缺少对于音频采样数据进行数字域处理的各种基本功能。因此部分Camera SOC供应商使用了WebRTC的APM模块在软件上实现了这部分音频数字域的功能,通过对该模块配置参数的调试,可以达到不输于独立audio codec的音频效果。
基于以上逻辑,对于基于这些Camera SOC进行IPC产品开发而言,因为基于WebRTC APM模块的音频处理库由SOC供应商提供和维护,所以产品开发者只需要从WebRTC APM的整体模块框架、运行流程以及重点模块参数的角度,对其中所包含的知识点进行详细学习,以助于对Camera SOC供应商所提供的音频参数文件中的各项参数有更深入的理解,从而有助于在具体产品中通过调试修改这些参数来实现音频效果的调优。如果工作中不需要自行移植和调优WebRTC代码本身的话,没有必要深入到WebRTC APM代码的层面去进行更深入的学习和更细节的跟踪和分析,这才是学以致用的思路。
WebRTC APM模块的总结架构
总得来讲,WebRTC模块中对于Audio数据的处理流程,与其他音视频产品对Audio数据的处理上别无二致,均是在将其送入编码器进行编码之前,主要包含两个阶段:
1. Audio_Capture负责进行音频采集工作,音频采集与各个硬件平台的硬件本身支持的功能和配置相关,因此需要针对不同的平台及其硬件进行适配对接;
2. 音频数据采集后,送入Audio Processing模块进行数字域的处理,这部分相对而言不依赖于硬件,也是WebRTC最有特色的部分。

本文重点总结的就是音频数据采集后在数字域进行处理的Audio Processing Module模块,即WebRTC中的APM模块。
对于WebRTC APM模块而言,从麦克风输入或者从通信远端接收到的音频采样数据在APM各个子模块中的处理流程如下图所示:

如上图所示,在WebRTC APM对于音频的处理流程上,可以把整个处理流程分为音频数据的采集与预处理、高通滤波、回音消除、噪声抑制、自动增益控制、语音活动状态检测VAD、数字语音的其他数字域处理和编码输出等。
后续的笔记中我会详细解释各个模块的总体工作流程,以及各个模块在WebRTC配置文件中的各项配置参数,期望有助于在具体产品中通过调试修改这些参数来实现音频效果的调优。
尝试从底层原理的角度去理解和解释技术问题:音视频/摄像头/智能家居/蓝牙/WiFi/无线通信/AI。
敬请关注微信公众号:Pavel Han。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。