64
© 2011 Microchip Technology Inc. DS70134F_CN dsPIC ® DSC 声学回声消除库 用户指南

dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

© 2011 Microchip Technology Inc. DS70134F_CN

dsPIC® DSC 声学回声消除库

用户指南

Page 2: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

请注意以下有关 Microchip 器件代码保护功能的要点:

• Microchip 的产品均达到 Microchip 数据手册中所述的技术指标。

• Microchip 确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中 安全的产品之一。

• 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的

操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。

• Microchip 愿与那些注重代码完整性的客户合作。

• Microchip 或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。

代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视

为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的

软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。

提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含

的英文部分,因为其中提供了有关 Microchip 产品性能和使用

情况的有用信息。Microchip Technology Inc. 及其分公司和相

关公司、各级主管与员工及事务代理机构对译文中可能存在的任何差错不承担任何责任。建议参考 Microchip Technology Inc. 的英文原版文档。

本出版物中所述的器件应用信息及其他类似内容仅为您提供便

利,它们可能由更新之信息所替代。确保应用符合技术规范,是您自身应负的责任。Microchip 对这些信息不作任何明示或

暗示、书面或口头、法定或其他形式的声明或担保,包括但不

限于针对其使用情况、质量、性能、适销性或特定用途的适用性的声明或担保。 Microchip 对因这些信息及使用这些信息而

引起的后果不承担任何责任。如果将 Microchip 器件用于生命

维持和 / 或生命安全应用,一切风险由买方自负。买方同意在

由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识

产权保护下,不得暗中或以其他方式转让任何许可证。

DS70134F_CN 第 2 页

商标

Microchip 的名称和徽标组合、 Microchip 徽标、 dsPIC、

KEELOQ、 KEELOQ 徽标、 MPLAB、 PIC、 PICmicro、PICSTART、 PIC32 徽标、 rfPIC 和 UNI/O 均为 Microchip Technology Inc. 在美国和其他国家或地区的注册商标。

FilterLab、 Hampshire、 HI-TECH C、 Linear Active Thermistor、MXDEV、MXLAB、SEEVAL 和 The Embedded Control Solutions Company 均为 Microchip Technology Inc.在美国的注册商标。

Analog-for-the-Digital Age、 Application Maestro、 chipKIT、chipKIT 徽标、 CodeGuard、 dsPICDEM、 dsPICDEM.net、dsPICworks、 dsSPEAK、 ECAN、 ECONOMONITOR、

FanSense、 HI-TIDE、 In-Circuit Serial Programming、ICSP、 Mindi、 MiWi、 MPASM、 MPLAB Certified 徽标、

MPLIB、 MPLINK、 mTouch、 Omniscient Code Generation、 PICC、 PICC-18、 PICDEM、 PICDEM.net、PICkit、 PICtail、 REAL ICE、 rfLAB、 Select Mode、 Total Endurance、 TSHARC、 UniWinDriver、 WiperLock 和ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地

区的商标。

SQTP 是 Microchip Technology Inc. 在美国的服务标记。

在此提及的所有其他商标均为各持有公司所有。

© 2011, Microchip Technology Inc. 版权所有。

ISBN:978-1-61341-836-9

© 2011 Microchip Technology Inc.

Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州Gresham 的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和印度的设计中心均通过了 ISO/TS-16949:2009 认证。 Microchip 的PIC® MCU 与 dsPIC® DSC、KEELOQ® 跳码器件、串行 EEPROM、单片机外设、非易失性存储器和模拟产品严格遵守公司的质量体系流程。此外, Microchip 在开发系统的设计和生产方面的质量体系也已通过了ISO 9001:2000 认证。

Page 3: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

®

dsPIC DSC 声学回声消除库用户指南

目录

前言 ................................................................................................................................. 5第 1 章 简介

1.1 声学回声消除概述 ......................................................................................... 131.2 特性 .............................................................................................................. 141.3 主机系统要求 ................................................................................................ 15

第 2 章 安装

2.1 安装步骤 ....................................................................................................... 172.2 AEC 库文件 .................................................................................................. 17

第 3 章 AEC 演示

3.1 dsPIC33F 器件系列的 AEC 演示 .................................................................. 213.2 dsPIC33E 器件系列的 AEC 演示 .................................................................. 27

第 4 章 应用程序编程接口(API)4.1 向应用程序添加 AEC 库 ............................................................................... 314.2 存储模型编译选项 ......................................................................................... 324.3 AEC 算法概述 ............................................................................................... 344.4 函数库的使用 ................................................................................................ 364.5 寄存器的使用 ................................................................................................ 374.6 资源需求 ....................................................................................................... 384.7 AEC 库 API 函数 ........................................................................................... 394.8 应用技巧 ....................................................................................................... 61

索引 ............................................................................................................................... 63全球销售及服务网点 ...................................................................................................... 64

© 2011 Microchip Technology Inc. DS70134F_CN 第 3 页

Page 4: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

注:

DS70134F_CN 第 4 页 © 2011 Microchip Technology Inc.

Page 5: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

®

dsPIC DSC 声学回声消除库用户指南

前言

简介

本章包含在使用 dsPIC® DSC 声学回声消除库前需要了解的一般信息。内容包括:

• 文档编排

• 本指南使用的约定

• 保修登记

• 推荐读物

• Microchip 网站

• 开发系统变更通知客户服务

• 客户支持

• 文档版本历史

文档编排

本文档介绍了如何使用 dsPIC DSC 声学回声消除库。本手册的内容编排如下:

• 第 1 章 简介——介绍 dsPIC DSC 声学回声消除库并简要概述声学回声消除和函数 库特性。还概述了对主机 PC 的要求。

• 第 2 章 安装——提供安装库文件的说明并介绍源文件、包含文件、演示文件和归档 文件的内容。

• 第 3 章 AEC 演示——提供实际应用中声学回声消除的动手实验演示。

• 第 4 章 应用程序编程接口(API)——概述如何通过 API 将 dsPIC DSC 声学回声 消除库中提供的 API 函数包含在应用程序软件中。

客户须知

所有文档均会过时,本文档也不例外。 Microchip 的工具和文档将不断演变以满足客户的需求,因此实际使用中有些对话框和 / 或工具说明可能与本文档所述之内容有所不同。请访问我们的网站(www.microchip.com)获取 新文档。

文档均标记有“DS”编号。该编号出现在每页底部的页码之前。 DS 编号的命名约定为“DSXXXXXA”,其中 “XXXXX”为文档编号,“A”为文档版本。

欲了解开发工具的 新信息,请参见 MPLAB® IDE 在线帮助。从 Help (帮助)菜单中选择 Topics (主题),打开现有在线帮助文件列表。

© 2011 Microchip Technology Inc. DS70134F_CN 第 5 页

Page 6: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

本指南使用的约定

本手册采用以下文档约定:

文档约定

说明 涵义 示例

Arial 字体:

斜体字 参考书目 MPLAB® IDE User's Guide需强调的文字 ……仅有的编译器……

首字母大写 窗口 Output 窗口

对话框 Settings 对话框

菜单选择 选择 Enable Programmer引用 窗口或对话框中的字段名 “Save project before build”带右尖括号且有下划线的斜体文字

菜单路径 File>Save

粗体字 对话框按钮 单击 OK选项卡 单击 Power 选项卡

0xnnnn 十六进制数, n 是其中一位 0xFFFF, 0x007A尖括号 < > 括起的文字 键盘上的按键 按 <Enter>, <F1>Courier New 字体:

常规 Courier New 源代码示例 #define START

文件名 autoexec.bat

文件路径 c:\mcc18\h

关键字 _asm, _endasm, static

命令行选项 -Opa+,-Opa-

二进制位值 0, 1

常量 0xFF, ‘A’‘bnnnn 二进制数, n是其中一位 ‘b00100, ‘b10斜体 Courier New 可变参数 file.o, 其中 file 可以是任

一有效文件名

方括号 [ ] 可选参数 mcc18 [选项] file [选项]

花括号和竖线: { | } 选择互斥参数; “或”选择 errorlevel {0|1}

省略号 ... 代替重复文字 var_name [, var_name...]

表示由用户提供的代码 void main (void){ ...}

DS70134F_CN 第 6 页 © 2011 Microchip Technology Inc.

Page 7: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

前言

保修登记

请填写随附的保修登记卡(Warranty Registration Card)并尽快寄出。寄出保修登记卡 的客户将可收到新产品更新信息。可在 Microchip 网站上获得临时软件版本。

推荐读物

本用户指南介绍了如何使用 dsPIC DSC 声学回声消除库。以下 Microchip 文档均已提 供,并建议读者作为补充参考材料。

dsPIC30F 系列参考手册 (DS70046E_CN)

有关 dsPIC30F 器件操作的详细信息,请参见此文档。此参考手册介绍了 dsPIC30F 数字信号控制器(Digital Signal Controller,DSC)系列架构和外设模块的工作原理,但 并不涉及每款器件的具体信息。有关器件特定的信息,请参见具体器件的数据手册。

dsPIC33F/PIC24H 系列参考手册章节

有关 dsPIC33F/PIC24H 器件操作的详细信息,请参见这些文档。这些参考手册章节介绍了 dsPIC33F/PIC24H DSC 系列架构和外设模块的操作,但并不涉及每款器件的具体 信息。更多信息,请参见具体器件的数据手册。

dsPIC33E/PIC24E 系列参考手册章节

有关 dsPIC33E/PIC24E 器件操作的详细信息,请参见这些文档。这些参考手册章节介绍了 dsPIC33E/PIC24E DSC 系列架构和外设模块的操作,但并不涉及每款器件的具体 信息。更多信息,请参见具体器件的数据手册。

16 位 MCU 和 DSC 程序员参考手册 (DS70157E_CN)

此手册是供软件开发人员使用的 16 位 PIC24F/PIC24H MCU 以及 16 位dsPIC30F/dsPIC33F DSC 系列器件的参考手册。它详细介绍了指令集,并提供了帮助用户进行这些器件系列软件开发的一般信息。

MPLAB® Assembler, Linker and Utilities for PIC24 MCUs and dsPIC®

DSCs User’s Guide (DS51317)用于 PIC24 MCU 和 dsPIC® DSC 的 MPLAB 汇编器 (以前的 MPLAB ASM30)可从 适用于 dsPIC DSC和PIC24 MCU器件系列的符号汇编语言生成可重定位的机器代码。 该汇编器是 Windows® 控制台应用程序,为开发汇编语言代码提供了平台。该汇编器是自由软件基金会 (www.fsf.org) GNU 汇编器的移植版。

© 2011 Microchip Technology Inc. DS70134F_CN 第 7 页

Page 8: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

MPLAB® C Compiler for PIC24 MCUs and dsPIC® DSCs User’s Guide(DS51284)此文档介绍了优化 C 编译器的特性,包括如何将其与汇编器和链接器配合使用。“MPLAB® Assembler, Linker and Utilities for PIC24 MCUs and dsPIC® DSCs User’s Guide”(DS51317)中详细介绍了汇编器和链接器。

自述文件

有关使用其他工具的 新信息,请阅读相应工具的自述文件,自述文件位于MPLAB IDE 安装目录的 Readmes 子目录下。自述文件包含本用户指南中可能未提供的更新信息和已知问题。

MICROCHIP 网站

