Speex 回声消除接口介绍
2016-02-01 14:35
405 查看
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
今天测试了speex中带回声消除模块,效果还可以。
测试环境:网络双工通话,16K采样16位编码,speex压缩以及解压.原来通话会听到线路另一端传过来的自己的声音,现在在程序中加入speex回声消除模块。
代码:
[cpp]
view plaincopyprint?
<SPAN style="FONT-SIZE: 18px">#include "speex/speex_echo.h"
......
......
#define SPEEX_FRAME_BYTE 640
SpeexEchoState *echo_state speex_echo_state_init(320,5000);
short Echo_Data[SPEEX_FRAME_BYTE / 2];//从网络上收到的语音包
//读取声卡,将数据保存在input_frame0中
......
//回声消除
speex_echo_cancellation(echo_state,input_frame0,Echo_Data,input_frame);
//将回声消除后的数据input_frame通过网络发送
......</SPAN>
[cpp]
view plaincopyprint?
<span style="font-size: 18px;">#include "speex/speex_echo.h" ...... ...... #define SPEEX_FRAME_BYTE 640 SpeexEchoState *echo_state speex_echo_state_init(320,5000); short Echo_Data[SPEEX_FRAME_BYTE / 2];//从网络上收到的语音包 //读取声卡,将数据保存在input_frame0中 ...... //回声消除 speex_echo_cancellation(echo_state,input_frame0,Echo_Data,input_frame); //将回声消除后的数据input_frame通过网络发送 ......</span>
speex_echo_state_init(320,5000);这个函数中320为每一个数据包的帧数,5000即为尾音长度,这个参数的设置将影响回声消除模块的处理效果。如果在一个房间里,最好是发射时间的1/3.我现在的情况是通过网络传输,大概估算回声出现的时间是在说话后1秒左右的时间,1s的帧数是320 * 50 = 16000,1/3即5333帧,取5000帧写入函数。
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
今天测试了speex中带回声消除模块,效果还可以。
测试环境:网络双工通话,16K采样16位编码,speex压缩以及解压.原来通话会听到线路另一端传过来的自己的声音,现在在程序中加入speex回声消除模块。
代码:
[cpp]
view plaincopyprint?
<SPAN style="FONT-SIZE: 18px">#include "speex/speex_echo.h"
......
......
#define SPEEX_FRAME_BYTE 640
SpeexEchoState *echo_state speex_echo_state_init(320,5000);
short Echo_Data[SPEEX_FRAME_BYTE / 2];//从网络上收到的语音包
//读取声卡,将数据保存在input_frame0中
......
//回声消除
speex_echo_cancellation(echo_state,input_frame0,Echo_Data,input_frame);
//将回声消除后的数据input_frame通过网络发送
......</SPAN>
[cpp]
view plaincopyprint?
<span style="font-size: 18px;">#include "speex/speex_echo.h" ...... ...... #define SPEEX_FRAME_BYTE 640 SpeexEchoState *echo_state speex_echo_state_init(320,5000); short Echo_Data[SPEEX_FRAME_BYTE / 2];//从网络上收到的语音包 //读取声卡,将数据保存在input_frame0中 ...... //回声消除 speex_echo_cancellation(echo_state,input_frame0,Echo_Data,input_frame); //将回声消除后的数据input_frame通过网络发送 ......</span>
<span style="font-size: 18px;">#include "speex/speex_echo.h" ...... ...... #define SPEEX_FRAME_BYTE 640 SpeexEchoState *echo_state speex_echo_state_init(320,5000); short Echo_Data[SPEEX_FRAME_BYTE / 2];//从网络上收到的语音包 //读取声卡,将数据保存在input_frame0中 ...... //回声消除 speex_echo_cancellation(echo_state,input_frame0,Echo_Data,input_frame); //将回声消除后的数据input_frame通过网络发送 ......</span>
speex_echo_state_init(320,5000);这个函数中320为每一个数据包的帧数,5000即为尾音长度,这个参数的设置将影响回声消除模块的处理效果。如果在一个房间里,最好是发射时间的1/3.我现在的情况是通过网络传输,大概估算回声出现的时间是在说话后1秒左右的时间,1s的帧数是320 * 50 = 16000,1/3即5333帧,取5000帧写入函数。
相关文章推荐
- Android 四大核心组件之Activity
- 2015年10月29号 支付宝开发
- C# ? ?: ?? 分别表示什么意思
- 源码解析Android中View的measure量算过程
- 达人秀
- [转]jQuery EasyUI 扩展-- 主题(Themes)
- ug-Assertion failure in [MyClass layoutSublayersOfLayer:]
- 海蜘蛛理由器做端口映射
- tomcat的安装以及端口号和用户名密码的配置
- 有关微信支付开发
- OC中的类方法与实例方法
- 关于linux下命令行参数的使用函数getopt( )和getopt_long( )
- office2016激活码 Windows 10激活码
- 大数据学习笔记——Hadoop1.x基本概念和安装
- java29:Map
- CentOS 6.5 安装 Nginx
- zzuli OJ 1130: 杨辉三角
- ORACLE 自动提交问题
- 2015年11月3号 百度地图定位问题
- linux下的source命令