一 、因为Windows不是实时操作系统,造成声卡的录音、放音他们之间有一定

时间的延时,而且这个延时的时间长每台电脑可能都不一样 。从而给回音

消除增加一定的难度,再加上房间的大小造成声音反射也不一样,更增加

回音消除的难道、复杂性 。

二、Speex 回音消除模块

Speex语音是一个开源/免费软件专利的自由音频压缩格式的语音而设计。该项目旨

在降低Speex语音的供提供免费替代昂贵的专有语音编码语音应用进入壁垒。此外,

Speex语音可适应互联网的应用,并提供有用的功能是不存在于大多数其他编解码器。

最后,Speex语音是GNU工程的一部分,是根据经修订的BSD许可证发布的。

技术

Speex语音是基于CELP的,旨在在语音压缩比特率从2到44 kbps的。对Speex语音的

功能包括:

窄带(8千赫),宽带(16千赫)和超宽带(32千赫)在同一个码流压缩

强度立体声编码

数据包丢失隐藏

可变比特率操作(VBR业务)

语音活动检测(VAD)

间断变速器(DTX的)

定点模式

声学回声消除器

噪音抑制

从Speex 的介绍可以看出它提供了回音消除这一功能,现在开源的,比较完善的回音消除模块

就是Speex了,有许多中小公司也拿它作为回音消除功能 。经过测试,Speex的消除效果还是

不错的。期待作者有更好的改进、优化。

下面简单介绍一下Speex回音消除部分的使用方法。

1 先初始化

speex_echo_state_init(m_nFrameSize, m_nFilterLen);

m_nFrameSize 是采样的帧长,   一般是  80   , 160  , 320

m_nFilterLen 是回音消除的尾长 一般是  80*10 ,160*10,320*10

2 擦除处理

speex_echo_cancellation(m_pState,( __int16 *) mic, ( __int16 *)ref,( __int16 *) out);

m_pState         是擦除句柄

mic              是录音录取到的数据

ref              是放音的数据

out              是经过擦除后的数据

3 销毁擦除句柄

speex_echo_state_destroy(m_pState);

三 、录音、放音

Windows 平台录音、放音 提供了 Win32API 和DSound 这两个模式,Vista ,Win7 提供了

WASAPI ,这种方式比较新,参考的资料少。经过测试比较 还是 Win32api(类似 waveInXXX,

waveOutXXX)的兼容性最好,win2000,win2003,xp,Vista,Win7这些系统 win32api都兼容。

推荐使用win32api进行录音、放音。

一)、录音部分使用步骤

1 打开录音设备

waveInOpen

2 启动录音

waveInStart

3 在录音的回调函数

OnCaptureAudioDataFunction

这里获取到录音的音频数据,这个音频数据用来做回音消除,因为它录取到了喇叭放出的声音。

要把喇叭放出来的声音消除掉。

4 关闭录音句柄

waveInReset  //复位录音

waveInStop   //停止录音

waveInClose  //关闭录音

二) 、放音部分

1 打开放音设备

waveOutOpen

2 播放音频数

::waveOutPrepareHeader();

::waveOutWrite();

3 关闭播放设备

waveOutClose

四)总结

经过多年研究、摸索,证明这样做,回音消除效果不错的,总体来说Speex是一个优秀的回音消除

库,经过艰苦的努力,已经把语音采集,播放,回音消除等等常见的语音部分功能写成一个DLL

有这方面需求的公司、个人可以联系 QQ 1281200395 E-Mail AudioAEC@gmail.com