Microchip 网站 (www.microchip.com)为客户提供在线支持。客户可通过该网站方便地获取文件和信息。只要使用常用的互联网浏览器即可访问。网站提供以下信息:

• 产品支持——数据手册和勘误表、应用笔记和示例程序、设计资源、用户指南以及硬件支持文档、 新的软件版本以及归档软件

• 一般技术支持——常见问题解答(FAQ)、技术支持请求、在线讨论组以及 Microchip顾问计划成员名单

• Microchip 业务——产品选型和订购指南、 新 Microchip 新闻稿、研讨会和活动安排表、 Microchip 销售办事处、代理商以及工厂代表列表

DS70134F_CN 第 8 页 © 2011 Microchip Technology Inc.

Page 9: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

前言

开发系统变更通知客户服务

Microchip 的客户通知服务有助于客户了解 Microchip 产品的 新信息。注册客户可在他们感兴趣的某个产品系列或开发工具发生变更、更新、发布新版本或勘误表时,收到电子邮件通知。

欲注册,请登录 Microchip 网站 http://www.microchip.com,点击“变更通知客户”(Customer Change Notification)服务并按照注册说明完成注册。

开发系统产品的分类如下:

• 编译器——Microchip C 编译器及其他语言工具的 新信息,包括 MPLAB® C 编译 器、MPASM™ 和 MPLAB 16 位汇编器、MPLINK™ 和 MPLAB 16 位目标链接器, 以及 MPLIB™ 和 MPLAB 16 位目标库管理器。

• 仿真器——Microchip MPLAB REAL ICE™ 在线仿真器的 新信息。

• 在线调试器——Microchip 在线调试器 MPLAB ICD 3 的 新信息。

• MPLAB IDE——关于开发系统工具的 Windows® 集成开发环境 Microchip MPLAB IDE 的 新信息,主要针对 MPLAB IDE、MPLAB SIM 模拟器、MPLAB IDE 项目 管理器以及一般编辑和调试功能。

• 编程器——Microchip 编程器的 新信息,包括 MPLAB PM3 器件编程器以及PICkit™ 3 开发编程器。

客户支持

Microchip 产品的用户可通过以下渠道获取帮助:

• 代理商或代表

• 当地销售办事处

• 应用工程师 (FAE)• 技术支持

客户应联系其代理商、代表或应用工程师(FAE)寻求支持。当地销售办事处也可为客户提供帮助。本文档后附有销售办事处的联系方式。

也可通过 Microchip 网站 http://www.microchip.com/support 获得网上技术支持。

© 2011 Microchip Technology Inc. DS70134F_CN 第 9 页

Page 10: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

文档版本历史

版本 A (2004 年 7 月)

这是本文档的初始版本。

版本 B (2005 年 4 月)

对文档进行了更新,以反映增加的采样率转换函数和相应的演示更改。

版本 C (2008 年 8 月)

此版本包含声学回声消除库版本 5.0 的以下更新。

本文档的名称从《dsPIC30F 声学回声消除库用户指南》重命名为《dsPIC® DSC 声学 回声消除库用户指南》。除了版本字母更新外,未对 Microchip 文献编号(DS70134)进行更改。

每章均经过大面积修改和重新组织以支持所有 dsPIC DSC 器件。上一版本的文档包含 七章,这七章的内容已按如下方式合并:

• 第 1 章 简介:

- 不再提供可选附件工具包,相关信息已删除。

- 删除了对用户函数的引用。

- 更新了主机系统要求一节,以包含 HTML 浏览器要求。

• 第 2 章 安装:

- 更新了安装步骤,以适应安装 CD 文件的变化。请参见第 2.1 节“安装步骤”。

- 更新了声学回声消除库文件,inc文件夹重命名为 h。请参见第 2.2 节“AEC库文件”。

• 第 3 章 AEC 演示 (以前的第 6 章,“声学回声消除演示”):

- dsPICDEM™ 1.1 Plus 开发板跳线(J9)设置从 MASTER 更改为 SLAVE。请 参见第 3.1.2 节“演示设置”和图 3-2。

- 由于删除了可选声学附件工具包,“演示设置”一节中对 14.7456 MHz 振荡器 的引用也已删除。

- 完全重写了演示步骤,以提供关于操作状态的更多信息。请参见第 3.1.3 节“演示步骤”。

• 第 4 章 应用程序编程接口(API) (以前的第 3 章,标题相同):

- 此章已使用全新的 API 函数集更新。请参见第 4.7 节“AEC 库 API 函数”。

- 以前的“声学回声消除算法”一章中的信息已合并到“应用程序编程接口(API)”一章。请参见第 4.4 节 “函数库的使用”。

- 以前的 “资源需求”一章中的信息已合并到“应用程序编程接口 (API)”一章。请参见第 4.6 节“资源需求”。

DS70134F_CN 第 10 页 © 2011 Microchip Technology Inc.

Page 11: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

前言

版本 D (2008 年 11 月)

• 更新了表 2-1 中的演示文件名

• 更新了第 3.1.3 节 “演示步骤”中的第 1 步

• 更新了第 3.1.4 节 “演示代码说明”中的文本,如下所示:

- Si3000CodecInit()更改为 SI3000_open()- init_uart()更改为 UART1_open()- UART 波特率从大约 115200 更新为大约 250000- 更新了第七段的第一句和第二句的文本,以阐明编解码器数据缓冲区与编解码器驱动程序的交互

- 更新了第九段的第二句和第三句的文本,以阐明主循环功能

• 更新了第 4 章“应用程序编程接口(API)”中的代码示例,以反映 API 功能的变化

• 增加了第 4.2 节 “存储模型编译选项”

版本 E (2011 年 2 月)

此版本包括以下更新:

• 注:

- 在表 4-4 “计算速度”中增加了注

• 章节:

- 增加了第 4.5 节 “寄存器的使用”

• 对整篇文档进行了语言和格式更新等少量修改

© 2011 Microchip Technology Inc. DS70134F_CN 第 11 页

Page 12: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

版本 F (2011 年 6 月)

此版本包括以下更新:

• 示例:

- 第 4.4 节 “函数库的使用”中的例 4-1 和例 4-2 增加了标题

• 图:

- 删除了第 2.1 节 “安装步骤”中的图 2-1 至图 2-5- 删除了第 4.1 节 “向应用程序添加 AEC 库”中的图 4-1 至图 4-4

• 注:

- 删除了第 2.1 节 “安装步骤”中的注

- 在第 4.4 节 “函数库的使用”中增加了注

• 章节:

- 更新了“前言”中的推荐读物一节

- 更新了第 1 章 “简介”中的第一段

- 更新了第 1.3 节 “主机系统要求”中的属性列表

- 更新了第 2.1 节 “安装步骤”

- 将第 2.2 节 “AEC 库文件”中的版本号从 EC v5.0更新为 EC v6.0- 更新了第 2.2.4 节 “lib 文件夹”

- 将第 3 章“AEC 演示”中的现有章节更新为第 3.1 节“dsPIC33F 器件系列的AEC 演示”

- 增加了第 3.2 节 “dsPIC33E 器件系列的 AEC 演示”

- 更新了第 3.1.2.3 节“烧写 dsPIC DSC 器件”中的第 1 步和第 2 步

- 更新了第 4.1 节 “向应用程序添加 AEC 库”中的第 2 步和第 4 步

- 更新了第 4.6 节 “资源需求”

• 表:

- 更新了第 2.2 节 “AEC 库文件”中的表 2-1 和表 2-3- 第 4.6 节 “资源需求”中的表 4-1 至表 4-4 增加了标题

- 更新了第 4.6 节 “资源需求”中的表 4-1、表 4-2 和表 4-4• 对整篇文档进行了语言和格式更新等少量修改

DS70134F_CN 第 12 页 © 2011 Microchip Technology Inc.

Page 13: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

®

dsPIC DSC 声学回声消除库用户指南

第 1 章 简介

本章介绍 dsPIC DSC 声学回声消除 (Acoustic Echo Cancellation, AEC)库 (称为 AEC 库)。该函数库为容易受到回声影响的应用提供抑制回声的功能。该函数库支持dsPIC33F 和 dsPIC33E 器件系列。您可以利用本手册提供的信息将 AEC 功能集成到嵌入式解决方案中。本章涵盖以下主题:

• 声学回声消除概述

• 特性

• 主机系统要求

1.1 声学回声消除概述

在许多应用中,系统的输入和输出端之间的反馈路径或耦合会产生回声,声学回声消除即用于抑制或消除这种回声。图 1-1 显示了一个语音和电话系统示例,该系统很容易受到声学回声的影响。在此例中,通信链路近端的扬声器和话筒之间的声学耦合会产生回声,这导致在远端产生明显的干扰回声。在这种情况下,在近端运行的 AEC 算法将抑制回声并提高系统的性能。

图 1-1: 语音和电话应用中的 AEC

∑发送路径

+

自适应

滤波器

-

远端语音远端语音接收路径

近端语音

近端语音

回声

声学回声消除

近端远端

© 2011 Microchip Technology Inc. DS70134F_CN 第 13 页

Page 14: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

AEC 库使用固定的 8 kHz 采样率,尤其适合于如下应用:

• 免提移动电话

• 扬声器电话

• 对讲机

• 电话会议系统

对于用于汽车环境(如汽车内)的免提电话,该函数库兼容 AEC 的 G.167 标准和其他相关的 ITU-T 标准。

AEC 库几乎完全用汇编语言编写,并经过高度优化,能够充分利用 dsPIC® DSC 器件指令集和高级寻址模式。其算法可避免数据溢出。 AEC 库提供 EC_init函数用于初始化算法所需的各种数据结构,提供 EC_apply函数用于从长度为 10 ms 的 16 位采样语音数据块中去除回声成分。您可以通过完备的应用程序编程接口 (Application Programming Interface, API)轻松调用这两个函数。

AEC 算法主要是时域算法。使用自适应有限冲激响应(Finite Impulse Response,FIR) 滤波器对接收到的远端语音采样(通常接收自通信通道,如电话线)进行滤波,然后从近端输入语音信号中减去远端语音采样。此滤波器的系数使用归一化 小均方(Normalized Least Mean Square, NLMS)算法进行修改,以便使滤波器对近端扬声 器和近端话筒之间的声学路径(即,回声穿越的路径)近似建模。可使用非线性处理器(Nonlinear Processor, NLP)算法消除剩余回声。

1.2 特性

AEC 库的主要特性包括:

• 简单的用户接口——仅一个库文件和一个头文件

• 所有函数都可从 C 应用程序调用

• 兼容 Microchip C30 编译器、汇编器和链接器

• 高度优化的汇编代码,使用 DSP 指令和高级寻址模式

• 可消除回声延时或“尾长”为 16 ms、32 ms、64 ms 或 128 ms 的声学回声(可配置)

• 对于车内应用,兼容 G.167 规范

• 音频带宽:8 kHz 采样率下为 0 kHz 至 4 kHz• 收敛速率: 高 47 dB/s,通常大于 30 dB/s• 声学回声消除: 高 50 dB,通常大于 40 dB• 可与噪声抑制 (Noise Suppression, NS)库配合使用

• 随函数库提供演示应用程序源代码

• 可调整 NLP 衰减水平以适合应用需求

• 用户应用可强制使能或禁止 AEC 自适应

• 提供关键算法参数的运行时控制

DS70134F_CN 第 14 页 © 2011 Microchip Technology Inc.

Page 15: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

