speex-DSP|speex-DSP 源码分析AEC篇

1. 陷波器去直流

【speex-DSP|speex-DSP 源码分析AEC篇】? speex采用数字陷波器去直流。数字陷波器去直流的基本原理就是在单位圆频率为0(即x轴正半轴与单位圆交点)的地方放置一个零点,并在接近零点的单位圆内放置一对共轭极点,这样即实现了去除直流分量的滤波作用;
? 公式如下所示:
speex-DSP|speex-DSP 源码分析AEC篇
文章图片
陷波器系统函数
? 极零图如下所示:
speex-DSP|speex-DSP 源码分析AEC篇
文章图片
极零图
speex所用的系统函数为: speex-DSP|speex-DSP 源码分析AEC篇
文章图片
image.png
源码如下
static inline void filter_dc_notch16(const spx_int16_t *in, spx_word16_t radius, spx_word16_t *out, int len, spx_mem_t *mem, int stride) { int i; spx_word16_t den2; #ifdef FIXED_POINT den2 = MULT16_16_Q15(radius,radius) + MULT16_16_Q15(QCONST16(.7,15),MULT16_16_Q15(32767-radius,32767-radius)); #else den2 = radius*radius + .7*(1-radius)*(1-radius); #endif /*printf ("%d %d %d %d %d %d\n", num[0], num[1], num[2], den[0], den[1], den[2]); */ for (i=0; i

    推荐阅读