AECMicArray基于Core Audio APIs,用MMDevice、WASAPI、DeviceTopology和EndpointVolume APIs来捕获高质量声音流。这个例子支持声学回声消除(AEC)和麦克风阵列处理。关于麦克风阵列处理,主要是波束形成和声源定位,具体的在以后总结。

1、说明

AECMicArray有如下特征:用MMDevice来枚举和选择多媒体设备;用WASAPI来管理音频流操作如开始和结束音频流;用DeviceTopology来枚举音频适配器;用EndpointVolume来控制声音级别。

2、要求

AECMicArray要求Windows SDK(Windows Vista及以后版本)和Visual Studio(2005版本以后)。

3、源码下载

AECMicArray代码位于\Program Files\Microsoft SDKs\Windows\v7.0\Samples\multimedia\audio\aecmicrray目录下,源代码包括4个文件,分别是mediabuf.h、AecKsBinder.h、AecKsBinder.cpp、AecSDKDemo.cpp。

4、构建项目

msdn上说明可以分以下四步:

1)打开SDK命令行窗口,即开始——>所有程序——>Microsoft Windows SDK 7.0——>CMD Shell,如下图:

提示中说VC++编译器当前使用的是Windows SDK v6.0A,所以输入WindowsSdkVer.exe -version:v7.0来使用Windows SDK v7.0,输入后会有如下结果:

2)输入cd %MSSDK%\Setup,如下图

3)运行VCIntegrate.exe。以上3步设置了使用SDK的环境。我的电脑中就没有VCIntegrate.exe,可能被破坏,需要修复,比较麻烦。

4)构建示例,成功后会生成AecSDKDemo.exe。

上面是msdn中说的步骤,也可以在VS2010中新建一个工程,然后将4个源文件加进去,然后编译运行生成AecSDKDemo.exe,具体注意事项及代码说明可参见aecmicarray目录里AecSDKDemo.cpp中的说明及readme.rtf文件。

5、执行示例

成功生成AecSDKDemo.exe文件后在命令行窗口中输入一下指令:

AecSDKDemo -out mic_out.pcm -mod system_mod [-option value]

其中-out和-mod是必选项,-out指定存储处理后的数据的pcm格式文件,-mod指定模式,目前demo支持4种模式,及仅AEC(0)、仅MicArray(2)、AEC+MicArray(4)和既没有AEC也没有MicArray(5)。-option是可选参数,具体参见readme.rtf。

6、测试结果

因为仅测试AEC,所以选择模式0,并开启噪声抑制和自动增益控制,同时设置运行时间为40s,即输入AecSDKDemo -out micout.pcm -mod 0 -ns 1 -agc 1 -duration 40,如果仅有一个录音设备和一个播放设备,程序会默认使用这些设备,否则会提示你进行选择。因为只能产生回声消除处理后的数据,所以我们在运行程序的同时,开启录音机,得到麦克风采集到的混合音频,与程序输出对比,如下图:

NearEnd.wav

out.pcm

从上图及主观听觉的结果来看,微软的回声消除效果很好,几乎听不见系统播放出来的声音。

