回音消除 Speex AEC 录音放音同步对齐
一 、因为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 录音放音同步对齐相关推荐
- 基于51单片机的数码录音放音系统设计
摘 要 随着语言的处理技术在工业生产.交通.通信等方面的运用得到不断创新.数码录音放音系统已得到了越来越多的人的青睐,通过对多种录音放音系统的设计方案进行了比较和分析,本论文最终选定以STC89C5 ...
- 转 alsa录音放音执行流程详解
前言: linux中,无论是oss还是alsa体系,录音和放音的数据流必须分析清楚.先分析alsa驱动层,然后关联到alsa库层和应用层. 链接分析: core/pcm_native.c文件中.mma ...
- linux alsa 录音程序,转 alsa录音放音执行流程详解
前言: linux中,无论是oss还是alsa体系,录音和放音的数据流必须分析清楚.先分析alsa驱动层,然后关联到alsa库层和应用层. 链接分析: core/pcm_native.c文件中.mma ...
- C# Naudio 从麦克风输入到声卡输出 录音 放音功能
本文采用简单的方式,如需使用其他功能,请访问Naudio相关功能 1.using NAudio.Wave;从麦克风输入到声卡输出,并操作数据 //创建输出对象 WaveOut waveOut = ne ...
- 双麦定向拾音束回音消除及远场拾音降噪模块 A-68测试1-(原理篇)
最近手上有个双麦定向拾音束降噪和消回音模块,型号是A-68,一般的降噪处理设备不同的是这个模块可以实现定向拾音.只要找好两个麦克风的夹角就能够很好的屏蔽掉夹角之外的声音,这样的话一些很嘈杂的场景下也能 ...
- Android 平台语音通话及回音消除、噪音消除研究
一 Android平台语音通讯 正因为Android平台优越的性能.美观的界面,越来越多人使用Android手机,从而在Android平台上的 语音通话越来越多.语音通话大概流程如下:我认为一个语音通 ...
- Android 平台语音通话及回音消除、噪音消除研究(转)
一 Android操作系统由来 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平 板电脑,由Google公司和开放手机联盟领导及开发.尚未有统一中文名 ...
- 【转】Android 平台语音通话及回音消除、噪音消除研究
本文转自博客:https://www.cnblogs.com/jianglijs/p/8583603.html -------------------------------------------- ...
- 双麦阵列回音消除及降噪模块 A-47设计用和强噪音下实测效果视频
双麦阵列回音消除及降噪模块 A-47说明书 A-47 是一款高性能的数字语音处理模块,可以针对免提全双工通话中的回音问题进行消除(AEC),并具有优异的环境噪音(ENC)压制功能,让通话设备获得更好的 ...
最新文章
- c++ 界面交互影响处理代码执行速度_原创 | 某SCADA的远程代码执行漏洞挖掘与利用...
- handler回调主线程_Android使用Handler实现子线程与子线程、子线程与主线程之间通信...
- mac 查看端口_如何重置mac上的系统管理控制器smc教程
- Windows 2008 R2终端服务器安装配置 支持声卡
- 拼图游戏C语言课设实验报告,C语言拼图游戏实验报告.doc
- Web前端体系的脉络结构
- java 泛型的几点备忘
- LeetCode之最大正方形
- if __name__ == __main__:什么意思_秒懂Python编程中的if __name__ == 'main' 的作用和原理...
- 【十万个编程篇】Linux—Debian系列,deb包首次分析
- java 构建树形结构_Java求助:如何建立一个树形结构
- 下载官方Intel的Windows 10网卡驱动
- Could not clean server of obsolete
- 新一代开源免费的轻量级 SSH 终端,非常炫酷好用
- mysql 1032_MySQL数据库之MySQL 报错 Last_SQL_Errno: 1032
- Incremental Learning of Object Detectors without Catastrophic Forgetting详解
- 联通光猫HG2543C1改桥接备忘
- 空间机械臂Matlab/Simulink仿真程序自由漂浮空间机械臂(双臂)轨迹跟踪控制matlab仿真程序
- 路由器和交换机简单总结(cisco设备)
- maven异常记录-must be unique