简介

1.3 主机系统要求

AEC 库要求 PC 兼容系统具有以下属性:

• Intel® Pentium® 级别或更高级别的处理器,或同等处理器

• HTML 浏览器

• 至少 16 MB RAM• 至少 40 MB 可用硬盘空间

• Microsoft® Windows® 98、Windows 2000、Windows NT、Windows XP或Windows 7

© 2011 Microchip Technology Inc. DS70134F_CN 第 15 页

Page 16: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

注:

DS70134F_CN 第 16 页 © 2011 Microchip Technology Inc.

Page 17: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

®

dsPIC DSC 声学回声消除库用户指南

第 2 章 安装

本章介绍 AEC 库中的各种文件,并包含将该函数库安装到笔记本电脑或 PC 上以便与dsPIC DSC 器件编程工具配合使用的操作说明。涵盖的主题包括:

• 安装步骤

• AEC 库文件

2.1 安装步骤

要安装该函数库,请执行以下步骤:

1. 双击 AEC setup.exe。将显示许可协议屏幕。

2. 查看许可协议,然后单击 I Agree(我同意)继续。将显示 Installation Destination(安装目标文件夹)对话框。

3. 指定要安装函数库的位置 (即目录),然后单击 Install (安装)。

4. 单击 Close (关闭)关闭该对话框。这将完成 AEC 库的安装。

安装过程中将创建名为 EC v6.0的文件夹,其中包含第 2.2 节 “AEC 库文件 ” 中介绍的文件。

2.2 AEC 库文件

dsPIC DSC 声学回声消除库 CD 将创建名为EC v6.0的目录。此目录包含以下文件夹:

• demo• doc• h• lib

2011 Microchip Technology Inc. DS70134F_CN 第 17 页

Page 18: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

2.2.1 demo 文件夹

此文件夹包含 dsPIC DSC 声学回声消除库快速入门演示所需的文件。表 2-1 列出了此 文件夹中的文件。

表 2-1: 演示文件

文件名 说明

dsPIC33F EC demo2.hex dsPIC33F 的演示十六进制文件,用于板 2。

dsPIC33F EC demo1.hex dsPIC33F 的演示十六进制文件,用于板 1。

dsPIC33F EC demo.mcp dsPIC33F 的演示 MPLAB® 项目文件。

dsPIC33E EC demo2.hex dsPIC33E 的演示十六进制文件,用于板 2。

dsPIC33E EC demo1.hex dsPIC33E 的演示十六进制文件,用于板 1。

dsPIC33E EC demo.mcp dsPIC33E 的演示 MPLAB 项目文件。

cleanup.bat 用于清除中间编译文件的批处理文件脚本。

h\dsPICDEM1_1Plus.h dsPICDEM™ 1.1 Plus 开发板程序的 C 头文件。

h\MEB.h 多媒体扩展板(Multimedia Expansion Board, MEB)程序的 C头文件。

h\lcd.h 用于定义 LCD 驱动程序接口的 C 头文件。

h\G711.h 用于定义 G.711 库接口的 C 头文件。

h\ec_api.h 用于定义 AEC 库接口的 C 头文件。

h\UART1Drv.h 用于定义 UART1 驱动程序接口的 C 头文件。

h\UART2Drv.h 用于定义 UART2 驱动程序接口的 C 头文件。

h\SI3000Drv.h 用于定义 Si3000 编解码器驱动程序接口的 C 头文件。

h\WM8731CodecDrv.h 用于定义 WM8731 编解码器驱动程序接口的 C 头文件。

libs\eclibv6_33F.a dsPIC33F 的 AEC 库归档文件。

libs\eclibv6_33E.a dsPIC33E 的 AEC 库归档文件。

src\dsPICDEM1_1Plus.c 包含 dsPICDEM 1.1 Plus 开发板程序的 C 源文件。

src\MEB.c 包含 MEB 程序的 C 源文件。

src\lcd_strings.c 用于 LCD 显示屏驱动程序的 C 源文件。

src\main.c 包含主要语音处理程序的 C 源文件。

src\UART1Drv.c 包含 UART1 外设代码的 C 源文件。

src\UART2Drv.c 包含 UART2 外设代码的 C 源文件。

src\SI3000Drv.c 包含 Si3000 编解码器代码的 C 源文件。

src\WM8731CodecDrv.c 包含 WM8731 编解码器代码的 C 源文件。

src\lcd.s 用于与 LCD 控制器通信的汇编程序。

src\G711.s 实现 G.711 库函数的汇编程序。

DS70134F_CN 第 18 页 © 2011 Microchip Technology Inc.

Page 19: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

安装

2.2.2 doc 文件夹

此文件夹包含 AEC 库的用户指南。要查看该文档,请双击文件名。还可以从 Microchip网站 (www.microchip.com)下载该用户指南。

2.2.3 h 文件夹

此文件夹包含 AEC 库的包含文件,如表 2-2 所示。

表 2-2: 包含文件

2.2.4 lib 文件夹

此文件夹包含AEC库的库归档文件,如表 2-3所示。归档名称以目标器件系列 dsPIC33F 或 dsPIC33E 的名称为后缀。

表 2-3: 库文件

文件名 说明

ec_api.h 包含 AEC 库接口的包含文件。必须将此文件包含在应用程序中才能使用该函数库。

文件名 说明

eclibv6_33F.a dsPIC33F 的 AEC 库归档文件。必须将此文件包含在应用程序中才能使用该函数库。

eclibv6_33E.a dsPIC33E 的 AEC 库归档文件。必须将此文件包含在应用程序中才能使用该函数库。

© 2011 Microchip Technology Inc. DS70134F_CN 第 19 页

Page 20: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

注:

DS70134F_CN 第 20 页 © 2011 Microchip Technology Inc.

Page 21: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

®

dsPIC DSC 声学回声消除库用户指南

第 3 章 AEC 演示

本章介绍在 dsPIC33F 或 dsPIC33E 器件上运行的实际应用中的声学回声消除动手实验演示。

3.1 dsPIC33F 器件系列的 AEC 演示

本节涵盖以下主题:

• 演示摘要

• 演示设置

• 演示步骤

• 演示代码说明

3.1.1 演示摘要

为了演示 AEC 库的功能,随函数库提供了一个基于 dsPIC33F 的示例应用程序,该应用程序模拟了两个进行语音通信的扬声器电话。该软件需要使用两块 dsPICDEM™ 1.1 Plus 开发板 (未随软件许可提供),其设置如图 3-1 所示。

图 3-1: 声学回声消除演示

dsPICDEM 1.1 Plus 开发板 1 连接了一个扬声器和一个话筒,二者相互距离很近。开发 板 2 连接了一个耳麦。

当有人对着连接到板 2 的耳麦讲话时,语音信号通过板上 Si3000 语音频带编解码器和dsPIC DSC 器件的数据转换器接口(Data Converter Interface, DCI)模块进行采样。 然后, dsPIC DSC 器件通过其 UART1 模块和板上 RS-232 收发器将压缩的语音信号发 送到板 1。板 1 上的 dsPIC DSC 器件通过板上 RS-232 收发器和器件的 UART1 模块接收信号。然 后, dsPIC DSC 器件通过其 DCI 模块和板上 Si3000 编解码器在扬声器上播放信号。

运行 AEC 库的dsPICDEM™ 1.1 Plus dsPICDEM 1.1 Plus

板 1 板 2

© 2011 Microchip Technology Inc. DS70134F_CN 第 21 页

Page 22: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

由于扬声器和话筒距离很近,扬声器的声音进入话筒并由 dsPIC DSC 器件通过编解码器 进行采样。然后,器件通过 RS-232 接口将话筒的信号发送到板 2。如果有人对着连接到板 1 的话筒讲话,则发送到板 2 的信号是近端语音和不需要的远端语音声学回声的混合信号。在连接到板 2 的耳麦中可听到语音和回声的混合信号。在本例中,板 1 表示近端,板 2 表示远端。

程序启动时将初始化为关闭声学回声消除(通过熄灭 LED1 指示),并将 OFF 写到 LCD屏幕上。声学回声消除关闭时,在连接到板 2 的耳麦中听到的信号包含明显的回声。

通过按下 SW1 使能声学回声消除。LED1 此时亮起,并且 LCD 上显示 ON,在连接到板 2的耳麦中听到的语音信号变为无回声。

演示应用程序调用 AEC 库中的 EC_apply和 EC_applyNLP函数来抑制与近端语音混合在一起的无用远端回声。

3.1.2 演示设置

本演示应用程序用于在 dsPICDEM 1.1 Plus 开发板(未随软件许可提供)上运行。请按 照以下几节所述的步骤设置演示。

3.1.2.1 配置 dsPICDEM 1.1 PLUS 开发板

在上电之前需要按如下步骤配置开发板:

1. 将跳线 J9 (与振荡器插座相邻)设置到 SLAVE 位置(见图 3-2)。此设置允许板上 Si3000 编解码器芯片以串行时钟从模式工作。

2. 将折叠扬声器连接到板 1 上的 SPKR OUT 插孔 (J17)。

3. 将话筒连接到板 1 上的 MIC IN 插孔(J16)。确保话筒开启且位置与扬声器足够 近,以在话筒中产生反馈。

4. 将耳麦话筒连接到板 2 上的 MIC IN 插孔 (J16)。

5. 将耳麦扬声器连接到板 2 上的 SPKR OUT 插孔 (J17)。

6. 将 DB9M-DB9M 零调制解调器适配器的一端连接到板 1 上的 PORTB (J5)端口。然后,将 RS-232 电缆的一端连接到零调制解调器适配器。

7. 将 6 英尺 DB9 M/F RS-232 电缆的另一端连接到板 2 上的 PORTB (J5)端口。

DS70134F_CN 第 22 页 © 2011 Microchip Technology Inc.

Page 23: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

AEC 演示

图 3-2: 演示板设置

3.1.2.2 设置演示

配置完两块板之后,连接扬声器和话筒并将两块板互连,如图 3-3 所示。

图 3-3: 连接 dsPICDEM™ 1.1 开发板

将 J9 设置为 SLAVE

RS-232 电缆

dsPICDEM™ 1.1 Plus 开发板 1 dsPICDEM 1.1 Plus

开发板 2

(J16) (J17)SPKR OUTMIC INSPKR OUTMIC IN

(J16) (J17)

零调制解调器适配器115 VAC

9 VDC

115 VAC

9 VDC

ROUT

RIN

SOUT

J5 J5

近端 远端

SIN

© 2011 Microchip Technology Inc. DS70134F_CN 第 23 页

Page 24: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

3.1.2.3 烧写 dsPIC DSC 器件

通过以下过程将 AEC 演示加载到 dsPICDEM 1.1 Plus 开发板上的 dsPIC DSC 器件中。

1. 在PC上启动MPLAB IDE,并打开位于demo文件夹中的dsPIC33F EC demo.mcp 项目。有关使用 MPLAB IDE 的更多信息,请参见 《MPLAB® IDE 用户指南》 (DS51519A_CN)。

2. 通过选择以下命令来导入项目十六进制文件:

• 对于板 1,选择 File>Import>dsPIC33F EC demo1.hex (文件 > 导入 >dsPIC33F EC demo1.hex);

• 对于板 2,选择 File>Import>dsPIC33F EC demo2.hex3. 选择 Programmer>Connect(编程器 > 连接)将 MPLAB ICD 3 链接到 dsPIC DSC

