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

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

3天内不再提示

基于MCF5235开发板的AEC算法的实现与应用研究

电子设计 来源:电子元器件应用 作者:龚乐中;李广军;郭 2021-06-08 16:53 次阅读

作者:龚乐中;李广军;郭志勇

引言

VoIP是在IP网络上实现音视频及传真信号传输的一门全新的集成业务数据网络技术。IP语音传输技术具有节省带宽、话费低,可方便地集成智能型开放体系结构以及多媒体业务等优势。但较之传统电话,其语音质量较差。事实上,影响因特网语音质量的因素是多方面的,关键因素之一是回声的影响。因此,要提高因特网的语音质量,就必须在语音传输过程中进行回声消除。AEC是基于自适应算法并可用于VoIP的声学回声消除技术。而用于AEC算法的实现与研究的硬件平台是以freescale公司的MCF5235为核心的开发板。MCF523x系列MCU是首个以带有增强型乘加运算单元(eMAC)的ColdFire V2内核为核心,该产品同时结合了增强型时序处理单元(eTPU)和10/100以太网多媒体通道控制模块(MAC)的MCU,因而具有强大的数据处理能力和丰富的接口,能够满足VoIP电话终端对数据处理速度以及网络通讯安全的要求。

1 回声消除

1.1 声学回声消除原理

AEC是以扬声器信号与由它产生的多路径回声的相关性为基础建立的远端信号语音模型,利用它可对回声进行估计,并不断地修改滤波器的系数,以使估计值更逼近真实的回声,然后,将回声估计值从话筒的输人信号中减去,从而达到消除回声之目的。

声学回声消除器的结构原理如图1所示。其中y(n)代表远端语音信号,r(n)代表回声,x(n)是已经叠加了回声信号r(n)的近端语音信号。对回声消除器来说,可将远端信号作为一个参考信号,然后由自适应滤波器通过它来产生回声的估计值r′(n),再从近端带有回声的语音信号中减去r′(n),从而估计出近端输出信号μ(n)。在近端未说话时,即当x(n)=0时,μ(n)即为回声的残差信号e(n)。e(n)的计算方程为:

poYBAGC_MKOASBAYAAA2tKXLAFw125.png

e(n)=r(n)-r′(n) (1)

此时,回声的残留信号的理想值应为0。

1.2 自适应FIR滤波器

在声学回声消除器里,横向结构的自适应滤波器可通过参考信号来产生回声的副本,其原理如图2所示。如果这个横向结构的自适应滤波器的转换函数与回声通道的函数模型一致,那么,回声的副本与回声就应该是一致的,这样,通过两者的抵消便可达到消除回声之目的。

pYYBAGC_MJ2AKMRQAAAk7ABCqm4724.png

FIR滤波器的最主要特点是没有反馈回路,这是一种非递归系统,它的冲激响应是一个有限长序列。FIR滤波器的输出计算公式为:

poYBAGC_MECAVp4pAAAJs9kV8dk842.png

自适应FIR滤波器根据上一刻的近端输出信号μ(n)及远端语音信号y(n),并通过自适应算法来估算当前时刻FIR滤波器的系数ak(n+1)。

1.3 LMS算法和NLMS算法

在输入信号和参考信号都是平稳随机信号的情况下,自适应滤波器的均方误差E[e(n)]性能曲面是滤波器加权系数ak的二次函数。其系数修正算法通常采用可使均方误差最小的最优化求解算法。

由于实际的梯度值只能根据观测数据估计,因此LMS算法提出的一个基本思想就是用平方误差E[e2(n)]来代替均方误差E[e(n)]。它是对基本的最速下降算法的改进,其算法迭代公式为:

ak(n+1)=ak(n)+2μe(e)*y(n) (3)

其中y(n)为输入信号,μ为迭代步长常量。

规一化LMS (NLMS)算法可用来在LMS自适应滤波器方程里修正FIR滤波器的系数。NLMS算法与LMS算法几乎是一样的,唯一的不同是NLMS算法中使用可变步长控制因子来代替LMS算法中的常量因子。其目的是加快算法的收敛速度。其算法迭代公式为:

pYYBAGC_ME-AAwWzAAAL4bgx4f0176.png

其中,μ可由试验来确定。但应注意,μ的选取至关重要,为了确保收敛,必须满足0《μ《2。本方案中的自适应算法就是采用NLMS算法。

1.4 语音检测

语音活动检测可用来确定三种语音状态:近端讲话状态、远端讲话状态和双端讲话状态。因为AEC要根据不同的语音活动状态来进行相应的处理。它在检测到近端语音活动状态时,滤波器既不进行滤波,也不进行系数更新;而在检测到双端语音活动状态时,将停止滤波器系数的更新,但要进行滤波。由于在只有远端语音活动的状态下,既要进行滤波,又要进行系数更新。因此,语音活动状态检测的正确与否在很大程度上会影响回声消除的效果。语音活动检测流程如图3所示。

pYYBAGC_MJSAPub1AAA_t9hQlys655.png

双端讲话情况可以通过设计近端话音检测器,并采用Geigel算法来判决。利用该算法计算回声延时大小范围内的瞬时能量比较,具有着良好的性能优势。其Geigel算法描述如下:

poYBAGC_MGSAMBNGAAATH4CbEqM155.png

式中,N是FIR延时级数,之所以将r(i)和最近N个远端输入的最大值进行比较,而不是仅仅和当前远端输入点y(i)进行比较,是因为回声路径延时具有不确定性。

2 实现方案

声学回声消除器AEC主要包括FIR滤波模块、Geigle双端语音判决模块、NLMS系数更新模块、语音状态控制模块四个部分,图4所示是该AEC的简要工作流程。

poYBAGC_MIyAXC9HAACPqbNQqwQ716.png

Freescale公司的硬件开发平台以Coldfire系列MCF5235为核心。该系列MCU支持标准C语言及其专用的汇编语言。因此,在该平台上运行的功能模块需要使用C语言或者专用汇编。AEC的开发及移植过程如图5所示。

设计时。首先应搭建AEC的Matlab模型并对该模型进行仿真验证。然后以已通过验证的模型为标准,搭建可在MCF5235开发板上运行的C语言模型。最后根据需要将运算较为密集的那部分C语言程序转化为Coldfire芯片的专用汇编语言。

3 实验结果及分析

在Matlab环境下对AEC进行测试时,可将需要的三部分语音信号同时输入到回声消除器,然后测试回声消除的相关性能。

本测试所输入的语音信号波形如图6所示。从上到下依次是远端语音信号y(n)、近端语音信号x(n)和回声信号,其中与之和作为近端输入与y(n)一同构成了回声消除器的两个输入信号。将滤波器的阶数设置为512。即采取64 ms延时的回声消除。通过回声消除处理后所得到的残差信号e(n)的波形如图7所示。

pYYBAGC_MH-ADoo6AACPqbNQqwQ935.png

从图6和图7的对比可以发现,当只存在远端信号和回声信号,而近端缄默的情况下,回声消除器能够快速收敛并消除绝大部分回声;而当双端都存在信号时,回声消除器能在消除回声的基础上较好的保持近端语音波形。

将AEC功能模块集成到用MCF5235开发板搭建的VoIP终端上,来建立两个通信终端的语音通信,即可对AEC功能模块进行实时免提通话测试。

4 结束语

本文介绍了声学回声消除的原理、声学回声消除器的设计以及AEC在基于freescale公司MCF5235开发平台的VoIP语音通信终端上的集成方法。该AEC的实现包括语音检测、自适应滤波等语音处理算法。其程序执行的实时性较好。通过Matlab模型的仿真结果和通话主观测试结果证明,用该方案实现的声学回声消除器能够满足网络通信对语音的要求。

责任编辑:gt

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

    关注

    160

    文章

    7729

    浏览量

    177690
  • 开发板
    +关注

    关注

    25

    文章

    4945

    浏览量

    97201
