webrtc--AudioProcessing的使用
来源:互联网 发布:手机淘宝网页版网址 编辑:程序博客网 时间:2024/05/16 03:23
.AudioProcessing的实例化和配置:
AudioProcessing* apm = AudioProcessing::Create(0);
apm->level_estimator()->Enable(true);//启用重试次数估计组件
apm->echo_cancellation()->Enable(true);//启用回声消除组件
apm->echo_cancellation()->enable_metrics(true);//
apm->echo_cancellation()->enable_drift_compensation(true);//启用时钟补偿模块(声音捕捉设备的时钟频率和播放设备的时钟频率可能不一样)
apm->gain_control()->Enable(true);//启用增益控制组件,client必须启用哦!
apm->high_pass_filter()->Enable(true);//高通过滤器组件,过滤DC偏移和低频噪音,client必须启用
apm->noise_suppression()->Enable(true);//噪声抑制组件,client必须启用
apm->voice_detection()->Enable(true);//启用语音检测组件,检测是否有说话声
apm->voice_detection()->set_likelihood( VoiceDetection::kModerateLikelihood);//设置语音检测的阀值,阀值越大,语音越不容易被忽略,同样一些噪音可能被当成语音。
apm->Initialize();//保留所有用户设置的情况下重新初始化apm的内部状态,用于开始处理一个新的音频流。第一个流创建之后不一定需要调用此方法。
2.AudioProcessing的工作流程:
AudioProcessing也是事件驱动的,事件分为初始化事件、捕捉音频事件、渲染音频事件。
初始化事件:
apm->set_sample_rate_hz(sample_rate_hz);//设置本地和远程音频流的采样率
apm->echo_cancellation()->set_device_sample_rate_hz();//设置音频设备的采样率,我们假定音频采集和播放设备采用同样的采样率。(drift组件启用时必须调用)
apm->set_num_channels(num_capture_input_channels, num_capture_output_channels);//设置本地和远程音频流的通道数
播放事件:
apm->AnalyzeReverseStream(&far_frame));//分析远端音频流的10ms的frame数据,这些数据为回声抑制提供参考。(启用回声抑制的时候需要调用)
捕捉事件:
apm->gain_control()->set_stream_analog_level(capture_level);
apm->set_stream_delay_ms(delay_ms + extra_delay_ms);//设置本地和远端音频流之间的延迟,单位毫秒。这个延迟是远端音频流和本地音频流之间的时差,计算方法为:
delay = (t_render - t_analyze) + (t_process - t_capture);
其中
t_analyze是远端音频流交给AnalyzeReverseStream()方法的时间;
t_render是与刚才同样的远端音频frame的播放时间;
t_capture是本地音频frame捕捉的时间;
t_process是同样的本地音频frame被交给ProcessStream()方法的时间。
apm->echo_cancellation()->set_stream_drift_samples(drift_samples);//设置音频设备捕捉和播放的采样率的差值。(drift组件启用时必须调用)
int err = apm->ProcessStream(&near_frame);//处理音频流,包括各个环节的处理。(如增益调节、回声消除、噪声抑制、语音检测、高通过率等,没有解码哦!是针对pcm数据做处理的)
capture_level = apm->gain_control()->stream_analog_level();//模拟模式下,必须在ProcessStream之后调用此方法,获取新的音频HAL的推荐模拟值。
stream_has_voice =apm->voice_detection()->stream_has_voice();//检测是否有语音,必须在ProcessStream之后调用此方法
ns_speech_prob = apm->noise_suppression()->speech_probability();//返回内部计算出的当前frame的人声优先概率。
3.AudioProcessing 的释放
AudioProcessing::Destroy(apm);
apm = NULL;
- webrtc--AudioProcessing的使用
- webrtc--AudioProcessing的使用
- webrtc--AudioProcessing的使用
- webrtc--AudioProcessing的使用---APM
- webrtc中AudioProcessing的使用
- webrtc中APM(AudioProcessing module)的使用
- webrtc中APM(AudioProcessing module)的使用
- webrtc中APM(AudioProcessing module)的使用2
- webrtc--AudioProcessing-- 音频降噪的处理过程
- webrtc--AudioProcessing-- 音频降噪的处理过程
- webrtc 源码阅读——audioprocessing
- webrtc中scope_ptr的使用
- webrtc中的sigslot的使用
- webrtc的关键区即锁的使用
- WebRtc研究二(WebRtcDemo的使用)
- webRTC消噪模块使用的窗
- 使用qt编译webrtc遇到的问题。
- webRTC的音频和视频引擎的使用
- LeetCode Maximum Product Subarray
- 正式商业旗舰版Modoer点评系统3.4新增手机WEB端加微信公众平台接口,完整包加商业模块
- 用C设计,用C++编码
- 几种常见接地的你都知道怎么用吗?
- Java基础----泛型
- webrtc--AudioProcessing的使用
- 1010. 一元多项式求导 (25)
- 18周OJ百位数答应了
- 计算1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100的值
- 常见电子元器件检测经验和技巧
- 技术路线的选择重要但不具有决定性
- luci启动详细过程
- peersim中CDSimulator和EDSimulator部分代码案例分析
- 飞速整理:Java基本语法1