目标器件。 Output (输出)窗口确认 MPLAB ICD 3 已准备就绪。

4. 选择 Programmer>Program(编程器 > 编程)。Output 窗口显示下载过程并指示烧写已成功。

5. 程序加载完毕后,断开 MPLAB ICD 3 与开发板的连接 (从 MPLAB ICD 3 连接 器中拔出电话线)。断开连接后, LCD 显示屏上将显示声学回声消除信息。

6. 对第二块板重复步骤 2 至 5。7. 确保两块板彼此不会距离过近,以防止在两块板之间产生声学耦合。

3.1.3 演示步骤

演示应用程序烧写到两个器件中之后,应用程序即准备好运行。使用以下步骤运行演示:

1. 按下板 1 上的复位按钮。等待至板 1 上的 LED1 至 LED4 亮起。现在复位板 2。等待至板 1 和板 2 上的 LED1 至 LED4 熄灭。这表示两块板已同步并且演示正在运行。

2. 戴上连接到 dsPICDEM 1.1 Plus 开发板 2 的耳麦。

3. 开始对着耳麦的话筒输入讲话。您应该观察到音量单位(volume unit, VU)计的 上显示条随语音上下波动。这将由板 1 上 VU 计的第二个显示条模拟。您应该能在耳麦的扬声器输出中听到自己语音的回声。

4. 如果需要,让另一个人同时对着连接到 dsPICDEM 1.1 Plus 开发板 1 的话筒讲话。 在这种情况下,您将听到此人的语音以及自己语音的回声。

5. 按下 dsPICDEM 1.1 Plus 开发板 1 上的开关 SW1。注意板 1 上的 LED1 亮起,指 示 AEC 算法已激活。

6. 再次对着耳麦的话筒讲话。您应该不会再听到自己语音的回声。

7. 如果要观察双端发声的声学回声消除,则让另一个人同时对着连接到dsPICDEM 1.1 Plus 开发板 1 的话筒讲话。您将只能听到此人的语音,而听不到自己语音的回声。当您和另一个人正常讲话时,通过开启和关闭回声消除器,能够很容易体验到切换时的不同效果。

注: 可以使用 MPLAB® REAL ICE™ 在线仿真器代替 MPLAB ICD 3。

DS70134F_CN 第 24 页 © 2011 Microchip Technology Inc.

Page 25: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

AEC 演示

要使用不同的回声尾长值进行实验,可更改ec_api.h包含文件中定义的EC_ECHOTAIL常量,重新编译 EC demo.mcp,重新烧写板 1 并重新运行演示应用程序。演示应用程 序通过 LED 和 LCD 指示工作状态。

当加载应用程序和初始化片上和片外外设时,将显示引导屏幕。然后引导屏幕将切换到运行屏幕 (见图 3-4)。

图 3-4: 板 1 上的演示运行时 LCD 屏幕

运行时屏幕显示以下内容:

1. 算法的名称。

2. SW1 用于开启和关闭声学回声消除。 SW4 用于重新初始化声学回声消除算法。

3. 算法的当前状态 (关闭)和所选的 NLP 级别。

4. 显示输入级别的 VU 计。上面的显示条表示 nearEndIn 缓冲区,下面的显示条表示 farEndIn缓冲区。频带显示了可接受的输入范围。当输入信号过大时,将显示CLIPPED 一词。

可按下 SW3 以 6 dB 为步长增加非线性处理量 ( 高增至 90 dB)。可按下 SW2 以 6 dB 为步长降低非线性处理量 ( 低降至 0 dB)。大多数应用的默认级别为 18 dB。 按下 SW4 可重新初始化声学回声消除。

3.1.4 演示代码说明

演示代码在 dsPIC DSC 器件上运行,使用主振荡器作为时钟源,对 PLL 针对 40 MIPS 的工作进行设置。

main.c文件包含演示应用程序的主函数。此主函数在数据存储器中分配 DCI 数据缓冲所需的所有变量和数组,还为 AEC 库函数分配所需的数据存储块。

主函数调用AEC库中的EC_init()函数,该函数用于将AEC算法初始化为默认状态。

主函数还调用 SI3000_open() 函数来初始化 DCI 模块、 Si3000 编解码器和 DCI 中断。 DCI 模块用作主器件并驱动串行时钟和帧同步线。 Si3000 编解码器用作从器件。DCI 模块设置为多通道帧同步工作模式以及 16 位数据字,每帧 16 个数据字或时隙,本演示中仅使用一个发送时隙和一个接收时隙。

随后,此函数初始化 Si3000 编解码器。通过将 dsPIC DSC 器件的 RF6 引脚与 Si3000 的复位引脚连接,并将 RF6 保持 100 个周期的低电平然后驱动为高电平来复位编解码器。编解码器的采样率配置为 8 kHz。话筒增益设置为 10 dB,接收增益设置为 0 dB。 两个扬声器均设置为有效,发送增益设置为 0 dB。模拟衰减参数设置为 0 dB。初始化 所有 Si3000 控制寄存器之后,引入延时以进行 Si3000 校准。 后,允许 DCI 中断。

Echo CancellationOnOff SW1 : Init SW4Off : 18db NLP

* CLIPPED

© 2011 Microchip Technology Inc. DS70134F_CN 第 25 页

Page 26: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

通过 UART1_open()函数来执行 UART 初始化和数据处理。UART 模块配置为每发送或接收一个字节时产生一个中断。UART 模块运行在大约 250000 bps 的波特率下,数 据格式为 8 位,无奇偶校验, 1 个停止位(8-N-1)。在 UART 发送和接收中断服务程序(Interrupt Service Routine,ISR)中,相应的中断标志被清零,向 U1TXREG 写入 数据或从 U1RXREG 读取数据并保存到循环缓冲区中。

针对整帧数据读取编解码器驱动程序。编码的数据缓冲区的内容复制到 nearEndIn数组中,并以nearEndIn为输入数据帧调用AEC库中的EC_apply()函数。nearEndIn数据缓冲区(也是 EC_apply函数执行后的输出)传送到 UART 以发送到板 2。UART数据从 µ-Law 转换为 16 位线性数据并存储在 farEndIn中,后者是 EC_apply()的参考 (回声)输入数据帧。

通过在 InitSPI函数中初始化 SPI 模块来实现在 LCD 上显示, LCD 驱动程序函数和LCD 字符串定义分别位于 lcd.s和 lcd_strings.c文件中。

要在开启和关闭声学回声消除之间切换,请允许 SW1 的外部中断。在主循环中,读取applyAEC的值并将其传递给EC_apply()作为使能标志。如果applyAEC为0,则仍然调用声学回声消除,但是不更改输入 / 输出缓冲区。这将使声学回声消除保持对回声路径变化的自适应,即使其并未使能。

DS70134F_CN 第 26 页 © 2011 Microchip Technology Inc.

Page 27: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

AEC 演示

3.2 dsPIC33E 器件系列的 AEC 演示

本节涵盖以下主题:

• 演示摘要

• 演示设置

• 演示步骤

• 演示代码说明

3.2.1 演示摘要

为了演示 AEC 库的功能,随函数库提供了一个基于 dsPIC33E 的示例应用程序,该应用程序模拟了两个进行语音通信的扬声器电话。该软件需要使用两个dsPIC33E USB入 门工具包和两个 MEB (未随软件许可提供),其设置如图 3-5 所示。

图 3-5: 声学回声消除演示

板 1 连接了一个扬声器和一个话筒,二者相互距离很近。板 2 连接了一个耳麦。

当有人对着连接到板 2 的耳麦讲话时,语音信号通过板上 WM8731 语音频带编解码器和dsPIC DSC 器件的 DCI 模块进行采样。然后,dsPIC DSC 器件通过其 UART2 模块和板 上 I/O 扩展连接器将压缩的语音信号发送到板 1。板 1 上的 dsPIC DSC 器件通过板上 I/O 扩展连接器和器件的 UART2 模块接收信号。然 后, dsPIC DSC 器件通过其 DCI 模块和板上 WM8731 编解码器在扬声器上播放信号。

由于扬声器和话筒距离很近,扬声器的声音进入话筒并由 dsPIC DSC 器件通过编解码器 进行采样。然后,器件通过 UART2 模块将话筒的信号发送到板 2。如果有人对着连接到板 1 的话筒讲话,则发送到板 2 的信号是近端语音和不需要的远端语音声学回声的混合信号。在连接到板 2 的耳麦中可听到语音和回声的混合信号。在本例中,板 1 表示近端,板 2 表示远端。

运行 AEC 库的 dsPIC33E USB dsPIC33E USB 入门工具包和 MEB

J5 J5

20 2222 20

板 1

SINROUT

dsPIC33E USB 入门工具包

SW3 SW2 SW1

LED3 LED2 LED1

dsPIC33EDSC

板 2

SOUTdsPIC33E USB 入门工具包

SW3 SW2 SW1

LED3 LED2 LED1

dsPIC33EDSC

入门工具包和 MEB

© 2011 Microchip Technology Inc. DS70134F_CN 第 27 页

Page 28: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

程序启动时将初始化为关闭声学回声消除 (通过熄灭 dsPIC33E USB 入门工具包上的 LED3 指示)。声学回声消除关闭时,在连接到板 2 的耳麦中听到的信号包含明显的回声。

通过按下 dsPIC33E USB 入门工具包上的开关 SW1 使能声学回声消除。 LED3 此时亮 起,并且在连接到板 2 的耳麦中听到的语音信号变为无回声。

演示应用程序调用 AEC 库中的 EC_apply和 EC_applyNLP函数来抑制与近端语音混合在一起的无用远端回声。

3.2.2 演示设置

本演示应用程序用于在 dsPIC33E USB 入门工具包和 MEB(未随软件许可提供)上运 行。请按照以下几节所述的步骤设置演示。

3.2.2.1 配置 MEB 和 dsPIC33E USB 入门工具包

在上电之前需要按如下步骤配置多媒体扩展板:

1. 将一个 dsPIC33E USB 入门工具包插入到 MEB 1 上的入门工具包连接器,另一 个插入 MEB 2 上的入门工具包连接器。

2. 将折叠扬声器连接到 MEB 1 上的耳麦插孔 (J18)。

3. 将话筒连接到 MEB 1 上的话筒插孔 (J7)。确保话筒开启且位置与扬声器足够 近,以在话筒中产生反馈。

4. 将耳麦话筒连接到 MEB 2 上的话筒插孔。

5. 将耳麦扬声器连接到 MEB 2 上的耳麦插孔。

6. 使用随入门工具包提供的 USB A 转 Mini B 电缆将这两个 dsPIC33E 入门工具包 都连接到 PC。

7. 使用一对单股线将 MEB 1 上 I/O 扩展连接器(J5)的引脚 20 与 MEB 2 上 I/O 扩 展连接器的引脚 22 连接。同样,将 MEB 1 上 I/O 扩展连接器的引脚 22 与 MEB 2 上 I/O 扩展连接器的引脚 20 连接。

3.2.2.2 设置演示

配置完两块板之后,连接扬声器和话筒并将两块板互连。

DS70134F_CN 第 28 页 © 2011 Microchip Technology Inc.

Page 29: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

AEC 演示

3.2.2.3 烧写 dsPIC DSC 器件

通过以下过程将 AEC 演示加载到每块板上的 dsPIC DSC 器件中。

