您现在的位置:首页 > 博客 > Android开发 > 应用开发 > 正文
android语音开发中利用Speex 回音消除模块
http://www.drovik.com/      2012-9-28 14:11:38      来源:CSDN社区      点击:

    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);

 

 

分享到:
发表评论(0)
姓名 *
评论内容 *
验证码 *图片看不清?点击重新得到验证码