0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

回声消除的基本原理和调试经验

Dbwd_Imgtec 来源:未知 作者:胡薇 2018-05-17 09:09 次阅读

本文讲的回声(Echo)是指语音通信时产生的回声,即打电话时自己讲的话又从对方传回来被自己听到。回声在固话和手机上都有,小时还可以忍受,大时严重影响沟通交流,它是影响语音质量的重要因素之一。可能有的朋友要问了,为什么我打电话时没有听见自己的回声,那是因为市面上的成熟产品回声都被消除掉了。

回声分为线路回声(line echo)和声学回声(acoustic echo),线路回声主要存在于固话中,是由于2-4线转换引入的回声,声学回声是由于空间声学反射产生的回声 。回声消除(Echo canceller, EC)是语音前处理的重要环节,下面主要讲其基本原理和调试中的一些经验。

1、基本原理

1)自适应滤波器和自适应算法

一般滤波器的系数是固定的,而自适应滤波器的系数是变化的,是依据自适应算法来调整滤波器系数的。自适应滤波器的结构采用FIR或IIR均可,由于IIR存在稳定性问题,因此一般采用FIR。

下图是自适应滤波器的一般结构:

上图中,x(k)为输入信号,y(k)为输出信号,d(k)为期望信号,e(k)是d(k)和y(k)的误差信号。自适应滤波器的滤波器系数受误差信号e(k)控制,根据e(k)的值和自适应算法自动调整。

自适应算法一般采用LMS(least mean square,最小均方)算法及其变种(如NLMS算法)。LMS算法是随机梯度算法族中的一员。具体可以看相关的文章。

2)回声消除基本原理。

下图是回声消除基本原理的框图:

处理过程如下:

a) 算近端远端语音数据的energy,确定双方是silent还是talk。

b) 远端输入经过自适应FIR滤波器后就得到了近似于近端输入的数据,并与近端输入相减后得到了误差e。误差e作为自适应LMS算法的输入在需要的时候去更新自适应FIR滤波器的系数给后面远端数据处理用。在需要的时候是指远端talk近端silent的情况,其他情况(比如double silent / double talk)下不需要更新FIR滤波器的系数。

c) 误差e同时也会经过NLP(非线性处理)后产生舒适噪声送给对方。

2、调试

EC相对较难,要做的很好很不容易。在webRTC开源前主要是大公司和专业的算法公司有好的实现方案,一般公司要想产品里有EC就去买算法库。webRTC开源后一些核心的算法(包括AEC/ANS/AGC等)也随之开源,这样众公司开始用webRTC里的算法,尤其是互联网公司,AEC等算法基本都是用的webRTC的。

本人有两次EC的调试经历。第一次是在芯片公司,做语音解决方案。从公司的算法部门拿来了回声消除实现,把它用到解决方案中。另一次是在移动互联网公司,做实时语音通信类APP,要把webRTC的AEC用到APP中。第一次花的时间较多,要学习原理,看算法代码,做应用程序验证算法并且要修改系数,在产品上调试等。第二次有了第一次的基础再加上webRTC封装的较好从而花的时间较短。个人觉得对EC零基础但已有EC算法代码的基础上去调试主要有如下几步:

1)学习回声消除的基本原理,涉及信号处理知识(从固定系数滤波器到系数自适应滤波器)和高等数学知识(梯度)等。因为不是做算法,掌握基本的就可以了。如果基础扎实,当然搞得越明白越好了。

2)看算法代码。如果有实现的设计文档那是最好了,好多算法实现有技巧,有设计文档的话能更好的帮助理解代码。没有只能硬着头皮啃了。刚开始可能有些看不懂,多看几遍,也许每一次都会多懂一些。

3)做个应用程序验证算法。这个应用程序输入是近端和远端的PCM文件,把EC的输出写进一个PCM文件里,看处理效果如何。这里面也可以分几小步:

a) 设latency为零,近端和远端的PCM文件相同,理论上输出是全零数据。如果是这样,恭喜你选择的算法有一个好的base。如果不是那就需要去调算法里的一些系数了,这也许要调好多次,最终调试结果要是算法输出基本听不见回声。

b) 设一定的latency,近端的PCM和远端的数据一样,但是近端的PCM数据相对远端的有一定的delay,这个值跟设定的latency值是一样的,这时理论上输出还是全零数据。

c) 获取实际产品上的近端和远端PCM数据,可以近似得到近端和远端的latency。把这几个作为输入,看算法输出,也要基本听不见回声。这步调好后算法基本上就可以用了。