1. 在PC上启动MPLAB IDE,并打开位于demo文件夹中的dsPIC33E EC demo.mcp 项目。有关使用 MPLAB IDE 的更多信息,请参见 《MPLAB® IDE 用户指南》 (DS51519A_CN)。

2. 通过选择以下命令来导入项目十六进制文件:

• 对于板 1,选择 File>Import>dsPIC33E EC demo1.hex ;

• 对于板 2,选择 File>Import>dsPIC33E EC demo2.hex3. 选择板上的入门工具包作为编程器,然后选择 Programmer>Connect 链接到板 1

上的 dsPIC DSC 目标器件。 Output 窗口确认目标器件已准备就绪。

4. 选择 Programmer > Program。 Output 窗口显示下载过程并指示烧写已成功。

5. 对第二块板重复步骤 2 至 4。6. 确保两块板彼此不会距离过近以防止在两块板之间产生声学耦合。

3.2.3 演示步骤

演示应用程序烧写到两个器件中之后,应用程序即准备好运行。使用以下步骤运行演示:

1. 使用 MPLAB IDE 复位并运行板 1 中的程序。等待至板 1 上的 LED1 至 LED3 亮 起。现在复位并运行板 2 中的程序。等待至板 1 和板 2 上的 LED1 至 LED3 熄灭。这表示两块板已同步并且演示正在运行。

2. 戴上连接到板 2 的耳麦。

3. 开始对着耳麦的话筒输入讲话。在耳麦的扬声器输出中,您应该能听到自己语音的回声。

4. 如果需要,让另一个人同时对着连接到板 1 的话筒讲话。在这种情况下,您将听到此人的语音以及自己语音的回声。

5. 按下 dsPIC33E USB 入门工具包上的开关 SW1。注意板 1 上的 LED3 亮起,指 示 AEC 算法已激活。

6. 再次对着耳麦的话筒讲话。您应该不会再听到自己语音的回声。

7. 如果要观察双端发声的声学回声消除,则让另一个人同时对着连接到板 1 的话筒讲话。您将只能听到此人的语音,而听不到自己语音的回声。当您和另一个人正常讲话时,通过开启和关闭回声消除器,能够很容易体验到切换时的不同效果。

注: 烧写每个器件后,拔下 USB 电缆并重新连接到入门工具包,以确保可以重新配置 WM8731 音频编解码器。

注: 如果只有一台 PC 可用于运行演示,则对板 2 进行烧写。烧写后断开 USB电缆与板 2 的连接,并使用 9V 外部电源复位和运行板 2 中的程序(在板 1中的程序已经运行之后)。

© 2011 Microchip Technology Inc. DS70134F_CN 第 29 页

Page 30: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

要使用不同的回声尾长值进行实验,可更改ec_api.h包含文件中定义的EC_ECHOTAIL常量,重新编译 EC demo.mcp,重新烧写板 1 并重新运行演示应用程序。演示应用程 序通过 LED 指示工作状态。

可按下 SW3 以 6 dB 为步长增加非线性处理量( 高增至 90 dB)。可按下 SW2 以 6 dB 为步长降低非线性处理量( 低降至 0 dB)。大多数应用的默认级别为 18 dB。可通过 按下 MEB 的 LCD 侧上的开关 S1 来重新初始化声学回声消除。

3.2.4 演示代码说明

演示代码在 dsPIC33E 器件上运行,使用主振荡器作为时钟源,对 PLL 针对 40 MIPS 的工作进行设置。

main.c文件包含演示应用程序的主函数。此主函数在数据存储器中分配 DCI 数据缓冲所需的所有变量和数组,还为 AEC 库函数分配所需的数据存储块。

主函数调用 AEC 库中的 WM8731Init()函数,该函数用于将 AEC 算法初始化为默认状态。

主函数还调用 WM8731Init()函数来初始化 DCI 模块、 WM8731 编解码器和 DCI 中断。WM8731 编解码器用作主器件并驱动串行时钟和帧同步线。DCI 模块设置为多通道帧同步工作模式以及 16 位数据字,每帧两个数据字或时隙,本演示中使用两个发送时隙和两个接收时隙。

随后,使用 WM8731Start()函数使能 DCI 模块和 I2C™ 模块。编解码器的采样率配置为 8 kHz。通过 UART2_open()函数来执行 UART 初始化和数据处理。UART 模块配置为每发送或接收一个字节时产生一个中断。UART 模块运行在大约 250000 bps 的波特率下,数 据格式为 8 位,无奇偶校验, 1 个停止位(8-N-1)。在 UART 发送和接收 ISR 中,相应的中断标志被清零,向 U2TXREG 写入数据或从 U2RXREG 读取数据并保存到循环缓冲区中。

针对整帧数据读取编解码器驱动程序。编码的数据缓冲区的内容复制到 nearEndIn数组中,并以 nearEndIn为输入数据帧调用AEC库中的 EC_apply()函数。nearEndIn数据缓冲区(也是 EC_apply函数执行后的输出)传送到 UART 以发送到板 2。UART数据从 µ-Law 转换为 16 位线性数据并存储在 farEndIn中,后者是 EC_apply()的参考 (回声)输入数据帧。

在主循环中,读取 applyAEC 的值并将其传递给 EC_apply() 作为使能标志。如果applyAEC为 0,则仍然调用声学回声消除,但是不更改输入 / 输出缓冲区。这将使声学回声消除保持对回声路径变化的自适应,即使其并未使能。

DS70134F_CN 第 30 页 © 2011 Microchip Technology Inc.

Page 31: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

®

dsPIC DSC 声学回声消除库用户指南

第 4 章 应用程序编程接口(API)

本章介绍 AEC 库的应用程序编程接口 (API)。涵盖的主题包括:

• 向应用程序添加 AEC 库

• 存储模型编译选项

• AEC 算法概述

• 函数库的使用

• 寄存器的使用

• AEC 库 API 函数

• 应用技巧

4.1 向应用程序添加 AEC 库

要在应用程序中使用 AEC 库,必须将库归档添加到应用程序项目工作区,还必须将ec_api.h头文件包含在应用程序代码中。此文件可从 h文件夹(位于安装目录中)复制到应用程序项目文件夹。

使用以下步骤将该函数库添加到应用程序:

1. 在应用程序 MPLAB 工作区中,右键单击项目窗口中的 Library Files(库文件), 然后选择 Add files (添加文件)。

2. 浏览到所需 AEC 库归档文件的位置,该文件位于安装目录的 libs文件夹中。

3. 选择所需文件,然后单击 Open (打开)。

4. 函数库即添加到应用程序中。查看函数库归档是否显示在 MPLAB 项目中。

© 2011 Microchip Technology Inc. DS70134F_CN 第 31 页

Page 32: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

4.2 存储模型编译选项

在应用程序中使用尾长选项为 128 ms 的 AEC 库时,应指示编译器使用大存储模型,步 骤如下。

1. 从 MPLAB IDE 菜单中选择 Project>Build Options>Project (项目 > 编译选项 > 项目)。

2. 单击 MPLAB C30 选项卡并设置以下选项:

a) 从 Categories(类别)下拉列表中选择 Memory Model(存储模型),如图 4-1 所示。

图 4-1: 项目编译选项

b) 在 Data Model(数据模型)部分中,选择 Large data model(大数据模型), 如图 4-2 所示。

DS70134F_CN 第 32 页 © 2011 Microchip Technology Inc.

Page 33: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

图 4-2: 编译器存储模型设置

3. 单击 Apply (应用),然后单击 OK (确定)。

这将完成此步骤。

© 2011 Microchip Technology Inc. DS70134F_CN 第 33 页

Page 34: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

4.3 AEC 算法概述

本节介绍 AEC 算法。图 4-3 所示的概念框图说明了 AEC 算法的工作原理。

图 4-3: AEC 算法功能模块

AEC 算法可分成以下几个功能模块:

• 归一化 小均方 (NLMS)自适应滤波器

• 双端发声检测器 (Double Talk Detector, DTD)

• 非线性处理器 (NLP)• 啸声控制

典型 AEC 系统包含以下信号:

• 远端语音接收输入 (RIN)

• 近端语音发送输出 (SOUT)

• 远端语音输出 (ROUT),通常发送到本地扬声器

• 近端语音输入 (SIN),通常从本地话筒接收

在近端扬声器和话筒之间没有充分声学分离的系统中,SIN 信号不仅包含话筒输入信号(一般是近端讲话者的语音),还包含扬声器到话筒的声学路径产生的无用回声。然后此信号通过通信通道(有线或无线)发送到远端,结果是远端的收听者会听到自己语音的明显回声。传统上,通过在任何时间只允许一个人讲话(即,不允许“双端发声”)来避免此问题。

AEC 算法由一个自适应滤波器和各种相关控制功能组成,不仅能消除声学回声,还允许双端发声(即,全双工工作)。此算法对产生回声的相同通信节点进行操作。AEC 算法中与 NLMS 自适应滤波器配合使用的控制功能模块有双端发声检测器、非线性处理器和啸声控制。

归一化小均方

(NLMS)自适应滤波器

非线性处理器

(NLP)啸声控制

双端发声检测器

SIN

ROUT RIN

SOUT

从扬声器话筒的

路径

(DTD)

到声学

DS70134F_CN 第 34 页 © 2011 Microchip Technology Inc.

Page 35: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

4.3.1 归一化 小均方 (NLMS)自适应滤波器

NLMS是用于估算和消除声学回声的基本自适应算法。此滤波器会尽可能减小SIN和RIN信号之间的均方误差。在没有双端发声的情况下,这将产生一组模拟、跟踪扬声器和话筒之间声学路径的滤波器系数。从而,滤波器产生 RIN 的回声估计值,然后从 SIN 信号中减去该估计值。

4.3.2 非线性处理器 (NLP)AEC 算法本身可能无法充分建模可产生明显非线性失真的回声路径。这就需要使用非线性处理器。 NLP 的功能是充分抑制留在 NLMS 自适应滤波器输出的剩余回声,这样即使回声路径为非线性,仍然可以实现非常低的返回回声。 NLP 位于 NLMS 滤波器输出与系统的 SOUT 端口之间的发送路径中。NLP 基本上可以使低幅值信号(被认为是剩余回声)衰减,并让高幅值信号(被认为是所需近端语音)通过。

AEC 库提供两个使用 NLP 的函数。 EC_applyNLP() 函数对输入缓冲区应用 NLP 操作。 EC_setNLPLevel()函数用于改变衰减级别。

4.3.3 啸声控制

啸声是全双工通信中的典型问题。它产生于声学反馈路径。降低啸声的一种方法是先将话筒接收到的信号的频率偏移 10 Hz 至 20 Hz,然后再通过通信通道发送。这种频移通常会 使声音听起来不自然。频移信号出现在目标扬声器后会返回到始发端,并再次频移 10 Hz 至 20 Hz。信号多次通过声学路径并快速移出通带,从而减少令人不快的反馈问题。

AEC 库提供了函数 EC_setHowlingControl()来使能和禁止啸声控制。

4.3.4 双端发声检测器 (DTD)

双端发声是两侧的讲话者(RIN 和 SIN)同时讲话时的情况。在双端发声期间,信号 SIN作为不相关的噪声,可能会导致 NLMS 自适应滤波器的系数发生偏差,从而使声学回声无法被有效消除。为防止出现这种情况,在远端和近端语音同时存在时使用 DTD 禁止滤波器自适应。DTD 也会禁止 NLP 的操作以防止近端语音损失。在此算法中,使用基于能量的双端发声检测器,当SOUT的平均能量大于RIN的平均能量时将检测双端发声。