收藏 人收藏

    评论

    相关推荐

    【FireBLE申请】基于FireBLE开发板的蓝牙方面智能家居应用研究实验

    申请理由:看到论坛上有关于FireBLE开发板的试用,正在研究智能家居链接方向的我感觉用这种低压版的蓝牙开发板应该会比较好点,1.FireBLE开发板具有低功耗等诸多优点,希望通过此次
    发表于 07-16 13:06

    【TL6748 DSP申请】基于DSP的目标跟踪算法研究及优化实现

    申请理由:本人为北工大的研究生,专业为DSP与嵌入式系统。熟悉DSP和某些图像算法。现在课题在研究跟踪算法以及优化实现,所以想申请次
    发表于 09-09 16:59

    怎么实现基于MCF52235的RFID通用开发平台设计?

    怎么实现基于MCF52235的RFID通用开发平台设计?
    发表于 05-21 06:28

    基于MCF5213和uC/OS-II的低成本Zigbee无线

    基于MCF5213和uC/OS-II的低成本Zigbee无线、语音、工控应用开发板
    发表于 07-13 21:18 51次下载

    飞思卡尔的MCF52235的开发板原理图

    本内容提供了飞思卡尔的MCF52235的开发板原理图
    发表于 04-11 17:00 355次下载
    飞思卡尔的<b class='flag-5'>MCF</b>52235的<b class='flag-5'>开发板</b>原理图

    冷火MCF52255开发板精华资料

    冷火MCF52255开发板精华资料
    发表于 09-23 14:35 181次下载

    如何使用开发板

    本文涵盖了单片机开发板的各个部分,轻松教会你如何使用单片机开发板
    发表于 11-24 15:59 12次下载

    stm32开发板开发板原理图

    stm32开发板开发板原理图。
    发表于 12-21 15:38 61次下载

    lpc1700开发板_dsp算法

    lpc1700开发板_dsp算法库,有需要的下来看看。
    发表于 01-13 17:02 6次下载

    蚁群算法在文本聚类中的应用研究

    蚁群算法在文本聚类中的应用研究_张海涛
    发表于 01-03 17:41 0次下载

    开发板是什么_开发板有什么用_开发板怎么用(使用步骤教程)

    开发板(demoboard)是用来进行嵌入式系统开发的电路,包括中央处理器、存储器、输入设备、输出设备、数据通路/总线和外部资源接口等一系列硬件组件。开发板一般由嵌入式系统
    发表于 12-09 09:40 11w次阅读

    ALIENTEK开发板的简介

    本文档的与内容详细介绍的是ALIENTEK开发板的简介包括了:战舰STM32开发板平台介绍,Mini STM32开发板平台介绍
    发表于 01-02 08:00 6次下载
    ALIENTEK<b class='flag-5'>开发板</b>的简介

    EVAL-AD5235 EVAL-AD5235评估

    电子发烧友网为你提供ADI(ti)EVAL-AD5235相关产品参数、数据手册,更有EVAL-AD5235的引脚图、接线图、封装手册、中文资料、英文资料,EVAL-AD5235真值表,EVAL-AD
    发表于 07-25 06:00

    基于SS928开发板算法移植分享

    最近在研究在易百纳SS928的开发板上做算法移植,觉得可以向大家分享一下在易百纳SS928开发板上做算法移植的一些方法及心得,希望能对大家后
    的头像 发表于 08-16 09:35 1260次阅读
    基于SS928<b class='flag-5'>开发板</b><b class='flag-5'>算法</b>移植分享

    fpga开发板与linux开发板区别

    (Field-Programmable Gate Array)是一种可编程逻辑器件,它可以通过编程改变硬件逻辑电路的功能和结构。FPGA采用了可编程的门极,可以根据需要重新配置内部电路,从而实现不同的功能和逻辑关系。而Linux开发板则是一种嵌入式计算机平台,其核心是Li
    的头像 发表于 02-01 17:09 2085次阅读