speex

news/2024/10/18 8:36:25/

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.

今天测试了speex中带回声消除模块,效果还可以。

测试环境:网络双工通话,16K采样16位编码,speex压缩以及解压.原来通话会听到线路另一端传过来的自己的声音,现在在程序中加入speex回声消除模块。

代码:

[cpp] view plain copy print ?
  1. <SPAN style="FONT-SIZE: 18px">#include "speex/speex_echo.h"  
  2. ......  
  3. ......  
  4. #define SPEEX_FRAME_BYTE 640   
  5. SpeexEchoState *echo_state speex_echo_state_init(320,5000);  
  6. short Echo_Data[SPEEX_FRAME_BYTE / 2];//从网络上收到的语音包   
  7.   
  8. //读取声卡,将数据保存在input_frame0中   
  9. ......  
  10. //回声消除   
  11. speex_echo_cancellation(echo_state,input_frame0,Echo_Data,input_frame);  
  12. //将回声消除后的数据input_frame通过网络发送   
  13. ......</SPAN>  
#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通过网络发送
......

speex_echo_state_init(320,5000);这个函数中320为每一个数据包的帧数,5000即为尾音长度,这个参数的设置将影响回声消除模块的处理效果。如果在一个房间里,最好是发射时间的1/3.我现在的情况是通过网络传输,大概估算回声出现的时间是在说话后1秒左右的时间,1s的帧数是320 * 50 = 16000,1/3即5333帧,取5000帧写入函数。

http://www.ppmy.cn/news/581078.html

相关文章

MFC第九天 CRect类的封装和窗口坐标系转换及获取窗口ID 以及对CTime类与COleDateTime类简介

文章目录 CRect类的封装、窗口坐标系转换及获取窗口ID 、CTime类与COleDateTime类简介CRect类的封装窗口坐标系转换及获取窗口IDCTime类与COleDateTime类简介关于设置日期控件上的时间问题 CRect类的封装、窗口坐标系转换及获取窗口ID 、CTime类与COleDateTime类简介 CRect类的…

配置鼠标右键菜单功能 :一键csv转excel

配置右键菜单功能 &#xff1a;一键csv转excel 无需点开文件&#xff0c;双击即可以生成新的excel文件 步骤&#xff1a; 1、配置Python&#xff0c;安装依赖库 pip install openpyxl pip install pandas2、创建Python文件 csv_to_excel.py # -*- coding:utf-8 -*- impor…

【Java】JVM学习(三)

JVM的整体内存结构 本地方法栈 本地方法栈跟 Java 虚拟机栈的功能类似&#xff0c;Java 虚拟机栈用于管理 Java 函数的调用&#xff0c;而本地方法栈则用于管理本地方法的调用。但本地方法并不是用 Java 实现的&#xff0c;而是由 C 语言实现的(比如Object.hashcode方法)。 …

【面试官版】融合滤波算法+数据结构+C++面试题汇总

C部分 什么时候需要写虚函数、什么时候需要写纯虚函数&#xff1f; 只继承接口为纯虚函数 强调覆盖父类重写&#xff0c;或者父类也需要实现一定的功能&#xff0c;为虚函数指针传参和引用传参区别&#xff1f; 引用传参本质上是传递原参数地址&#xff0c;指针传参本质还是值…

使用Redission自定义注解实现分布式锁(声明式)

1.主要依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisso…

如何在h5页面里只嵌入腾讯视频播放框

例如&#xff1a;https://v.qq.com/x/page/k00290g0i00.html 把“k00290g0i00”加入下面一段代码 <iframe class"video_iframe" style"z-index:1;" src"https://v.qq.com/iframe/player.html?vidk00290g0i00&amp;width500&amp;height375…

c++练习4) 编写程序把华氏温度转换为摄氏温度,公式为 C=5/9*(F-32)

#include<iostream> using namespace std; int main(){float F,C;cout<<"请输入华氏温度&#xff1a; ";cin>>F;C(F-32)*5/9;cout<<endl<< "对应的摄氏温度为&#xff1a; "<<C;return 0; }

西门子S7-1200系列PLC输入/输出接线

西门子S7-1200是一款紧凑型、模块化的PLC&#xff0c;可完成简单逻辑控制、高级逻辑控制、HMI 和网络通信等任务。下面分享S7-1200系列PLC输入/输出接线图给大家。 CPU 1211C 接线图 CPU 1211C AC/DC/继电器 (6ES7 211-1BE40-0XB0) ① 24 VDC 传感器电源 ② 对于漏型输入将负…