AEC 库提供了两个函数 EC_setDoubleTalkHangover()和EC_setAdaptionHangover()控制DTD拖尾延迟保护值。双端发声拖尾延迟保护表示在检测到双端发声后,AEC 算法恢复应用 NLP 之前将等待的帧数。例如,如果拖尾延迟保护值为 6,则算法再次应用 NLP 之前将等待 6 帧。

自适应拖尾延迟保护由 EC_setAdaptionHangover()控制。此函数的默认值为 1,因此在双端发声结束后自适应会继续一帧。

© 2011 Microchip Technology Inc. DS70134F_CN 第 35 页

Page 36: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

4.4 函数库的使用

AEC 算法设计为可用于可重入环境。这使得该算法可处理多个独立音频通道,每个通道均具有自己的设置和参数。要使用 AEC 库,需要执行以下编码步骤:

1. 设置回声尾长:在文件 ec_api.h中,将 EC_ECHOTAIL的值设置为所需的回声尾长。有效值为 8 ms、16 ms、32 ms、64 ms 和 128 ms。请注意,设置无效值 将导致 EC_init()函数返回 EC_ORDERERROR值。此编码步骤如例 4-1 所示。

例 4-1: 设置回声尾长

步骤 2 至步骤 6 应在用户应用程序中执行。所需实际代码请参见例 4-2。2. 为 AEC 算法状态保持器分配存储区:此存储区是 X 存储区中与 2 字节地址边界对

齐的整型数组。EC_XSTATE_MEM_SIZE_INT宏指定此数组的大小。每个要处理的音频通道都需要有自己的状态保持器。

3. 为 AEC 算法 X 和 Y 临时存储区分配存储区:X 临时存储区是 X 存储区中与 4 字节地址边界对齐的整型数组。Y 临时存储区是 Y 存储区中与 2 字节地址边界对齐的整型数组。多个音频通道可共享相同的临时存储区。

4. 初始化每个音频通道的 AEC 算法状态:使用 EC_init()函数初始化每个音频通道的声学回声消除状态。

5. 对音频帧应用 AEC:使用 EC_apply() 函数对音频帧执行回声消除。即使某个帧不需要使用 AEC 算法进行处理,也仍然应该调用该函数,只是将使能参数设置为EC_FALSE。这样AEC算法会继续自适应音频帧中的回声。音频帧则不受影响。

6. 使用 NLP 函数:使用 EC_applyNLP()函数抑制剩余回声。

.

.

.#ifndef __EC_API_H__#define __EC_API_H__

/* Set the desired echo tail length */#define EC_ECHOTAIL 64 /* Step 1 */

// Nothing below this line should be changed#define EC_FRAME 80#define EC_FALSE 0#define EC_TRUE 1...

注: 在某些 dsPIC33E 器件中,Y 存储区位于 EDS 中。在这种情况下,Y 临时存储区数组必须标记有 __eds__关键字并被分配 eds属性。

DS70134F_CN 第 36 页 © 2011 Microchip Technology Inc.

Page 37: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

例 4-2: 函数库使用示例

4.5 寄存器的使用

dsPIC DSC 声学回声消除库使用并修改 MODCON、 CORCON、 XMODSRT、XMODEND、 YMODSRT、 YMODEND 和 PSVPAG 寄存器。要保存这些寄存器的值,在函数库使用这些寄存器之后,将它们恢复为原始值。如果应用程序在中断服务程序(ISR)中修改这些寄存器,则应用程序必须在进入和退出 ISR 时保存并恢复这些寄存器。这样会防止 ISR 破坏执行现场,特别是在执行库函数时发生中断的情况下。

ISR 可通过程序空间可视性(Program Space Visibility,PSV)读操作来访问程序存储 器中的常量。对于 dsPIC33F,建议在使用 AEC 库时应用程序明确管理 PSV 操作。应用程序应确保使能 PSV 访问且 PSVPAG 寄存器包含所需值。对于 dsPIC33E,该函数库不使用 PSV。

// Channel 1 memory structures.int ecStateMemX1 [EC_XSTATE_MEM_SIZE_INT] _XBSS(2); /* Step 2 */

// Channel 2 memory structuresint ecStateMemX2 [EC_XSTATE_MEM_SIZE_INT] _XBSS(2); /* Step 2 */

// Each instance can share the same X and Y scratch memoryint ecScratchX [EC_XSCRATCH_MEM_SIZE_INT] _XBSS(2); /* Step 3 */int ecScratchY [EC_YSCRATCH_MEM_SIZE_INT] _YBSS(2); /* Step 3 */...void main(){

EC_init(ecStateMemX1, ecScratchX, EC_ORDER); /* Step 4 */EC_init(ecStateMemX2, ecScratchX, EC_ORDER); /* Step 4 */...While(1){

EC_apply(ecStateMemX1, ecScratchY, nearEndIn1, farEndIn1, EC_TRUE); /* Step 5 */EC_applyNLP(ecStateMemX1, nearEndIn1, EC_TRUE); /* Step 6 */

EC_apply(ecStateMemX2, ecScratchY, nearEndIn2, farEndIn2, EC_TRUE); /* Step 5 */EC_applyNLP(ecStateMemX2, nearEndIn2, EC_TRUE); /* Step 6 */

}}

© 2011 Microchip Technology Inc. DS70134F_CN 第 37 页

Page 38: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

4.6 资源需求

在 dsPIC DSC 器件上运行 AEC 库时,需要以下资源。

表 4-1: 程序存储器使用情况

表 4-2: 数据存储器使用情况(64 ms 回声尾长)

表 4-3: 估算的动态存储器使用情况

表 4-4: 计算速度

4.6.1 数据格式

nearEndIn和farEndIn的数据类型可以是10位、12位或16位线性PCM数据。AEC算法会针对使用的数据格式自动进行调整。

类型 大小(字节) 段

程序存储器中的代码 6810 (dsPIC30F/dsPIC33F)7032 (dsPIC33E)

.libec

程序存储器中的表 2154 (dsPIC30F/dsPIC33F)0 (dsPIC33E)

.const

程序存储器合计 8964 (dsPIC30F/dsPIC33F)7032 (dsPIC33E)

函数 大小(字节) 对齐 段

ecStateMemX 2240 2 X 数据存储区

scratchMemX 1504 2 X 数据存储区

scratchMemY 1184 2 Y 数据存储区

nearEndIn 160 2 X 或 Y 数据存储区

farEndIn 160 2 X 或 Y 数据存储区

数据存储器中的表 0 (dsPIC30F/dsPIC33F)1436 (dsPIC33E)

2 X 数据存储区

数据存储器合计 5248 (dsPIC30F/dsPIC33F)6684 (dsPIC33E)

— —

段 大小(字节)

堆 0

堆栈 < 300

函数 回声尾长 MIPS 典型调用频率

EC_init() 全部 < 0.5 一次

EC_apply() + EC_applyNlP() 8 3 10 ms

EC_apply() + EC_applyNlP() 16 5 10 ms

EC_apply() + EC_applyNlP() 32 8 10 ms

EC_apply() + EC_applyNlP() 64 14 10 ms

EC_apply() + EC_applyNlP() 128 27 10 ms

所有其他函数 全部 小 根据需要

注: 使能啸声控制功能需要额外的 8 MIPS。

DS70134F_CN 第 38 页 © 2011 Microchip Technology Inc.

Page 39: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

4.7 AEC 库 API 函数

本节将列出并介绍 dsPIC DSC 声学回声消除库中提供的 API 函数。下面列出了这些函 数以及各自的详细说明。

• EC_init• EC_relocateXScratchMem• EC_apply• EC_applyNLP• EC_setNLPLevel• EC_getNLPLevel• EC_setDoubleTalkHangover• EC_getDoubleTalkHangover• EC_setAdaptionHangover• EC_getAdaptionHangover• EC_setHowlingControl• EC_getHowlingControl• EC_setForceAdapt• EC_getForcedAdapt• EC_setInhibitAdaption• EC_getInhibitAdaption• EC_estimateERLE• EC_TRUE• EC_FALSE• EC_FRAME• EC_ECHOTAIL• EC_ORDER• EC_XSTATE_MEM_SIZE_INT• EC_XSCRATCH_MEM_SIZE_INT• EC_YSCRATCH_MEM_SIZE_INT• EC_DOUBLETALKHANGOVERDEFAULT• EC_ADAPTIONHANGOVERDEFAULT• EC_NLPLEVELDEFAULT• EC_HOWLINGCONTROLDEFAULT• EC_FORCEADAPTDEFAULT• EC_ORDERERROR• EC_OK

© 2011 Microchip Technology Inc. DS70134F_CN 第 39 页

Page 40: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

EC_init

说明

初始化 AEC 算法。

包含文件

ec_api.h

原型

int EC_init(int* ptrStateX, int* xScratchMem, int order);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

xScratchMem 指向 AEC 算法在 X RAM 中使用的临时存储区的指针

order 表示滤波器阶数 (EC_ORDER)的整型数

返回值

EC_OK 如果 EC_ORDER的值正确

EC_ORDERERROR 如果 EC_ORDER的值不正确

备注

阶数值可以设置为 ec_api.h 中的宏 EC_ORDER,该宏可根据所需回声尾长计算滤波器阶数。

代码示例

int ecStateMemX [EC_XSTATE_MEM_SIZE_INT] _XBSS(2); int ecScratchX [EC_XSCRATCH_MEM_SIZE_INT] _XBSS(2);int ecScratchY [EC_YSCRATCH_MEM_SIZE_INT] _YBSS(2);...EC_init(ecStateMemX, ecScratchX, EC_ORDER);

DS70134F_CN 第 40 页 © 2011 Microchip Technology Inc.

Page 41: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

EC_relocateXScratchMem

说明

更改 AEC 算法使用的 X 临时存储缓冲区。

包含文件

ec_api.h

原型

void EC_relocateXScratchMem(int* ptrStateX, int* xScratchMem);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

xScratchMem 指向 AEC 算法使用的新的 X 临时存储区的指针

返回值

无。

备注

重定位 X 临时存储区之后, AEC 库不再使用旧的临时存储区。

代码示例

int ecStateMemX [EC_XSTATE_MEM_SIZE_INT] _XBSS(2); int ecScratchX [EC_XSCRATCH_MEM_SIZE_INT] _XBSS(2);int ecScratchX2 [EC_XSCRATCH_MEM_SIZE_INT] _XBSS(2);int ecScratchY [EC_YSCRATCH_MEM_SIZE_INT] _YBSS(2);...EC_init(ecStateMemX, ecScratchX, EC_ORDER);

AEC 算法正在将 ecScratchX用作临时存储区。

.

.

.EC_relocateXScratchMem(ecStateMemX, ecScratchX2);

AEC 算法正在将 ecScratchX2用作临时存储区。

© 2011 Microchip Technology Inc. DS70134F_CN 第 41 页

Page 42: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

EC_apply

说明

对当前数据帧应用声学回声消除。

包含文件

ec_api.h

原型

void EC_apply(int* ptrStateX, int* yScratchMem, int* nearEndIn, int* farEndIn, int enable);

