webrtc 源码阅读——audioprocessing

本文介绍了WebRTC的audioprocessing模块,包括AudioFrame、回声消除、回声抑制、增益控制、高通滤波器、噪声抑制和语音检测等功能。APM分为近端和远端流,处理流程详尽,适用于不同场景,但低耦合可能导致复杂信号处理效果不佳。
摘要由CSDN通过智能技术生成

webrtc 作为一个流媒体的框架,包含音频、视频、p2p传输一整套流媒体核心技术。最近利用业余时间学习它的音频模块,webrtc支持音频的麦克风采集、编码、RTP打包发送。同时加入了AGC(自动增益)、NS(降噪)、AEC(回声消抑)、VAD(静音检测)等一系列算法。这些算法主要在采集过后,编码之前进行处理,代码集中在audioprocessing module,简称APM。下面是audioprocessing.h文件的内容:

class AudioFrame;

template<typename T>
class Beamformer;

class StreamConfig;
class ProcessingConfig;

class EchoCancellation;
class EchoControlMobile;
class GainControl;
class HighPassFilter;
class LevelEstimator;
class NoiseSuppression;
class VoiceDetection;

AudioFrame:主要记录了通道基本信息,数据,VAD标志时间戳,采样频率,信道数等。

EchoCancellation:回声消除模块(AEC),在使用外置扬声器的时候应该使用,有些使用耳麦通讯的情况也会存在回声(因为麦克风与扬声器有空间或者电的弱耦合),如果影响了通话也应该开启。

EchoControlMobile:回声抑制模块(AES),这个模块和回声消除模块功能相似,但是实现方法不一样。该模块使用定电话实现,运算量也远远小于回声消除模块。非常适合移动平台使用。但是对语音损伤大。

GainControl:增益控制模块(AGC),这个模块使用了语音的特征对系统硬件音量和输出的信号大小进行调节。硬件上可以控制输入音量。软件上只能调节原来信号的幅度,如果对原来就已经破音的信号,或者本来输入就比较小的信号就无能为力了。

HighPassFilter:高通滤波器,抑制不需要的低频信号。内部是使用定化的IIR实现的。可以根据需要修改参数选择相应的截止频率。对于某些有工频干扰的设备需要使用高通滤波器。

LevelEstimator:估计信号的能量值。

NoiseSuppression:噪声抑制模块(NS/SE)&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值