speex噪音消除
来源:互联网 发布:阿里云服务器连接终端 编辑:程序博客网 时间:2024/04/27 13:40
#ifdef HAVE_CONFIG_H#include "config.h"#endif#include "speex/speex_preprocess.h"#include <stdio.h>#define NN 160int main(){ short in[NN]; int i; SpeexPreprocessState *st; int count=0; float f; st = speex_preprocess_state_init(NN, 8000); i=1; speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DENOISE, &i); i=0; speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC, &i); i=8000; speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL, &i); i=0; speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB, &i); f=.0; speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB_DECAY, &f); f=.0; speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB_LEVEL, &f); while (1) { int vad; fread(in, sizeof(short), NN, stdin); if (feof(stdin)) break; vad = speex_preprocess_run(st, in); /*fprintf (stderr, "%d\n", vad);*/ fwrite(in, sizeof(short), NN, stdout); count++; } speex_preprocess_state_destroy(st); return 0;}
函数名称 speex_preprocess_state_init
头文件 #include “speex_preprocess.h”
函数功能 初始化Speex预处理器句柄。
Speex预处理器句柄用于对原始音频数据进行预处理。
函数声明 SpeexPreprocessState * speex_preprocess_state_init ( int frame_size, int sampling_rate);
函数参数
frame_size,[输入]:存放音频数据一帧的大小,单位多少个采样单元。
sampling_rate,[输入]: 存放音频数据的采样频率,单位Hz。
返回值 Speex预处理器句柄。
其他说明
如果是对一条音频流预处理,那么预处理从开始到结束都应该用一个Speex预处理器句柄,中途不要更换Speex预处理器句柄,也不要用一个Speex预处理器句柄给多条音频流预处理,否则会导致预处理后的音频数据不正确。当Speex预处理器句柄不再使用时,必须调用speex_preprocess_state_destroy()函数销毁预处理器句柄,否则会内存泄漏。
函数名称 speex_preprocess_ctl
头文件 #include “speex_preprocess.h”
函数功能 控制Speex预处理器句柄的相关参数。
函数声明 int speex_preprocess_ctl (SpeexPreprocessState * st, int request, void * ptr);
函数参数
st,[输入]:存放Speex预处理器句柄。
request,[输入]:存放需要控制的参数,可以为(选一至一个):
SPEEX_PREPROCESS_SET_DENOISE宏(0x0000):
设置是否打开Speex预处理器句柄的噪音抑制,ptr参数为spx_int32_t型变量的内存指针,1表示开启,0表示关闭,默认为1。
SPEEX_PREPROCESS_GET_DENOISE宏(0x0001):
获取是否打开Speex预处理器句柄的噪音抑制,ptr参数为spx_int32_t型变量的内存指针,1表示开启,0表示关闭。
SPEEX_PREPROCESS_SET_AGC宏(0x0002):
设置是否打开Speex预处理器句柄的AGC自动增益控制,ptr参数为spx_int32_t型变量的内存指针,1表示开启,0表示关闭,默认为0。
注意:Speex库的AGC自动增益控制正常情况下会增大音量,但有时可能会让减小音量,甚至直接变为静音,所以需要谨慎使用。
SPEEX_PREPROCESS_GET_AGC宏(0x0003):
获取是否打开Speex预处理器句柄的AGC自动增益控制,ptr参数为spx_int32_t型变量的内存指针,1表示开启,0表示关闭。
SPEEX_PREPROCESS_SET_VAD宏(0x0004):
设置是否打开Speex预处理器句柄的VAD语音活动检测,ptr参数为spx_int32_t型变量的内存指针,1表示开启,0表示关闭,默认为0。
SPEEX_PREPROCESS_GET_VAD宏(0x0005):
获取是否打开Speex预处理器句柄的VAD语音活动检测,ptr参数为spx_int32_t型变量的内存指针,1表示开启,0表示关闭。
SPEEX_PREPROCESS_SET_AGC_LEVEL宏(0x0006):
设置AGC自动增益控制时,是否打开Speex预处理器句柄的语音活动检测,ptr参数为float型变量的内存指针,默认为8000.0。
SPEEX_PREPROCESS_GET_AGC_LEVEL宏(0x0007):
获取AGC自动增益控制时,是否打开Speex预处理器句柄的语音活动检测,ptr参数为float型变量的内存指针。
SPEEX_PREPROCESS_SET_DEREVERB宏(0x0008):
设置是否打开Speex预处理器句柄的消除混响,ptr参数为spx_int32_t型变量的内存指针,1表示开启,0表示关闭,默认为0。
SPEEX_PREPROCESS_GET_DEREVERB宏(0x0009):
设置是否打开Speex预处理器句柄的消除混响,ptr参数为spx_int32_t型变量的内存指针,1表示开启,0表示关闭。
*SPEEX_PREPROCESS_SET_DEREVERB_LEVEL宏(0x000A):
设置Speex预处理器句柄的消除混响的等级,ptr参数为float型变量的内存指针,本标记目前无意义。
SPEEX_PREPROCESS_GET_DEREVERB_LEVEL宏(0x000B):
获取Speex预处理器句柄的消除混响的等级,ptr参数为float型变量的内存指针,本标记目前无意义。
SPEEX_PREPROCESS_SET_DEREVERB_DECAY宏(0x000C):
设置Speex预处理器句柄的消除混响的衰减,ptr参数为float型变量的内存指针,本标记目前无意义。
SPEEX_PREPROCESS_GET_DEREVERB_DECAY宏(0x000C):
获取Speex预处理器句柄的消除混响的衰减,ptr参数为float型变量的内存指针,本标记目前无意义。*
SPEEX_PREPROCESS_SET_PROB_START宏(0x000E):
设置VAD语音活动检测时,从静音到有声音的判断标准,ptr参数为int型变量的内存指针,默认为34。
SPEEX_PREPROCESS_GET_PROB_START宏(0x000F):
获取VAD语音活动检测时,从静音到有声音的判断标准,ptr参数为int型变量的内存指针。
SPEEX_PREPROCESS_SET_PROB_CONTINUE宏(0x0010):
设置VAD语音活动检测时,从有声音到静音的判断标准,ptr参数为int型变量的内存指针,默认为20。
SPEEX_PREPROCESS_GET_PROB_CONTINUE宏(0x0011):
获取VAD语音活动检测时,从有声音到静音的判断标准,ptr参数为int型变量的内存指针。
SPEEX_PREPROCESS_SET_NOISE_SUPPRESS宏(0x0012):
设置噪音抑制时,噪音的最大程度衰减的分贝值,ptr参数为spx_int32_t型变量的内存指针,默认为-15。
SPEEX_PREPROCESS_GET_NOISE_SUPPRESS宏(0x0013):
获取噪音抑制时,噪音的最大程度衰减的分贝值,ptr参数为spx_int32_t型变量的内存指针。
SPEEX_PREPROCESS_SET_ECHO_SUPPRESS宏(0x0014):
设置残余回音消除时,残余回音的最大程度衰减的分贝值,ptr参数为spx_int32_t型变量的内存指针,默认为-40。
SPEEX_PREPROCESS_GET_ECHO_SUPPRESS宏(0x0015):
获取残余回音消除时,残余回音的最大程度衰减的分贝值,ptr参数为spx_int32_t型变量的内存指针。
SPEEX_PREPROCESS_SET_ECHO_SUPPRESS_ACTIVE宏(0x0016):
设置残余回音消除时,接近末尾的残余回音的最大程度衰减的分贝值。ptr参数为spx_int32_t型变量的内存指针,默认为-15。
SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE宏(0x0017):
获取残余回音消除时,接近末尾的残余回音的最大程度衰减的分贝值。ptr参数为spx_int32_t型变量的内存指针。
SPEEX_PREPROCESS_SET_ECHO_STATE宏(0x0018):
设置是否打开Speex预处理器句柄的残余回音消除,开启后应在回音消除后再进行预处理。ptr参数为SpeexEchoState结构体变量的内存指针,也就是Speex声学回音消除器句柄,为NULL表示关闭。
SPEEX_PREPROCESS_GET_ECHO_STATE宏(0x0019):
获取是否打开Speex预处理器句柄的残余回音消除。ptr参数为SpeexEchoState结构体指针变量的内存指针,也就是用来存放Speex声学回音消除器句柄,如果Speex声学回音消除器句柄为NULL表示关闭。
SPEEX_PREPROCESS_SET_AGC_INCREMENT宏(0x001A):
设置AGC自动增益控制时,每秒增益最大增量的分贝值,ptr参数为spx_int32_t型变量的内存指针,默认为12。
SPEEX_PREPROCESS_GET_AGC_INCREMENT宏(0x001B):
获取AGC自动增益控制时,每秒增益最大增量的分贝值,ptr参数为spx_int32_t型变量的内存指针。
SPEEX_PREPROCESS_SET_AGC_DECREMENT宏(0x001C):
设置AGC自动增益控制时,每秒增益最大减量的分贝值,ptr参数为spx_int32_t型变量的内存指针,默认为-40。
SPEEX_PREPROCESS_GET_AGC_DECREMENT宏(0x001D):
获取AGC自动增益控制时,每秒增益最大减量的分贝值,ptr参数为spx_int32_t型变量的内存指针。
SPEEX_PREPROCESS_SET_AGC_MAX_GAIN宏(0x001C):
设置AGC自动增益控制时,增益最大增加的分贝值,ptr参数为spx_int32_t型变量的内存指针,默认为30。
SPEEX_PREPROCESS_GET_AGC_MAX_GAIN宏(0x001C):
获取AGC自动增益控制时,增益最大增加的分贝值,ptr参数为spx_int32_t型变量的内存指针。
/* Can’t set loudness */
/* Get loudness /
SPEEX_PREPROCESS_GET_AGC_LOUDNESS 33
/* Can’t set gain */
/* Get current gain (int32 percent) /
SPEEX_PREPROCESS_GET_AGC_GAIN 35
/* Can’t set spectrum size */
/* Get spectrum size for power spectrum (int32) /
SPEEX_PREPROCESS_GET_PSD_SIZE 37
/* Can’t set power spectrum */
/* Get power spectrum (int32[] of squared values) /
SPEEX_PREPROCESS_GET_PSD 39
/* Can’t set noise size */
/* Get spectrum size for noise estimate (int32) /
SPEEX_PREPROCESS_GET_NOISE_PSD_SIZE 41
/* Can’t set noise estimate */
/* Get noise estimate (int32[] of squared values) /
SPEEX_PREPROCESS_GET_NOISE_PSD 43
/* Can’t set speech probability */
/* Get speech probability in last frame (int32). /
SPEEX_PREPROCESS_GET_PROB 45
/* Set preprocessor Automatic Gain Control level (int32) /
SPEEX_PREPROCESS_SET_AGC_TARGET 46
/* Get preprocessor Automatic Gain Control level (int32) /
SPEEX_PREPROCESS_GET_AGC_TARGET 47
ptr,[输入&输出]:存放控制参数。
本参数是根据request参数来定义的。
返回值
0:成功。
非0:失败,request参数无效。
函数名称 speex_preprocess_run
头文件 #include “speex_preprocess.h”
函数功能 根据Speex预处理器句柄,对一帧16位有符号整型单声道原始音频数据进行预处理。
函数声明 int speex_preprocess_run (SpeexPreprocessState * st, spx_int16_t * x);
函数参数 st,[输入]:
存放Speex预处理器句柄。
x,[输入]:
存放一帧16位有符号整型单声道原始音频数据的内存指针。
返回值
1:预处理完毕,如果打开语音活动检测,表示本帧音频数据为有声音。
0:预处理完毕,如果打开语音活动检测,表示本帧音频数据为静音。
函数名称 speex_preprocess_state_destroy
头文件 #include “speex_preprocess.h”
函数功能
销毁一个Speex预处理器句柄。
函数声明 void speex_preprocess_state_destroy (SpeexPreprocessState * st);
函数参数
st,[输入]:存放Speex预处理器句柄。
返回值 无
- speex噪音消除
- 噪音消除小技巧--噪音匹配
- Speex 回声消除
- Speex 之回声消除
- speex回声消除
- Speex 回声消除
- Speex回声消除器
- speex 回声消除
- speex回音消除
- speex 回声消除(2)
- speex回音消除
- speex回声消除功能测试
- speex 回声消除的用法
- speex 回声消除的用法
- Speex 回声消除接口介绍
- Speex回声消除代码分析
- Speex回声消除代码分析
- speex 回声消除(1)
- 2017中国汽车网络安全国际峰会 深入解读《网络安全法》对汽车行业的影响
- 隐示意图
- C语言程序设计:现代方法4
- 待学习
- 训练数据识别小猫图片
- speex噪音消除
- Socket长连接与短连接
- 创建一个Catkin工作空间(indigo版本)
- unity委托
- 从github上下载开源项目 failed to apply plugin[id 'com.github.dcendents.android-maven']
- typedef和#define的区别
- _finddata_t
- 371
- spring和mybatis框架中实现文件下载功能