参数

ptrStateX 指向本 AEC 实例的 X 存储区的指针

yScratchMem 指向 AEC 算法在 Y RAM 中使用的临时存储区的指针

nearEndIn 指向存储近端语音输入(SIN)信号,大小为 EC_FRAME的缓冲区 的指针。此缓冲区可以在 X 存储区中,也可以在 Y 存储区中

farEndIn 指向存储远端语音接收输入 (RIN)信号,大小为 EC_FRAME的 缓冲区的指针。此缓冲区可以在 X 存储区中,也可以在 Y 存储区中

enable 指示此缓冲区是否需要 AEC 的标志 (EC_TRUE或 EC_FALSE)

返回值

无。

备注

AEC 算法就地处理数据,这意味着输出传递回输入缓冲区。将 Enable 设置为 EC_FALSE会返回未处理的数据缓冲区,但 AEC 算法仍会针对数据自适应。

代码示例

int ecStateMemX [EC_XSTATE_MEM_SIZE_INT] _XBSS(2); int ecScratchY [EC_YSCRATCH_MEM_SIZE_INT] _YBSS(2);int ecScratchX [EC_XSCRATCH_MEM_SIZE_INT] _XBSS(2);...EC_init(ecStateMemX, ecScratchX, EC_ORDER);...EC_apply(ecStateMemX, ecScratchY, nearEndIn, farEndIn, EC_TRUE);

DS70134F_CN 第 42 页 © 2011 Microchip Technology Inc.

Page 43: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

EC_applyNLP

说明

对当前数据帧应用声学回声消除的 NLP 部分。

包含文件

ec_api.h

原型

void EC_applyNLP(int* ptrStateX, int* nearEndIn, int enable);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

nearEndIn 指向大小为 EC_FRAME的输入 / 输出缓冲区的指针

enable 指示此缓冲区是否需要 NLP 的标志 (EC_TRUE或 EC_FALSE)

返回值

无。

备注

无。

代码示例

int ecStateMemX [EC_XSTATE_MEM_SIZE_INT] _XBSS(2); int ecScratchY [EC_YSCRATCH_MEM_SIZE_INT] _YBSS(2);int ecScratchX [EC_XSCRATCH_MEM_SIZE_INT] _XBSS(2);...EC_init(ecStateMemX, ecScratchX, EC_ORDER);...EC_apply(ecStateMemX, ecScratchY, nearEndIn, farEndIn, EC_TRUE);EC_applyNLP(ecStateMemX, nearEndIn, EC_TRUE);

© 2011 Microchip Technology Inc. DS70134F_CN 第 43 页

Page 44: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

EC_setNLPLevel

说明

设置所需的 NLP 级别。

包含文件

ec_api.h

原型

void EC_setsetNLPLevel(int* ptrStateX, int level);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

level 介于 0 和 15 之间的整型值,表示所需的 NLP 级别

返回值

无。

备注

值每变化 1 表示 NLP 级别变化 6 dB。因此,值为 3 表示 NLP 级别为 18 dB。

代码示例

EC_setNLPLevel(ecStateMemX, 3);

将算法实例 ecStateMemX所需的 NLP 级别设置为 3。

DS70134F_CN 第 44 页 © 2011 Microchip Technology Inc.

Page 45: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

EC_getNLPLevel

说明

返回当前 NLP 级别。

包含文件

ec_api.h

原型

int EC_getNLPLevel(int* ptrStateX);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

返回值

算法实例 ecStateMemX的当前 NLP 级别 (整型)。

备注

无。

代码示例

int nlpLevel;nlpLevel = EC_getNLPLevel(ecStateMemX);

nlpLevel包含算法实例 ecStateMemX的当前 NLP 级别。

© 2011 Microchip Technology Inc. DS70134F_CN 第 45 页

Page 46: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

EC_setDoubleTalkHangover

说明

设置 AEC 算法的双端发声检测部分的拖尾延迟保护值。

包含文件

ec_api.h

原型

void EC_setDoubleTalkHangover(int* ptrStateX, int frames);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

frames 从 1 到 100 的整型值,表示所需的双端发声拖尾延迟保护值

返回值

无。

备注

双端发声拖尾延迟保护用于调整双端发声检测期间的迟滞。值越大,双端发声检测保持有效的时间越长。将双端发声拖尾延迟保护设置为 1将禁止迟滞。

代码示例

EC_setDoubleTalkHangover(ecStateMemX, 10);

将算法实例 ecStateMemX 所需的双端发声拖尾延迟保护设置为 10 帧(表示 100 ms 的数据)。

DS70134F_CN 第 46 页 © 2011 Microchip Technology Inc.

Page 47: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

EC_getDoubleTalkHangover

说明

返回当前的双端发声检测拖尾延迟保护值。

包含文件

ec_api.h

原型

int EC_getDoubleTalkHangover(int* ptrStateX);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

返回值

当前的双端发声检测拖尾延迟保护值。

备注

无。

代码示例

int doubleTalkHangover;doubleTalkHangover = EC_getDoubleTalkHangover(ecStateMemX);

doubleTalkHangover包含为算法实例ecStateMemX设置的双端发声检测拖尾延迟保护值。

© 2011 Microchip Technology Inc. DS70134F_CN 第 47 页

Page 48: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

EC_setAdaptionHangover

说明

设置 AEC 算法的自适应更新部分的拖尾延迟保护值。

包含文件

ec_api.h

原型

void EC_setAdaptionHangover(int* ptrStateX, int frames);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

frames 从 1 到 100 的整型值,表示自适应拖尾延迟保护值

返回值

无。

备注

自适应拖尾延迟保护用于调整自适应更新期间的迟滞。值越大,自适应更新保持有效的时间越长。将自适应拖尾延迟保护设置为 1将禁止迟滞。

代码示例

EC_setAdaptionHangover(ecStateMemX, 3);

将算法实例 ecStateMemX 所需的自适应拖尾延迟保护设置为 3 帧 (表示 30 ms 的 数据)。

DS70134F_CN 第 48 页 © 2011 Microchip Technology Inc.

Page 49: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

EC_getAdaptionHangover

说明

返回当前的自适应拖尾延迟保护值。

包含文件

ec_api.h

原型

int EC_getAdaptionHangover(int* ptrStateX);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

返回值

当前的自适应拖尾延迟保护值。

备注

无。

代码示例

int adaptionHangover;adaptionHangover = EC_getAdaptionHangover(ecStateMemX);

adaptionHangover包含为算法实例 ecStateMemX设置的自适应拖尾延迟保护值。

© 2011 Microchip Technology Inc. DS70134F_CN 第 49 页

Page 50: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

EC_setHowlingControl

说明

使能或禁止啸声控制。

包含文件

ec_api.h

原型

void EC_setHowlingControl(int* ptrStateX, int howlingControl);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

howlingControl 指示是否需要啸声控制的标志 (EC_TRUE或 EC_FALSE)

返回值

无。

备注

无。

代码示例

EC_setHowlingControl(ecStateMemX, EC_TRUE);

针对算法实例 ecStateMemX使能啸声控制。

DS70134F_CN 第 50 页 © 2011 Microchip Technology Inc.

Page 51: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

EC_getHowlingControl

说明

返回啸声控制的当前状态。

包含文件

ec_api.h

原型

int EC_getHowlingControl(int* ptrStateX);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

返回值

返回啸声控制的当前状态。

备注

无。

代码示例

int howlingControl;howlingControl = EC_getHowlingControl(ecStateMemX);

howlingControl包含算法实例 ecStateMemX的啸声控制状态设置。

© 2011 Microchip Technology Inc. DS70134F_CN 第 51 页

Page 52: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

EC_setForceAdapt

说明

使能或禁止 AEC 算法的强制自适应。

包含文件

ec_api.h

原型

void EC_setForceAdapt(int* ptrStateX, int state);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

state EC_TRUE或 EC_FALSE

返回值

无。

备注

无。

代码示例

EC_setForceAdapt(ecStateMemX, EC_TRUE);

针对算法实例 ecStateMemX设置强制自适应。

DS70134F_CN 第 52 页 © 2011 Microchip Technology Inc.

Page 53: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

EC_getForcedAdapt

说明

返回强制自适应的状态。

包含文件

ec_api.h

原型

int EC_getForceAdapt(int* ptrStateX);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

返回值

强制自适应的当前状态。

备注

无。

代码示例

int forceAdapt;forceAdapt = EC_getForceAdapt(ecStateMemX);

forceAdapt包含算法实例 ecStateMemX的强制自适应值设置,即 EC_TRUE或EC_FALSE。

© 2011 Microchip Technology Inc. DS70134F_CN 第 53 页

Page 54: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

EC_setInhibitAdaption

说明

设置禁止自适应的状态。

包含文件

ec_api.h

原型

void EC_setInhibitAdaption(int* ptrStateX, int state);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

state EC_TRUE或 EC_FALSE

返回值

无。

备注

无。

代码示例

EC_setInhibitAdaption(ecStateMemX, EC_TRUE);

阻止算法实例 ecStateMemX自适应。

DS70134F_CN 第 54 页 © 2011 Microchip Technology Inc.

Page 55: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

EC_getInhibitAdaption

说明

返回禁止自适应的状态。

包含文件

ec_api.h

原型

long EC_getInhibitAdaption(int* ptrStateX);

参数

ptrStateX 指向本 AEC 实例的状态存储区的指针

返回值

EC_TRUE 如果禁止自适应

EC_FALSE 如果不禁止自适应

备注

无。

代码示例

long inhibitAdaption;inhibitAdaption = EC_getInhibitAdaption(ecStateMemX);

inhibitAdaption包含算法实例ecStateMemX的禁止自适应值设置,即EC_TRUE或EC_FALSE。

© 2011 Microchip Technology Inc. DS70134F_CN 第 55 页

Page 56: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

EC_estimateERLE

说明

估算回声返回损耗增强 (Echo Return Loss Enhancement, ERLE)。

包含文件

ec_api.h

原型

int EC_estimateSNR(int* preEC, int* postEC);

参数

preEC 指向应用 AEC 算法之前的数据缓冲区的指针

postEC 指向应用 AEC 算法之后的数据缓冲区的指针

返回值

ERLE 的估算值。

备注

这是当前数据帧 ERLE 的粗略估算值。

代码示例

int erle;for (i = 0; i < EC_FRAME; i++){ nearEndBefore[i] = nearEndIn[i];}EC_apply(ecStateMemX, ecScratchY, nearEndIn, farEndIn, EC_TRUE);EC_applyNLP(ecStateMemX, nearEndIn, EC_TRUE);erle = EC_estimateSNR(nearEndBefore, nearEndIn);

erle包含 ERLE 的估算值(以 dB 为单位)。

DS70134F_CN 第 56 页 © 2011 Microchip Technology Inc.

Page 57: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

EC_TRUE

说明

用于向 AEC 算法指示真 (true)。

1

EC_FALSE

说明

用于向 AEC 算法指示假 (false)。

0

EC_FRAME

说明

处理的输入缓冲区的大小。

80

EC_ECHOTAIL

说明

所需的回声尾长的长度 (8 ms、 16 ms、 32 ms、 64 ms 或 128 ms)。

64

© 2011 Microchip Technology Inc. DS70134F_CN 第 57 页

Page 58: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

EC_ORDER

说明

处理的输入缓冲区的大小。

(EC_ECHOTAIL * 8)

