织梦CMS - 轻松建站从此开始!

罗索

回音消除 Speex AEC 录音放音同步对齐

jackyhwei 发布于 2011-08-12 15:54 点击:次 
Speex语音是一个开源/免费软件专利的自由音频压缩格式的语音而设计。该项目旨在降低Speex语音的供提供免费替代昂贵的专有语音编码语音应用进入壁垒。此外,Speex语音可适应互联网的应用,并提供有用的功能是不存在于大多数其他编解码器。
TAG:

一 、因为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

(audioaec)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201108/14844.html]
本文出处:blog.csdn.net/audioaec 作者:audioaec
顶一下
(1)
16.7%
踩一下
(5)
83.3%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容