完毕!对自己有点印象。
我们的产品需要回声消除功能,确定了三种可能的技术方案,
1)利用MCU检测audio out和audio in的音频信号,编写算法计算两侧声音信号的强度,根据audio out和audio in的强弱在两个通道之间进行可选的切换,实现半双工通话效果,但现在市场上都是全双工通话效果,半双工会让产品竞争力降低
(2)使用CPU厂商的回声消除算法,实际测试经过各种可调参数的调优以及与厂商多次讨论,回声消除效果不够干净,与预期效果相去甚远。供应商的反馈是改进外壳,使MIC与扬声器尽可能隔离,但由于ID设计、音质和音量要求,没有改变外壳的空间。
(3)从网上下载webrtc、speex等开源回声消除算法,交叉编译后移植到产品中。
4)从专门从事音频算法的公司购买算法,但每个产品都需要额外的成本,这会大大降低产品的竞争力。
权衡利弊后,我决定深入研究使用开源算法的解决方案;
所以,我从github、gitee等网站下载了一系列回声消除代码,都是C语言和matlab语言的。
以八度音阶合成两个声音,以生成包含近端麦克风捕获声音以及远端参考声音的双讲场景的一部分。
然后运行在线下载的用于回声消除的代码,分析输出音频并选择其中最有效的算法。
从结果来看,webrtc音频处理的AEC算法不好,回声消除不干净,双讲场景有明显的吞话现象。 webrtc音频处理的AEC3算法干净,但是对双讲另一端的声音抑制非常大,声音断断续续,不自然;
speex有轻微的回声,最好找一个matlab语言实现的aec算法,回声消除得很干净,双讲只有轻微的吞字现象。
然后,我使用Visual Studio编译调试WebRTC AudioProcessing AEC开源代码,参考Matlab上面的AEC算法修改代码,使用在线调试设置断点、单步运行等分析语句的值逐步变化,最终得到的数据与matlab语言的aec算法的结果完全相同最终得到的数据与matlab的aec算法的结果完全相同;
今天编译到产品中,将MIC和SPEAKER增益调整到合理值,然后实际通话测试回声消除的效果,结果出奇的好。
因此,有希望设计出一款能够达到小目标以上销量的产品。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3