EC_XSTATE_MEM_SIZE_INT

说明

X 状态存储区所需的存储空间的大小 (整型)。

((EC_ORDER * 2) + 96)

EC_XSCRATCH_MEM_SIZE_INT

说明

X 临时存储区所需的存储空间的大小 (整型)。

(EC_ORDER + (EC_FRAME * 3))

EC_YSCRATCH_MEM_SIZE_INT

说明

Y 临时存储区所需的存储空间的大小 (整型)。

(EC_ORDER + EC_FRAME)

DS70134F_CN 第 58 页 © 2011 Microchip Technology Inc.

Page 59: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

EC_DOUBLETALKHANGOVERDEFAULT

说明

双端发声拖尾延迟保护值(以帧为单位)。

3

EC_ADAPTIONHANGOVERDEFAULT

说明

默认自适应拖尾延迟保护值 (以帧为单位)。

1

EC_NLPLEVELDEFAULT

说明

默认 NLP 衰减值 (EC_NLPLEVELDEFAULT * 6 dB)。

3

EC_HOWLINGCONTROLDEFAULT

说明

啸声控制模块的布尔状态值。

EC_FALSE

© 2011 Microchip Technology Inc. DS70134F_CN 第 59 页

Page 60: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

EC_FORCEADAPTDEFAULT

说明

用于使能强制自适应的布尔值。

EC_FALSE

EC_ORDERERROR

说明

EC_init的返回值,指示指定的阶数无效。

0x8001

EC_OK

说明

EC_init的返回值,指示指定的阶数有效。

0x0000

DS70134F_CN 第 60 页 © 2011 Microchip Technology Inc.

Page 61: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

应用程序编程接口(API)

4.8 应用技巧

尽管AEC算法会尽可能抑制系统中的回声,但还可以通过适当选择参数来优化其性能。一般来说,我们鼓励使用此函数库进行实验。

下面是一些有关影响算法性能的技巧:

1. 通常认为用于测试音频和通信系统的 佳输入信号级别在 -10 dBm0和 -30 dBm0 之间。如果数字输入语音信号的峰值达到满量程的四分之三,则说明充分利用了可用精度;高于此值的语音信号会产生限幅的风险。

2. 选择 适合应用的 NLP 级别。非常高的 NLP 级别不仅会抑制剩余回声,而且可能在一定程度上降低语音信号大小。

3. 可以使用双端发声检测拖尾延迟保护来调整AEC算法在向发送信号应用NLP之前所等待的时间窗口。如果应用遇到前沿语音削波,则尝试增加 DTD 拖尾延迟保护。

4. 可以使用自适应拖尾延迟保护来调整自适应拖尾延迟保护更新保持有效的时间窗口。在语音信号较低而可能检测不到双端发声的情况下,可调整此参数。

5. 在近端周围声音环境含有噪声的情况(如移动电话和汽车免提设备)下,噪声级别可能会导致双端发声检测被激活,从而禁止自适应。在这种情况下,可强制AEC 算法始终自适应,这可以提高整体系统性能。

6. 用户应用不应该禁止自适应。此功能仅用于测试和合规性检查用途。

© 2011 Microchip Technology Inc. DS70134F_CN 第 61 页

Page 62: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

注:

DS70134F_CN 第 62 页 © 2011 Microchip Technology Inc.

Page 63: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

dsPIC® DSC 声学回声消除库用户指南

索引

AAPI 函数 ............................................................................39

EC_ADAPTIONHANGOVERDEFAULT ..............59EC_apply ..............................................................42EC_applyNLP ......................................................43EC_DOUBLETALKHANGOVERDEFAULT ........59EC_ECHOTAIL ......................................................57EC_estimateERLE ...........................................56EC_FALSE ..............................................................57EC_FORCEADAPTDEFAULT ..............................60EC_FRAME ..............................................................57EC_getAdaptionHangover.........................49EC_getDoubleTalkHangover ...................47EC_getForceAdapt .........................................53EC_getHowlingControl ..............................51EC_getInhibitAdaption ...........................55EC_getNLPLevel ..............................................45EC_HOWLINGCONTROLDEFAULT ...................59EC_init .................................................................40EC_NLPLEVELDEFAULT ...................................59EC_OK ......................................................................60EC_ORDER ..............................................................58EC_ORDERERROR .................................................60EC_relocateXScratchMem.........................41EC_setAdaptionHangover.........................48EC_setDoubleTalkHangover ...................46EC_setForceAdapt .........................................52EC_setHowlingControl ..............................50EC_setInhibitAdaption ...........................54EC_setNLPLevel ..............................................44EC_TRUE .................................................................57EC_XSCRATCH_MEM_SIZE_INT ...................58EC_XSTATE_MEM_SIZE_INT.........................58EC_YSCRATCH_MEM_SIZE_INT ...................58

安装安装函数库................................................................17

B保修登记 ..............................................................................7

FFIR 滤波器 ........................................................................14

G概述

声学回声消除............................................................13归一化 小均方(NLMS) 自适应滤波器................................................................35非线性处理器............................................................35双端发声检测器(DTD).......................................35啸声控制....................................................................35

归一化 小均方算法........................................................14

H互联网地址 ......................................................................... 8

K客户通知服务 ..................................................................... 9客户支持 ............................................................................. 9库文件

demo文件夹............................................................18doc文件夹 ..............................................................19h文件夹....................................................................19lib文件夹 ..............................................................19

MMicrochip 互联网网站 ....................................................... 8

NNLMS ................................................................................14

Q器件支持 ...........................................................................15

S声学回声消除

典型应用 ...................................................................14算法

归一化 小均方(NLMS)....................................14

T推荐读物 ............................................................................. 7

WWWW 地址 ......................................................................... 8文档

编排 ............................................................................. 5约定 ............................................................................. 6

Y演示步骤 .................................................................... 24, 29演示代码说明 ............................................................ 25, 30演示设置 .................................................................... 22, 28演示摘要 .................................................................... 21, 27

Z主机系统要求 ...................................................................15资源需求

程序存储器使用情况 ...............................................38估算的动态存储器使用情况 ...................................38计算速度 ...................................................................38数据存储器使用情况 ...............................................38

© 2011 Microchip Technology Inc. DS70134F_CN 第 63 页

Page 64: dsPIC DSC 声学回声消除库 用户指南 - Microchip …ww1.microchip.com/downloads/cn/DeviceDoc/70134f_cn.pdf的英文部分,因为其中提供了有关Microchip 产品性能和使用

DS70134F_CN 第 64 页 © 2011 Microchip Technology Inc.

美洲公司总部 Corporate Office2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel: 1-480-792-7200 Fax: 1-480-792-7277技术支持:

http://www.microchip.com/support网址:www.microchip.com亚特兰大 AtlantaDuluth, GA Tel: 1-678-957-9614Fax:1-678-957-1455波士顿 BostonWestborough, MA Tel: 1-774-760-0087 Fax: 1-774-760-0088芝加哥 ChicagoItasca, IL Tel: 1-630-285-0071 Fax: 1-630-285-0075克里夫兰 ClevelandIndependence, OH Tel: 1-216-447-0464 Fax: 1-216-447-0643达拉斯 DallasAddison, TX Tel: 1-972-818-7423 Fax: 1-972-818-2924底特律 DetroitFarmington Hills, MI Tel: 1-248-538-2250Fax: 1-248-538-2260印第安纳波利斯IndianapolisNoblesville, IN Tel: 1-317-773-8323Fax: 1-317-773-5453洛杉矶 Los AngelesMission Viejo, CA Tel: 1-949-462-9523 Fax: 1-949-462-9608

圣克拉拉 Santa ClaraSanta Clara, CA Tel: 1-408-961-6444Fax: 1-408-961-6445加拿大多伦多 TorontoMississauga, Ontario, CanadaTel: 1-905-673-0699 Fax: 1-905-673-6509

亚太地区

亚太总部 Asia Pacific OfficeSuites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel: 852-2401-1200Fax: 852-2401-3431中国 - 北京Tel: 86-10-8569-7000Fax: 86-10-8528-2104

中国 - 成都Tel: 86-28-8665-5511Fax: 86-28-8665-7889

中国 - 重庆Tel: 86-23-8980-9588Fax: 86-23-8980-9500

中国 - 杭州Tel: 86-571-2819-3187Fax: 86-571-2819-3189

中国 - 香港特别行政区Tel: 852-2401-1200 Fax: 852-2401-3431

中国 - 南京Tel: 86-25-8473-2460Fax: 86-25-8473-2470

中国 - 青岛Tel: 86-532-8502-7355 Fax: 86-532-8502-7205

中国 - 上海Tel: 86-21-5407-5533 Fax: 86-21-5407-5066

中国 - 沈阳Tel: 86-24-2334-2829 Fax: 86-24-2334-2393

中国 - 深圳Tel: 86-755-8203-2660 Fax: 86-755-8203-1760

中国 - 武汉Tel: 86-27-5980-5300 Fax: 86-27-5980-5118

中国 - 西安Tel: 86-29-8833-7252Fax: 86-29-8833-7256中国 - 厦门Tel: 86-592-238-8138Fax: 86-592-238-8130中国 - 珠海Tel: 86-756-321-0040 Fax: 86-756-321-0049

亚太地区

台湾地区 - 高雄Tel: 886-7-536-4818Fax: 886-7-330-9305台湾地区 - 台北Tel: 886-2-2500-6610Fax: 886-2-2508-0102

台湾地区 - 新竹Tel: 886-3-5778-366Fax: 886-3-5770-955

澳大利亚 Australia - SydneyTel: 61-2-9868-6733 Fax: 61-2-9868-6755

印度 India - BangaloreTel: 91-80-3090-4444 Fax: 91-80-3090-4123

印度 India - New DelhiTel: 91-11-4160-8631Fax: 91-11-4160-8632

印度 India - PuneTel: 91-20-2566-1512Fax: 91-20-2566-1513

日本 Japan - YokohamaTel: 81-45-471- 6166 Fax: 81-45-471-6122韩国 Korea - DaeguTel: 82-53-744-4301Fax: 82-53-744-4302

韩国 Korea - SeoulTel: 82-2-554-7200 Fax: 82-2-558-5932 或82-2-558-5934

马来西亚 Malaysia - Kuala LumpurTel: 60-3-6201-9857Fax: 60-3-6201-9859

马来西亚 Malaysia - PenangTel: 60-4-227-8870Fax: 60-4-227-4068

菲律宾 Philippines - ManilaTel: 63-2-634-9065Fax: 63-2-634-9069新加坡 SingaporeTel: 65-6334-8870 Fax: 65-6334-8850

泰国 Thailand - BangkokTel: 66-2-694-1351Fax: 66-2-694-1350

欧洲奥地利 Austria - WelsTel: 43-7242-2244-39Fax: 43-7242-2244-393丹麦 Denmark-CopenhagenTel: 45-4450-2828 Fax: 45-4485-2829法国 France - ParisTel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79德国 Germany - MunichTel: 49-89-627-144-0 Fax: 49-89-627-144-44意大利 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781荷兰 Netherlands - DrunenTel: 31-416-690399 Fax: 31-416-690340西班牙 Spain - MadridTel: 34-91-708-08-90Fax: 34-91-708-08-91英国 UK - WokinghamTel: 44-118-921-5869Fax: 44-118-921-5820

全球销售及服务网点

08/02/11