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

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

3天内不再提示

如何开始将代码移植到 AudioDE

电子设计 来源: ARM 作者: ARM 2021-06-18 16:46 次阅读

音频数据引擎 (AudioDE) 是一种功耗极低、可合成的数据引擎内核,可对其进行编程以支持跨所有终端设备目标的各种音频和语音编解码器。AudioDE 在其数据路径中有许多功能单元,可以有效地执行音频算法。这些特定于音频的资源、通用资源和总线基础设施的组合提供了一个数据引擎,能够针对各种算法,同时在音频处理方面特别高效。

回声消除就是一种这样的算法,它可以在 AudioDE 上实现,以利用 AudioDE 的音频处理架构的固有优势。在无线耳机、免提车载套件或移动语音终端等通信设备中,声学回声消除是必要的。

通过描述自适应回声消除算法在 AudioDE 上的实现,本应用笔记提供了 AudioDE 代码开发流程的“入门”示例以及一些重要的系统注意事项。

回声消除

回声是由远端扬声器和麦克风之间存在反馈路径引起的(图 1)。如果没有声学回声消除,对着麦克风说话的人会在说话几毫秒后听到他/她的声音回声。由于反馈路径随时间变化,因此需要一种自适应滤波方法来估计回声,然后可以从传入的语音信号中减去回声。

pYYBAGDMXSWAWHCyAACJ7PNmBZI374.png

可以在多个位置设置反馈路径。在免提车载电话系统中,从远处扬声器发出的声音可以从挡风玻璃、侧窗和车顶等坚硬表面反射回来。在无线耳机中,可以通过将麦克风和听筒固定在一起的硬质材料来设置反馈路径。在每个应用中,反馈路径的特​​性是不同的。反馈路径的一个重要特性是引入了多少延迟——大于 16ms 的延迟使得扬声器可以检测到回声;延迟越大,回声越明显。回声的尾部长度代表所有回声路径引入的最大延迟长度,它决定了自适应滤波器(时域处理)的抽头大小,以实现有效的回声消除。在汽车环境中,例如,典型的尾部长度为 32 毫秒。对于以 8 kHz 采样的语音,自适应滤波器的抽头大小将为 256 (8000 x 0.032)。

今天的数字通信系统对回声消除提出了额外的挑战,因为语音编码方案会在回声路径中引入 100 毫秒量级的额外延迟。270ms 的尾部长度是这种回声路径的典型数字,它需要一个抽头大小为 2048 的自适应滤波器!由于无线终端的价格压力,一些回声消除负担会输出到手机之外。

更复杂的频域处理允许更有效地抑制大抽头尺寸的回声。它还具有允许更好地抑制非线性系统(模拟组件)产生的噪声的优点。但是对于本应用笔记示例,我们将坚持使用时域处理,并说明如何在 AudioDE 上实现最小均方 (LMS) 自适应滤波器以消除回声。

pYYBAGDMXTGAOZ5cAAChkjSPra0477.png

编辑:hfy

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

    关注

    15

    文章

    616

    浏览量

    54604
  • 音频处理器
    +关注

    关注

    2

    文章

    102

    浏览量

    33051
  • 数字通信
    +关注

    关注

    1

    文章

    139

    浏览量

    22426
收藏 人收藏

    评论

    相关推荐

    如何代码从一个DSIC33移植一个DSPIC33

    大家好!我把一些代码从一个DSIC33 F移植一个DSPIC33,我从一个微芯片项目开始三相功率表。我在微芯片上的代码最初是用2006的C
    发表于 05-11 15:19

    ucosii移植STM32F103C8T6程序开始调度时就卡死

    ucosii在STM32rbt6上可以正常地运行,工作需要,我ucosii移植STM32F103C8T6,更换了一下启动代码,结果程序 开始
    发表于 08-23 07:23

    ucosii移植stm32F107的学习笔记

    今天开始写ucosii学习笔记,希望能坚持下去,能够ucosii移植stm32F107。大家一起努力吧。
    发表于 08-23 08:40

    如何现有代码一点点移植HC32F460上呢

    如何现有代码一点点移植HC32F460上呢?其移植过程是怎样的?
    发表于 11-25 06:27

    怎样STM32F103的代码全部移植STM32F042上呢

    STM32F042是什么?怎样STM32F103的代码全部移植STM32F042上呢?有哪些注意点呢?
    发表于 12-14 07:07

    python3移植嵌入式中

    使用python3,经过一段时间的使用后发现python3这种语言使用起来确实是比之前使用的C语言方便多了,由于本人使用嵌入式linux较多,因此本人python3移植嵌入式中,网络上很多
    发表于 12-22 07:33

    如何SPIFFS代码移植LittleFS?

    有没有人有关于 SPIFFS 代码移植 LittleFS 的过程的任何提示或教程链接? 我做了基准测试,很高兴看到我的代码如何在新文件系
    发表于 05-16 07:15

    复杂代码移植新平台上的方法

    PC上的3D游戏。本文阐述如何一个开源PC游戏的代码移植一款有适当源文件结构的微控制器上。 在上世纪90年代,游戏
    发表于 12-04 05:11 3055次阅读
    <b class='flag-5'>将</b>复杂<b class='flag-5'>代码</b><b class='flag-5'>移植</b><b class='flag-5'>到</b>新平台上的方法

    EE-241:SHARC®DSPTigerSHARC®处理器代码移植指南

    EE-241:SHARC®DSPTigerSHARC®处理器代码移植指南
    发表于 04-13 17:54 5次下载
    EE-241:SHARC®DSP<b class='flag-5'>到</b>TigerSHARC®处理器<b class='flag-5'>代码</b><b class='flag-5'>移植</b>指南

    EE-241 SHARC®DSPTigerSHARC®处理器代码移植指南

    EE-241 SHARC®DSPTigerSHARC®处理器代码移植指南
    发表于 06-18 10:16 9次下载
    EE-241 SHARC®DSP<b class='flag-5'>到</b>TigerSHARC®处理器<b class='flag-5'>代码</b><b class='flag-5'>移植</b>指南

    UCOSii 移植代码工程

    UCOSii 移植代码工程
    发表于 11-25 18:07 4次下载

    在STM32上移植的mx wifi源代码

    在STM32上移植的mx_wifi源代码,可方便移植其他的STM32单片机上。
    发表于 09-26 16:35 2次下载

    qt虚拟键盘源代码移植工程中

    qt虚拟键盘源代码,可移植工程中
    发表于 09-27 11:51 4次下载

    将使用代码生成器生成的项目移植与智能配置器一起使用的项目

    将使用代码生成器生成的项目移植与智能配置器一起使用的项目
    发表于 01-11 19:00 0次下载
    将使用<b class='flag-5'>代码</b>生成器生成的项目<b class='flag-5'>移植</b><b class='flag-5'>到</b>与智能配置器一起使用的项目

    将使用代码生成器生成的项目移植与智能配置器一起使用的项目

    将使用代码生成器生成的项目移植与智能配置器一起使用的项目
    发表于 06-30 20:54 0次下载
    将使用<b class='flag-5'>代码</b>生成器生成的项目<b class='flag-5'>移植</b><b class='flag-5'>到</b>与智能配置器一起使用的项目