4)在具体硬件平台上去调。每个硬件平台上的latency都是不一样的。在芯片公司时有demo板,每个客户也有他们的电路板,硬件平台相对不多一个个获取近远端PCM数据调好latency就可以了。在移动互联网公司做APP时,手机类型众多,用上面方法太累,于是在UI上做了一个滑动条去配置latency,让测试人员去测试找到一个相对较好的latency,然后放在配置文件里保存下来,以后这款手机就用这个latency值了。

经过上面几步后在真正产品上的EC调试就算结束了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 自适应滤波器

    关注

    3

    文章

    12

    浏览量

    10882
  • 回声消除
    +关注

    关注

    1

    文章

    10

    浏览量

    8472

原文标题:音频处理之回声消除及调试经验

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于FPGA的多路回声消除算法的实现

    基于FPGA的多路回声消除算法的实现中文期刊文章作  者:尹邦政 朱静 毛茅作者机构:[1]广州广哈通信股份有限公司,广东广州510663;[2]广州大学实验中心,广东广州510006出 版 物
    发表于 05-08 10:23

    串联谐振逆变器的基本原理

    串联谐振通常伴有逆变器。该组合称为串联谐振逆变器。什么是基本原理?让我简要介绍串联谐振逆变器的一些基本原理。]首先给你看一张图片:
    发表于 11-07 10:21

    电机转动的基本原理是什么?

    电机转动的基本原理是什么?电机运动的基本原则有哪些?
    发表于 07-21 07:59

    线性电源的基本原理是什么

    多路线性电源 AC-DC稳压电源 低纹波电源 可调线性电源 原理图PCB目录多路线性电源 AC-DC稳压电源 低纹波电源 可调线性电源 原理图PCB基本原理芯片选型原理图&3D-PCB具体
    发表于 07-30 07:47

    无线充电的基本原理是什么

    一 、无线充电基本原理无线充电的基本原理就是我们平时常用的开关电源原理,区别在于没有磁介质耦合,那么我们需要利用磁共振的方式提高耦合效率,具体方法是在发送端和接收端线圈串并联电容,是发送线圈处理谐振
    发表于 09-15 06:01

    RAID技术的基本原理是什么

    RAID技术的基本原理是什么?RAID技术有哪几个优势?
    发表于 10-14 12:01

    串口通信的基本原理是什么?

    同步通信和异步通信的区别是什么?串口通信的基本原理是什么?
    发表于 12-13 06:46

    ARM JTAG调试基本原理

    JTAG调试原理(推荐):这篇文章主要介绍ARM JTAG调试基本原理。基本的内容包括了TAP (TEST ACCESS PORT) 和BOUNDARY-SCAN ARCHITECTURE的介绍,在此基础上,结合ARM7TDM
    发表于 05-27 10:44 150次下载

    长时延环境中的回声消除器设计

    本文讨论了回声消除器的基本原理以及软件环境中声音信号的时延特性,并提出了一种适用计算机软件实现回声消除器的改进的时延估计算法。实验结果表明该
    发表于 08-28 10:00 26次下载

    如何发现与消除视频会议中的回声

    如何发现与消除视频会议中的回声  回声是电视会议中最常见的声音问题之一。在会议电视系统的调试过程中,回声的发现与
    发表于 02-21 09:53 3207次阅读

    基于CX20707 SPoC在安防楼宇对讲中的回声消除设计

    简要阐述了回声产生的原因及原理和当前主要的回声消除技术,重点介绍了Conexant CX20707 SPoC 回声消除芯片的基本特性,及在模
    发表于 12-26 11:18 205次下载
    基于CX20707 SPoC在安防楼宇对讲中的<b class='flag-5'>回声</b><b class='flag-5'>消除</b>设计

    步进马达基本原理

    步进马达基本原理步进马达基本原理步进马达基本原理
    发表于 11-30 11:55 8次下载

    如何使用dsPIC DSC线路回声消除库的详细中文资料概述

    本章介绍 dsPIC DSC 线路回声消除库。此函数库支持 dsPIC33F 和 dsPIC33E 系列器件,提供消除各种电话和数字网络组件中产生的回声这一功能。您可以利用本用户指南提
    发表于 06-13 13:27 8次下载

    LC823450 回声消除器的性能

    LC823450 回声消除器的性能
    发表于 11-14 21:08 0次下载
    LC823450 <b class='flag-5'>回声</b><b class='flag-5'>消除</b>器的性能

    什么是回声?什么是回声消除?什么是噪音抑制?什么是智能降噪?

    什么是回声?什么是回声消除?什么是噪音抑制?什么是智能降噪? 回声是指声波在环境中反射后到达听者耳朵的现象。在大部分情况下,我们都不会感受到回声
    的头像 发表于 03-14 15:46 1293次阅读