一个回声消除系统,以下几个模块通常比较重要:
1.时延估计(Time Delay Estimation, TDE) 模块
2.回声消除(Linear Acoustic Echo Cancellation, AEC) 模块
3.双讲检测(Double-Talk Detect, DTD) 模块
其原理框图如图所示。
其中最为复杂的为回音消除中双讲算法的处理,就是我们常说的DTD,本文重点讲下这个问题,如果没有好的处理算法,即使做回音消除后可能适得其反,导致音频质量效果受损,webrtc代码中对这部分的算法处理也不好,下面我简单描述下双讲这个问题:
什么是双讲,指的是在实时语音通话过程中,主叫端跟被叫端同时说明的情况,通常理解这种情况下是没有什么通话必要的,因为AB端同时讲话,其实也是听不清具体说话内容的,一般就会有一端先主动停下,然后在继续说,但是在这种情况下,对回音消除算法会有一定的影响。
所以、首先先要确定双讲的状态,既双讲检测,先要判断出来当前通话状态是否在进行双方同时讲话,检测出来后,在通过双讲算法进行处理音频,以下是我在webrtc回音消除算法中做的DTD双讲算法的优化,大家可以看下效果,基本可以解决这个回声消除的问题,使回声消除算法更完善了。
项目地址:https://download.csdn.net/download/unique_no1/83074190
里面包含测试程序和可执行文件,windows平台和linux平台的我都已经编译好了,大家可以测试看下效果,接口调用也比较简单,如果需要商用的话可以跟我联系,或者有技术问题想要沟通、交流的也非常欢迎。
欢迎技术沟通交流:
微信 & tel:18108010758
--------------------------------------------------------------------------------------------------------------------------