Webrtc AGC 算法原理介绍(六)
来源:互联网 发布:男生发型设计软件 编辑:程序博客网 时间:2024/05/21 15:00
Webrtc AGC 算法原理介绍(六)
零、前言
本系列介绍Webrtc的agc算法。webrtc的agc算法对各种情况作了较为详尽的考虑,而且使用了的定点数的方法来实现,因此内容比较多。尽量在这几篇文章中描述清楚。
一、WebRtcAgc_ProcessDigital
ProcessDigital是AGC的核心函数,无论什么模式都要调用到。现在来解释一下。
该函数8khz的时候处理80个点的数据,16k处理160个点的数据,32k处理低频160个点的数据。每个处理都是10ms。
1、首先计算了近端信号的VAD参数。并且当远端信号超过10帧(100ms)后,使用远端的VAD参数修正近端VAD,具体方法是:
2、接着使用似然比
如果是adaptive(无论,Analog或者Digital)中,对声音小的情况,对decay修正。这个参数在计算慢包络的时候使用。??
3、计算每1ms的最大能量作为包络env。
4、通过快、慢包络和增益表计算出增益数组gain
这个部分,首先计算了快慢包络。
然后,两个包络的最大值作为
最后,使用LOG2的分段线性函数把cur_level转换成gain。LOG2的整数部分是cur_level前面0的个数,如果0越少,说明数值越大,最多是31个0,最少1个0(有符号数)。小数部分用线性差值的方法,找到gain[zeros],gain[zeros-1]中间的量。
5、计算门限gate
gate意味着衰减原来的增益。gate的计算可以看成两部分,第一部分是基于快慢包络计算出的似然比,相当于快包络与慢包络能量的倍数。第二部分是近端信号的短时方差。表达式如下:
先看第一部分,这里说
第二部分是定值减去vadNearend.stdShortTerm。无疑,语音出现可能性越大,vadNearend.stdShortTerm越大,第二部分越小,gain越小。
计算完gain后,使用上次计算值对它平滑处理。
平滑后,把门限转换成gain_adj。
gain_adj的值在0, 0.304之间,因此上公式中的
当gate最小的时候为0(语音),gain_adj取到最大,此时不使用gainTable[0]的值作为参考;
当gate最大的时候为2500(噪声),gain_adj取到最小,此时g[k+1]要取到相对于gainTable[0]的值的70%;
当gate处于最大最小值之间,g[k+1]在gainTable[0]和g[k+1]确定的这条直线上移动。
接着再根据信号的大小对gain做一些限制,保证信号不要发生剪切。
6、使用gain
这部分比较简单,对每一块使用不同的gain,其中每个点的gain都在两个gain[k]和gain[k+1]中差值获得。
最后对处理后的信号进行幅度限制。
- Webrtc AGC 算法原理介绍(六)
- Webrtc AGC 算法原理介绍(一)
- Webrtc AGC 算法原理介绍(二)
- Webrtc AGC 算法原理介绍(三)
- Webrtc AGC 算法原理介绍(四)
- #Webrtc AGC 算法原理介绍(五)
- webrtc(一) agc
- webrtc agc
- WebRTC之AGC自动增益控制
- 单独编译和使用webrtc音频增益模块(AGC)
- Android 单独抽取 WebRtc-AGC(音频增益) 模块
- WebRTC GCC算法介绍
- WebRTC GCC算法介绍
- 自动增益(AGC)算法小结
- AGC算法分析
- 自适应增益AGC算法
- Webrtc 回声消除 三(NS、VAD、AEC、AGC设备端终结篇)
- (AGC)C
- NSLog,LLDB, Breakpoint,EXC_BAD_ACCESS,Address Sanitizer ,iOS开发之Xcode常用调试技巧总结
- IOS响应式编程框架ReactiveCocoa(RAC)使用示例
- Hive配置文件中配置项的含义详解(收藏版)
- java 后台框架 支持APP接口调用 APP后台 手机后台框架java springmvc mybaits mysql oracle html5 后台框架
- Linux安装谷歌拼音输入法
- Webrtc AGC 算法原理介绍(六)
- Android 代码混淆,Android proguard 使用说明
- java反射机制
- 远程登陆最小化或关闭 模拟键盘操作失效
- Conversion between float and hexadecimal in VBA use.
- 蓝桥-图1-深度优先搜索初识
- A记录和CNAME记录的区别
- Syntax error, insert "]" to complete MemberExpression XXX.js
- oracle分区表