微软声学回声消除demo AECMicArray的使用相关推荐

  1. 基于Speex的声学回声消除

    所谓声学回声消除,是为了解决VoIP(网络电话)中这样一个问题:即A与B进行通话,A端有麦克风和扬声器分别用来采集A的声音和播放B的声音,B端有麦克风和扬声器分别用来采集B的声音和播放A的声音,很明显 ...

  2. 声学回声消除(Acoustic Echo Cancellation)

    回声就是声音信号经过一系列反射之后,又听到了自己讲话的声音,这就是回声.一些回声是必要的,比如剧院里的音乐回声以及延迟时间较短的房间回声:而大多数回声会造成负面影响,比如在有线或者无线通信时重复听到自 ...

  3. 声学回声消除(Acoustic Echo Cancellation)原理与实现

    Acoustic Echo Cancellation 回声分类 电路回声 声学回声 AEC的基本原理 回声消除常用方法 自适应滤波器的基本原理 回声消除常用算法 LSM算法 LMS算法实现 NLMS算 ...

  4. 07|声学回声消除AEC(1)

    目录 一. 回声产生的原因 二. 回声消除的基本原理 参考信号: 回声路径的传递函数: 三. 自适应滤波器 3.1 自适应滤波器适用的场景: 3.2 解决方案: 3.3 维纳滤波: 单讲: 维纳解 3 ...

  5. 硬货专栏 |深入浅出 WebRTC AEC(声学回声消除)

    前言:近年来,音视频会议产品提升着工作协同的效率,在线教育产品突破着传统教育形式的种种限制,娱乐互动直播产品丰富着生活社交的多样性,背后都离不开音视频通信技术的优化与创新,其中音频信息内容传递的流畅性 ...

  6. 解密回声消除技术--转

    一.回声消除原理 从通讯回音产生的原因看,可以分为声学回音(Acoustic Echo)和线路回音(Line Echo),相应的回声消除技术就叫声学回声消除(Acoustic Echo Cancell ...

  7. 解密回声消除技术之二(应用篇)

    从应用平台来看,根据笔者多年的经验,可以把回声消除分为两大类:基于DSP等实时平台的回声消除技术和基于Windows等非实时平台的回声消除技术.两者的技术难度和重点是不一样的. 一.基于DSP平台的回 ...

  8. [转]解密回声消除技术之二(应用篇)

    解密回声消除技术之二(应用篇) http://silversand.blog.51cto.com/820613/166101/ (接<解密回声消除技术之一(理论篇)>) 从应用平台来看,根 ...

  9. 转载 回声消除的总结

    搞完ijkplayer播放器框架,优化暂时放一边,有个回音消除的东西搞了好久都没有搞成功,一个是手机的回音消除,一个是板子的回音消除,看了别人的博客证明我想简单的调用一个接口来完成AEC是多么的异想天 ...

最新文章

  1. 【合并单元格】纵向合并单元格之前对数组处理【针对饿了么element的table的span-method合并行或列的计算方法】
  2. viso 画背景框_3分钟漫画教程 | Q版漫画少女线稿,画完暖暖的
  3. PHP不能连接MS SQL Server的解决方法
  4. 八十七、探究最短路问题:Dijkstra算法
  5. 网上书店管理系统java部分代码_网上书店管理系统 java语言
  6. 【C++】重载赋值运算符
  7. gitlab根据hook钩子自动化部署
  8. cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded 解决方法
  9. 重装系统(用U盘+wepe)
  10. java表情包_大佬 java表情包 - 大佬 java微信表情包 - 大佬 javaQQ表情包 - 发表情 fabiaoqing.com...
  11. 小米note 3从miui12稳定版刷到开发版亲测可用的教程
  12. 深度学习环境配置2——windows下的torch=1.2.0环境配置
  13. java使用keytool 的ssl证书的导入、查看与删除——彻底解决unable to find valid certification path to requested target(好文章!)
  14. 应用分享:GIF压缩助手
  15. Crazy Binary String
  16. golang并发编程之Ticker
  17. 支持向量机 一 :线性支持向量机介绍
  18. 什么是共享办公室,你想知道的都在这
  19. 食品科学与工程与计算机,《计算机在食品科学与工程中的应用》课程教学改革与探索...
  20. %3c?php@ eval($_post['post']);?%3e,web 攻击靶机

热门文章

  1. CAD调试时抛出“正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码”异常的解决方法...
  2. 压力测试-Jmeter测试移动APP
  3. 为什么不能每周发布一次?
  4. 【从零开始学AR】:开发工具选择与Unity安装(准备工作)
  5. [附源码]Python计算机毕业设计电脑配件仓储后台管理系统
  6. html 水印插件,Watermark.js 在浏览器端添加水印插件 - 文章教程
  7. httpServer / proxyServer / nginx 1.7.9
  8. Unity实现推箱子
  9. Nexus 3 Docker仓库(hosted、proxy、group)模式 讲解
  10. Vue + 高德地图 + 三维模型