1、 上一篇文章已将大概流程图画出来,这一篇文章开始分析预解复用部分,就是算WebRTC核心音频处理算法实现部分。AGC 是自动增益补偿部分(Automatic Gain Control),AGC 可以自动调整麦克风的收音量,使得声音输出保持一定的音量水平,不会因为发声者与麦克风的距离改变时,声音忽大忽小。AEC、AECM是回声消除部分(Acoustic Echo Chancellor) ,AEC可以消除各种延迟的回声。AECM仅仅处理采样频率为8kHz与16kHz 频率的声音。这部分功能在整体流程图的位置是以为红色部分:
现在先注解这部分核心功能。主要接口调用代码位于Audio_process_impl.cc中。在开始注解之前,我们要先了解音频的基础。
音频基础知识
采样率: 音频采样率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。在当今的主流采集卡上,采样频率一般共分为22.05KHz、44.1KHz、48KHz三个等级,22.05KHz只能达到FM广播的声音品质,44.1KHz则是理论上的CD音质界限,48KHz则更加精确一些。
采样通道 :即声音的通道的数目。常见的单声道和立体声(双声道)。
2、杂七杂八的看了两天代码, 看了编解码器在NetEQ 中才会用到,然后确定回头分析开始看ACE部分。
AudioProcessing::Create() //new 各个模块处理的的对象
new EchoCancellationImpl();
new EchoControlMobileImpl();
new GainControlImpl();
new HighPassFilterImpl();
new LevelEstimatorImpl();
new NoiseSuppressionImpl();
new VoiceDetectionImpl();
new GainControlForExperimentalAgc();
EchoCancellationImpl初始化中设置
drift_compensation_enabled_(false) //初始化中不使用时钟速率补偿模块
metrics_enabled_(false), //不计算各种回声指标:包括远端、近段
suppression_level_(kModerateSuppression),//初始化中设置噪声抑制等级kModerateSuppression
stream_drift_samples_(0), //时钟差异采样
was_stream_drift_set_(false),
stream_has_echo_(false), //
delay_logging_enabled_(false), //不使用延迟记录
extended_filter_enabled_(false), //不使用扩展滤波器
delay_agnostic_enabled_(false),
aec3_enabled_(false), //不适用 aec3
render_queue_element_max_size_(0) //播放队列max_size 为 0
StreamConfig(int sample_rate_hz = 0,
size_t num_channels = 0,
bool has_keyboard = false)
: sample_rate_hz_(sample_rate_hz),
num_channels_(num_channels),
has_keyboard_(has_keyboard),
num_frames_(calculate_frames(sample_rate_hz)) {}
初始化的值都是kSampleRate16kHz 16000 ,1,false
近端采样率、远端采样率、近端声道数、远端声道数量的初始值都是1
stream_properties_.reset(
new StreamProperties(sample_rate_hz, num_reverse_channels,
num_output_channels, num_proc_channels));
sample_rate_hz = 16000
num_reverse_channels = 1
num_output_channels = 1
num_proc_channels = 1
根据 num_reverse_channels * num_output_channels 结果大小创建多少个 WebRtcAec 处理器,
通过WebRtcAec_Create(); 创建并且 WebRtcAec_Init ()进行初始化,至此enable完成初始化。
由于有很多入门的朋友需要,故花了点时间将 WebRTC回声消除模块代码分离,
支持windows操作系统, VS 2010 上调试、下载地址