开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2014-10-17
详细说明: 一 、因为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 ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.