首页 > 其他分享 >speexdsp参数设置

speexdsp参数设置

时间:2023-12-20 16:57:29浏览次数:33  
标签:SPEEX Speex 句柄 speexdsp 内存 PREPROCESS ptr 参数设置

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "speex/speex_preprocess.h"
#include <stdio.h>

#define NN 160

int 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,句柄,speexdsp,内存,PREPROCESS,ptr,参数设置
From: https://www.cnblogs.com/kn-zheng/p/17916946.html

相关文章

  • openGauss学习笔记-130 openGauss 数据库管理-参数设置-重设参数
    openGauss学习笔记-130openGauss数据库管理-参数设置-重设参数130.1背景信息openGauss提供了多种修改GUC参数的方法,用户可以方便的针对数据库、用户、会话进行设置。参数名称不区分大小写。参数取值有整型、浮点型、字符串、布尔型和枚举型五类。布尔值可以是(on,off)、(true......
  • openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值
    openGauss学习笔记-129openGauss数据库管理-参数设置-查看参数值openGauss安装后,有一套默认的运行参数,为了使openGauss与业务的配合度更高,用户需要根据业务场景和数据量的大小进行GUC参数调整。129.1操作步骤以操作系统用户omm登录数据库主节点。使用如下命令连接数据库......
  • SOLIDWORKS参数化设计之主参数设置
    SOLIDWORKS参数化设计是通过主参数来驱动整个模型的变化,因此确定主参数是很重要的部分。主参数可以是数值,也可以是条件,可以手动输入,也可以做成下拉列表。今天我们就来看看主参数的下拉列表是如何做到的。SolidKits.AutoWorks软件的参数表是外置参数表,使用软件提取所有参数后,可以......
  • 68.Oracle的内存参数设置
    如果服务器是100G内存,那么Oracle的内存参数可以按照如下进行配置:altersystemsetsga_max_size=40000Mscope=spfile;altersystemsetstreams_pool_size=1200Mscope=spfile;altersystemsetlarge_pool_size=200Mscope=spfile;altersystemsetpga_aggregate_target=......
  • JVM系列三:JVM参数设置、分析
      JVM系列三:JVM参数设置、分析  不管是YGC还是FullGC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程......
  • Echarts图表基本参数设置说明
    ECharts是一款强大的数据可视化库,可以通过JavaScript构建交互式和动态的图表。在使用ECharts进行图表绘制时,我们可以通过设置各种参数来达到我们想要的效果。下面是对ECharts中常用的图表参数的详细介绍说明。1.全局配置参数:-title:图表标题,可以设置主标题和副标题。......
  • LIGGGHTS中颗粒与壁面的参数设置
     ......
  • SpeexDsp回音消除的一些理解
    1.speexdsp的变量定义:SpeexEchoState*echo_state=NULL;//回声消除变量SpeexPreprocessState*pre_state=NULL;//噪声抑制变量intsampleRate=16000;//16k采样率2.speexdsp的初始化:echo_state=speex_echo_state_init(256,2048);//回音消除初始化参数说明:256为每次算......
  • speexdsp库实现音频3A算法
    speex是音频编解码库,speexdsp是附加的音频DSP库,是音频降噪库,也有回声抑制和自动增益控制功能,即通常说的音频3A算法。现在音频编解码大部分都是使用opus库,很少使用speex进行音频编解码,但还是会使用speexdsp库的3A算法对音频数据进行处理。本例是在ubuntu环境下,C/C++语言,使用Qt进......
  • XAPool的参数设置
    sleepTime:PoolKeeper检测时间间隔lifeTime:连接生命周期(上次访问时间-当前时间)deadLockMaxWait(:超过最大连接之后的调用getConnection的等待时间deadLockRetryWait:超过最大连接之后的调用getConnection等待,在等待中重试的时间间隔maxSize:连接池的容量deald-lock-max-wait和dead-......