回音消除 Speex AEC 录音放音同步对齐相关推荐

  1. 基于51单片机的数码录音放音系统设计

    摘  要 随着语言的处理技术在工业生产.交通.通信等方面的运用得到不断创新.数码录音放音系统已得到了越来越多的人的青睐,通过对多种录音放音系统的设计方案进行了比较和分析,本论文最终选定以STC89C5 ...

  2. 转 alsa录音放音执行流程详解

    前言: linux中,无论是oss还是alsa体系,录音和放音的数据流必须分析清楚.先分析alsa驱动层,然后关联到alsa库层和应用层. 链接分析: core/pcm_native.c文件中.mma ...

  3. linux alsa 录音程序,转 alsa录音放音执行流程详解

    前言: linux中,无论是oss还是alsa体系,录音和放音的数据流必须分析清楚.先分析alsa驱动层,然后关联到alsa库层和应用层. 链接分析: core/pcm_native.c文件中.mma ...

  4. C# Naudio 从麦克风输入到声卡输出 录音 放音功能

    本文采用简单的方式,如需使用其他功能,请访问Naudio相关功能 1.using NAudio.Wave;从麦克风输入到声卡输出,并操作数据 //创建输出对象 WaveOut waveOut = ne ...

  5. 双麦定向拾音束回音消除及远场拾音降噪模块 A-68测试1-(原理篇)

    最近手上有个双麦定向拾音束降噪和消回音模块,型号是A-68,一般的降噪处理设备不同的是这个模块可以实现定向拾音.只要找好两个麦克风的夹角就能够很好的屏蔽掉夹角之外的声音,这样的话一些很嘈杂的场景下也能 ...

  6. Android 平台语音通话及回音消除、噪音消除研究

    一 Android平台语音通讯 正因为Android平台优越的性能.美观的界面,越来越多人使用Android手机,从而在Android平台上的 语音通话越来越多.语音通话大概流程如下:我认为一个语音通 ...

  7. Android 平台语音通话及回音消除、噪音消除研究(转)

    一 Android操作系统由来 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平 板电脑,由Google公司和开放手机联盟领导及开发.尚未有统一中文名 ...

  8. 【转】Android 平台语音通话及回音消除、噪音消除研究

    本文转自博客:https://www.cnblogs.com/jianglijs/p/8583603.html -------------------------------------------- ...

  9. 双麦阵列回音消除及降噪模块 A-47设计用和强噪音下实测效果视频

    双麦阵列回音消除及降噪模块 A-47说明书 A-47 是一款高性能的数字语音处理模块,可以针对免提全双工通话中的回音问题进行消除(AEC),并具有优异的环境噪音(ENC)压制功能,让通话设备获得更好的 ...

最新文章

  1. c++ 界面交互影响处理代码执行速度_原创 | 某SCADA的远程代码执行漏洞挖掘与利用...
  2. handler回调主线程_Android使用Handler实现子线程与子线程、子线程与主线程之间通信...
  3. mac 查看端口_如何重置mac上的系统管理控制器smc教程
  4. Windows 2008 R2终端服务器安装配置 支持声卡
  5. 拼图游戏C语言课设实验报告,C语言拼图游戏实验报告.doc
  6. Web前端体系的脉络结构
  7. java 泛型的几点备忘
  8. LeetCode之最大正方形
  9. if __name__ == __main__:什么意思_秒懂Python编程中的if __name__ == 'main' 的作用和原理...
  10. 【十万个编程篇】Linux—Debian系列,deb包首次分析
  11. java 构建树形结构_Java求助:如何建立一个树形结构
  12. 下载官方Intel的Windows 10网卡驱动
  13. Could not clean server of obsolete
  14. 新一代开源免费的轻量级 SSH 终端,非常炫酷好用
  15. mysql 1032_MySQL数据库之MySQL 报错 Last_SQL_Errno: 1032
  16. Incremental Learning of Object Detectors without Catastrophic Forgetting详解
  17. 联通光猫HG2543C1改桥接备忘
  18. 空间机械臂Matlab/Simulink仿真程序自由漂浮空间机械臂(双臂)轨迹跟踪控制matlab仿真程序
  19. 路由器和交换机简单总结(cisco设备)
  20. maven异常记录-must be unique

热门文章

  1. 开机出现 NTLDR is Missing 的解决方法
  2. 新零售的转折点:微信小店小程序
  3. 深入浅出FE(十四)深入浅出websocket
  4. 工业品网络营销的第三方平台的免费信息发布:灌水 上海添力
  5. SCSI/iSCSI及SAS、NAS、SAN的基本介绍
  6. 了解黑客常用的工具,我也能反黑了
  7. 获取苏宁易购商品信息操作详情
  8. 细数最近三年我的租房经历
  9. 什么是项目?项目有哪些特点?
  10. uni-app监听窗口尺寸变化事件和隐藏键盘