speex-DSP|speex-DSP 源码分析AEC篇
1. 陷波器去直流
【speex-DSP|speex-DSP 源码分析AEC篇】? speex采用数字陷波器去直流。数字陷波器去直流的基本原理就是在单位圆频率为0(即x轴正半轴与单位圆交点)的地方放置一个零点,并在接近零点的单位圆内放置一对共轭极点,这样即实现了去除直流分量的滤波作用;
? 公式如下所示:
文章图片
陷波器系统函数
? 极零图如下所示:
文章图片
极零图
speex所用的系统函数为:
文章图片
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
推荐阅读
- 如何寻找情感问答App的分析切入点
- D13|D13 张贇 Banner分析
- 自媒体形势分析
- 2020-12(完成事项)
- Android事件传递源码分析
- Python数据分析(一)(Matplotlib使用)
- Quartz|Quartz 源码解析(四) —— QuartzScheduler和Listener事件监听
- 泽宇读书会——如何阅读一本书笔记
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)
- [源码解析]|[源码解析] NVIDIA HugeCTR,GPU版本参数服务器---(3)