feat: Add rfid feature and .gitignore file
This commit is contained in:
61
include_lib/media/cvp/aec_uart_debug.h
Normal file
61
include_lib/media/cvp/aec_uart_debug.h
Normal file
@ -0,0 +1,61 @@
|
||||
#ifndef _AEC_UART_DEBUG_H_
|
||||
#define _AEC_UART_DEBUG_H_
|
||||
|
||||
#include "generic/typedef.h"
|
||||
|
||||
/*
|
||||
*********************************************************
|
||||
* aec_uart_open
|
||||
* Description: 打开数据写卡接口
|
||||
* Arguments_v1 : nch 总通道数, single_size 单个通道的数据大小
|
||||
* Arguments_v2 : nch 允许发送的最大通道数, single_size 单次发送允许的最大包长
|
||||
* Return : 0 成功 其他 失败
|
||||
* Note(s) : None.
|
||||
*********************************************************
|
||||
*/
|
||||
int aec_uart_open(u8 nch, u16 single_size);
|
||||
|
||||
/*
|
||||
*********************************************************
|
||||
* aec_uart_init
|
||||
* Description: 数据写卡初始化
|
||||
* Arguments : None.
|
||||
* Return : 0 成功 其他 失败
|
||||
* Note(s) : None.
|
||||
*********************************************************
|
||||
*/
|
||||
int aec_uart_init(void);
|
||||
|
||||
/*
|
||||
*********************************************************
|
||||
* aec_uart_fill
|
||||
* Description: 填写对应通道的数据
|
||||
* Arguments : ch 通道号,buf 数据地址,size 数据大小
|
||||
* Return : 0 成功 其他 失败
|
||||
* Note(s) : None.
|
||||
*********************************************************
|
||||
*/
|
||||
int aec_uart_fill(u8 ch, void *buf, u16 size);
|
||||
|
||||
/*
|
||||
*********************************************************
|
||||
* aec_uart_write
|
||||
* Description: 将写入通话的数据写入串口buffer
|
||||
* Arguments : None.
|
||||
* Return : None.
|
||||
* Note(s) : None.
|
||||
*********************************************************
|
||||
*/
|
||||
void aec_uart_write(void);
|
||||
|
||||
/*
|
||||
*********************************************************
|
||||
* aec_uart_close
|
||||
* Description: 关闭数据写卡
|
||||
* Arguments : None.
|
||||
* Return : 0 成功 其他 失败
|
||||
* Note(s) : None.
|
||||
*********************************************************
|
||||
*/
|
||||
int aec_uart_close(void);
|
||||
#endif/*_AEC_UART_DEBUG_H_*/
|
||||
201
include_lib/media/cvp/commproc.h
Normal file
201
include_lib/media/cvp/commproc.h
Normal file
@ -0,0 +1,201 @@
|
||||
#ifndef _COMMPROC_H_
|
||||
#define _COMMPROC_H_
|
||||
|
||||
#include "generic/typedef.h"
|
||||
#include "cvp_common.h"
|
||||
|
||||
/*降噪版本定义*/
|
||||
#define ANS_V100 0xA1
|
||||
#define ANS_V200 0xA2
|
||||
|
||||
//aec_cfg:
|
||||
typedef struct __AEC_CONFIG {
|
||||
u8 mic_again; //DAC增益,default:3(0~14)
|
||||
u8 dac_again; //MIC增益,default:22(0~31)
|
||||
u8 aec_mode; //AEC模式,default:advance(diable(0), reduce(1), advance(2))
|
||||
u8 ul_eq_en; //上行EQ使能,default:enable(disable(0), enable(1))
|
||||
/*AGC*/
|
||||
float ndt_fade_in; //单端讲话淡入步进default: 1.f(0.1 ~ 5 dB)
|
||||
float ndt_fade_out; //单端讲话淡出步进default: 0.7f(0.1 ~ 5 dB)
|
||||
float dt_fade_in; //双端讲话淡入步进default: 1.3f(0.1 ~ 5 dB)
|
||||
float dt_fade_out; //双端讲话淡出步进default: 0.7f(0.1 ~ 5 dB)
|
||||
float ndt_max_gain; //单端讲话放大上限,default: 12.f(0 ~ 24 dB)
|
||||
float ndt_min_gain; //单端讲话放大下限,default: 0.f(-20 ~ 24 dB)
|
||||
float ndt_speech_thr; //单端讲话放大阈值,default: -50.f(-70 ~ -40 dB)
|
||||
float dt_max_gain; //双端讲话放大上限,default: 12.f(0 ~ 24 dB)
|
||||
float dt_min_gain; //双端讲话放大下限,default: 0.f(-20 ~ 24 dB)
|
||||
float dt_speech_thr; //双端讲话放大阈值,default: -40.f(-70 ~ -40 dB)
|
||||
float echo_present_thr; //单端双端讲话阈值,default:-70.f(-70 ~ -40 dB)
|
||||
/*AEC*/
|
||||
float aec_dt_aggress; //原音回音追踪等级, default: 1.0f(1 ~ 5)
|
||||
float aec_refengthr; //进入回音消除参考值, default: -70.0f(-90 ~ -60 dB)
|
||||
/*ES*/
|
||||
float es_aggress_factor;//回音前级动态压制,越小越强,default: -3.0f(-1 ~ -5)
|
||||
float es_min_suppress; //回音后级静态压制,越大越强,default: 4.f(0 ~ 10)
|
||||
/*ANS*/
|
||||
float ans_aggress; //噪声前级动态压制,越大越强default: 1.25f(1 ~ 2)
|
||||
float ans_suppress; //噪声后级静态压制,越小越强default: 0.04f(0 ~ 1)
|
||||
} _GNU_PACKED_ AEC_CONFIG;
|
||||
|
||||
struct aec_s_attr {
|
||||
u8 agc_en: 1;
|
||||
u8 ul_eq_en: 1;
|
||||
u8 wideband: 1;
|
||||
u8 toggle: 1;
|
||||
u8 wn_en: 1;
|
||||
u8 dly_est : 1;
|
||||
u8 reserved: 2;
|
||||
|
||||
u8 dst_delay;/*延时估计目标延时*/
|
||||
u8 EnableBit;
|
||||
u8 packet_dump;
|
||||
u8 SimplexTail;
|
||||
u8 aec_tail_length; //AEC复杂等级:2~10,default:5
|
||||
float AGC_NDT_fade_in_step; //in dB
|
||||
float AGC_NDT_fade_out_step; //in dB
|
||||
float AGC_NDT_max_gain; //in dB
|
||||
float AGC_NDT_min_gain; //in dB
|
||||
float AGC_NDT_speech_thr; //in dB
|
||||
float AGC_DT_fade_in_step; //in dB
|
||||
float AGC_DT_fade_out_step; //in dB
|
||||
float AGC_DT_max_gain; //in dB
|
||||
float AGC_DT_min_gain; //in dB
|
||||
float AGC_DT_speech_thr; //in dB
|
||||
float AGC_echo_present_thr; //In dB
|
||||
int AGC_echo_look_ahead; //in ms
|
||||
int AGC_echo_hold; // in ms
|
||||
u16 hw_delay_offset;/*dac hardware delay offset*/
|
||||
u16 wn_gain;/*white_noise gain*/
|
||||
int SimplexThr;
|
||||
float ES_AggressFactor;
|
||||
float ES_MinSuppress;
|
||||
float ES_Unconverge_OverDrive;
|
||||
float ANS_AggressFactor;
|
||||
float ANS_MinSuppress;
|
||||
float ANS_NoiseLevel;
|
||||
int (*cvp_advanced_options)(void *aec,
|
||||
void *nlp,
|
||||
void *ns,
|
||||
void *tde,
|
||||
void *agc);
|
||||
int (*aec_probe)(short *mic0, short *mic2, short *mic3, short *ref, u16 len);
|
||||
int (*aec_post)(s16 *dat, u16 len);
|
||||
int (*aec_update)(u8 aec_mode);
|
||||
int (*output_handle)(s16 *dat, u16 len);
|
||||
u8 output_way; // 0:dac 1:fm
|
||||
u8 ANS_mode;
|
||||
u8 fm_tx_start;
|
||||
u8 far_noise_gate;//default:10
|
||||
|
||||
float AEC_RefEngThr;
|
||||
float AEC_DT_AggressiveFactor;
|
||||
//float AES_AggressFactor;
|
||||
//float AES_RefEngThr;
|
||||
|
||||
/*Extended-Parameters*/
|
||||
u16 ref_sr;
|
||||
u16 ref_channel; /*参考数据声道数*/
|
||||
u16 adc_ref_en; /*adc回采参考数据使能*/
|
||||
|
||||
/*DNS Parameters*/
|
||||
float DNS_GainFloor; //最小压制 range[0:1.00]
|
||||
float DNS_OverDrive; //降噪强度 range[0:6.0]
|
||||
float DNS_highGain; //EQ强度 range[1.0:3.5]
|
||||
float DNS_rbRate; //混响强度 range[0:0.9]
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
*********************************************************************
|
||||
* AEC Init
|
||||
* Description: AEC模块初始化
|
||||
* Arguments : attr AEC模块参数
|
||||
* Return : 0 成功 其他 失败
|
||||
* Note(s) : None.
|
||||
*********************************************************************
|
||||
*/
|
||||
s32 aec_init(struct aec_s_attr *attr);
|
||||
|
||||
/*
|
||||
*********************************************************************
|
||||
* AEC Exit
|
||||
* Description: AEC退出
|
||||
* Arguments : None.
|
||||
* Return : 0 成功 其他 失败
|
||||
* Note(s) : None.
|
||||
*********************************************************************
|
||||
*/
|
||||
s32 aec_exit();
|
||||
u32 aec_output_read(s16 *buf, u16 npoint);
|
||||
|
||||
/*
|
||||
*********************************************************************
|
||||
* AEC Input
|
||||
* Description: AEC源数据输入
|
||||
* Arguments : dat 参考数据
|
||||
* len 参考数据长度
|
||||
* Return : 0 成功 其他 失败
|
||||
* Note(s) : None.
|
||||
*********************************************************************
|
||||
*/
|
||||
s32 aec_fill_in_data(void *dat, u16 len);
|
||||
|
||||
/*
|
||||
*********************************************************************
|
||||
* AEC Reference
|
||||
* Description: AEC参考数据输入
|
||||
* Arguments : dat 参考数据
|
||||
* len 参考数据长度
|
||||
* Return : 0 成功 其他 失败
|
||||
* Note(s) : None.
|
||||
*********************************************************************
|
||||
*/
|
||||
s32 aec_fill_ref_data(void *dat, u16 len);
|
||||
|
||||
/*adc回采dac数据做ref*/
|
||||
int aec_fill_in_ref_data(void *dat, u16 len);
|
||||
|
||||
/*
|
||||
*********************************************************************
|
||||
* AEC Toggle
|
||||
* Description: AEC bypass设置
|
||||
* Arguments : toggle bypass开关
|
||||
* Return : None.
|
||||
* Note(s) : 该接口用于切换算法开关,1为正常流程,0为bypass,数据
|
||||
* 不经算法处理
|
||||
*********************************************************************
|
||||
*/
|
||||
void aec_toggle(u8 toggle);
|
||||
|
||||
/*
|
||||
*********************************************************************
|
||||
* AEC CFG Updata
|
||||
* Description: AEC模块配置动态更新
|
||||
* Arguments : cfg AEC模块参数
|
||||
* Return : 0 成功 其他 失败
|
||||
* Note(s) : 该接口用于使用过程,动态修改模块参数
|
||||
*********************************************************************
|
||||
*/
|
||||
int aec_cfg_update(AEC_CONFIG *cfg);
|
||||
|
||||
/*
|
||||
*********************************************************************
|
||||
* AEC Reboot
|
||||
* Description: AEC模块重新启动
|
||||
* Arguments : enablebit 重新启动使能的模块
|
||||
* Return : 0 成功 其他 失败
|
||||
* Note(s) : 该接口用于重新启动AEC模块
|
||||
*********************************************************************
|
||||
*/
|
||||
int aec_reboot(u8 enablebit);
|
||||
|
||||
int sms_tde_init(struct aec_s_attr *attr);
|
||||
int sms_tde_exit();
|
||||
int sms_tde_fill_in_data(void *dat, u16 len);
|
||||
int sms_tde_fill_ref_data(void *dat, u16 len);
|
||||
int sms_tde_fill_in_ref_data(void *dat, u16 len);
|
||||
void sms_tde_toggle(u8 toggle);
|
||||
int cvp_sms_read_ref_data(void);
|
||||
int cvp_sms_tde_read_ref_data(void);
|
||||
|
||||
#endif
|
||||
258
include_lib/media/cvp/commproc_dms.h
Normal file
258
include_lib/media/cvp/commproc_dms.h
Normal file
@ -0,0 +1,258 @@
|
||||
#ifndef _COMMPROC_DMS_H_
|
||||
#define _COMMPROC_DMS_H_
|
||||
|
||||
#include "generic/typedef.h"
|
||||
#include "cvp_common.h"
|
||||
|
||||
/*降噪版本定义*/
|
||||
#define DMS_V100 0xA1
|
||||
#define DMS_V200 0xA2
|
||||
|
||||
//dms_cfg:
|
||||
typedef struct {
|
||||
u8 mic_again; //DAC增益,default:3(0~14)
|
||||
u8 dac_again; //MIC增益,default:22(0~31)
|
||||
u8 enable_module; //使能模块
|
||||
u8 ul_eq_en; //上行EQ使能,default:enable(disable(0), enable(1))
|
||||
/*AGC*/
|
||||
float ndt_fade_in; //单端讲话淡入步进default: 1.3f(0.1 ~ 5 dB)
|
||||
float ndt_fade_out; //单端讲话淡出步进default: 0.7f(0.1 ~ 5 dB)
|
||||
float dt_fade_in; //双端讲话淡入步进default: 1.3f(0.1 ~ 5 dB)
|
||||
float dt_fade_out; //双端讲话淡出步进default: 0.7f(0.1 ~ 5 dB)
|
||||
float ndt_max_gain; //单端讲话放大上限,default: 12.f(0 ~ 24 dB)
|
||||
float ndt_min_gain; //单端讲话放大下限,default: 0.f(-20 ~ 24 dB)
|
||||
float ndt_speech_thr; //单端讲话放大阈值,default: -50.f(-70 ~ -40 dB)
|
||||
float dt_max_gain; //双端讲话放大上限,default: 12.f(0 ~ 24 dB)
|
||||
float dt_min_gain; //双端讲话放大下限,default: 0.f(-20 ~ 24 dB)
|
||||
float dt_speech_thr; //双端讲话放大阈值,default: -40.f(-70 ~ -40 dB)
|
||||
float echo_present_thr; //单端双端讲话阈值,default:-70.f(-70 ~ -40 dB)
|
||||
/*aec*/
|
||||
int aec_process_maxfrequency; //default:8000,range[3000:8000]
|
||||
int aec_process_minfrequency; //default:0,range[0:1000]
|
||||
int af_length; //default:128 range[128:256]
|
||||
/*nlp*/
|
||||
int nlp_process_maxfrequency; //default:8000,range[3000:8000]
|
||||
int nlp_process_minfrequency; //default:0,range[0:1000]
|
||||
float overdrive; //default:1,range[0:30]
|
||||
/*ans*/
|
||||
float aggressfactor; //default:1.25,range[1:2]
|
||||
float minsuppress; //default:0.04,range[0.01:0.1]
|
||||
float init_noise_lvl; //default:-75dB,range[-100:-30]
|
||||
/*enc*/
|
||||
int enc_process_maxfreq; //default:8000,range[3000:8000]
|
||||
int enc_process_minfreq; //default:0,range[0:1000]
|
||||
int sir_maxfreq; //default:3000,range[1000:8000]
|
||||
float mic_distance; //default:0.015,range[0.035:0.015]
|
||||
float target_signal_degradation;//default:1,range[0:1]
|
||||
float enc_aggressfactor; //default:4.f,range[0:4]
|
||||
float enc_minsuppress; //default:0.09f,range[0:0.1]
|
||||
/*common*/
|
||||
float global_minsuppress; //default:0.0,range[0.0:0.09]
|
||||
} _GNU_PACKED_ AEC_DMS_CONFIG;
|
||||
|
||||
//dms_flexible_cfg:
|
||||
typedef struct {
|
||||
u8 ver; //Ver:01
|
||||
u8 mic_again; //MIC0增益,default:10(0~14)
|
||||
u8 mic1_again; //MIC1增益,default:3(0~14)
|
||||
u8 dac_again; //DAC增益,default:22(0~31)
|
||||
u8 enable_module; //使能模块 NS:BIT(2) ENC:BIT(3) AGC:BIT(4)
|
||||
u8 ul_eq_en; //上行EQ使能,default:enable(disable(0), enable(1))
|
||||
u8 reserved[2];
|
||||
|
||||
/*AGC*/
|
||||
float ndt_fade_in; //单端讲话淡入步进default: 1.3f(0.1 ~ 5 dB)
|
||||
float ndt_fade_out; //单端讲话淡出步进default: 0.7f(0.1 ~ 5 dB)
|
||||
float dt_fade_in; //双端讲话淡入步进default: 1.3f(0.1 ~ 5 dB)
|
||||
float dt_fade_out; //双端讲话淡出步进default: 0.7f(0.1 ~ 5 dB)
|
||||
float ndt_max_gain; //单端讲话放大上限,default: 12.f(0 ~ 24 dB)
|
||||
float ndt_min_gain; //单端讲话放大下限,default: 0.f(-20 ~ 24 dB)
|
||||
float ndt_speech_thr; //单端讲话放大阈值,default: -50.f(-70 ~ -40 dB)
|
||||
float dt_max_gain; //双端讲话放大上限,default: 12.f(0 ~ 24 dB)
|
||||
float dt_min_gain; //双端讲话放大下限,default: 0.f(-20 ~ 24 dB)
|
||||
float dt_speech_thr; //双端讲话放大阈值,default: -40.f(-70 ~ -40 dB)
|
||||
float echo_present_thr; //单端双端讲话阈值,default:-70.f(-70 ~ -40 dB)
|
||||
/*aec*/
|
||||
int aec_process_maxfrequency; //default:8000,range[3000:8000]
|
||||
int aec_process_minfrequency; //default:0,range[0:1000]
|
||||
int af_length; //default:128 range[128:256]
|
||||
/*nlp*/
|
||||
int nlp_process_maxfrequency; //default:8000,range[3000:8000]
|
||||
int nlp_process_minfrequency; //default:0,range[0:1000]
|
||||
float overdrive; //default:1,range[0:30]
|
||||
/*ans*/
|
||||
float aggressfactor; //default:1.25,range[1:2]
|
||||
float minsuppress; //default:0.04,range[0.01:0.1]
|
||||
float init_noise_lvl; //default:-75dB,range[-100:-30]
|
||||
/*enc*/
|
||||
float enc_suppress_pre; //ENC前级压制,越大越强 default:0.6f,range[0:1]
|
||||
float enc_suppress_post; //ENC后级压制,越大越强 default:0.15f,range[0:1]
|
||||
float enc_minsuppress; //ENC后级压制下限 default:0.09f,range[0:1]
|
||||
float enc_disconverge_erle_thr; //滤波器发散控制阈值,越大控制越强 default:-6.f,range[-20:5]
|
||||
|
||||
} DMS_FLEXIBLE_CONFIG;
|
||||
|
||||
struct dms_attr {
|
||||
u8 ul_eq_en: 1;
|
||||
u8 wideband: 1;
|
||||
u8 wn_en: 1;
|
||||
u8 dly_est : 1;
|
||||
u8 aptfilt_only: 1;
|
||||
u8 reserved: 3;
|
||||
|
||||
u8 dst_delay;/*延时估计目标延时*/
|
||||
u8 EnableBit;
|
||||
u8 packet_dump;
|
||||
u8 SimplexTail;
|
||||
u8 output_sel;/*dms output选择*/
|
||||
u16 hw_delay_offset;/*dac hardware delay offset*/
|
||||
u16 wn_gain;/*white_noise gain*/
|
||||
/*AGC*/
|
||||
float AGC_NDT_fade_in_step; //in dB
|
||||
float AGC_NDT_fade_out_step; //in dB
|
||||
float AGC_NDT_max_gain; //in dB
|
||||
float AGC_NDT_min_gain; //in dB
|
||||
float AGC_NDT_speech_thr; //in dB
|
||||
float AGC_DT_fade_in_step; //in dB
|
||||
float AGC_DT_fade_out_step; //in dB
|
||||
float AGC_DT_max_gain; //in dB
|
||||
float AGC_DT_min_gain; //in dB
|
||||
float AGC_DT_speech_thr; //in dB
|
||||
float AGC_echo_present_thr; //In dB
|
||||
int AGC_echo_look_ahead; //in ms
|
||||
int AGC_echo_hold; // in ms
|
||||
/*AEC*/
|
||||
int aec_process_maxfrequency; //default:8000,range[3000:8000]
|
||||
int aec_process_minfrequency; //default:0,range[0:1000]
|
||||
int af_length; //default:128 range[128:256]
|
||||
/*NLP*/
|
||||
int nlp_process_maxfrequency; //default:8000,range[3000:8000]
|
||||
int nlp_process_minfrequency; //default:0,range[0:1000]
|
||||
float overdrive; //default:1,range[0:30]
|
||||
/*ANS*/
|
||||
float aggressfactor; //default:1.25,range[1:2]
|
||||
float minsuppress; //default:0.04,range[0.01:0.1]
|
||||
float init_noise_lvl; //default:-75db,range[-100:-30]
|
||||
/*ENC*/
|
||||
int enc_process_maxfreq; //default:8000,range[3000:8000]
|
||||
int enc_process_minfreq; //default:0,range[0:1000]
|
||||
int sir_maxfreq; //default:3000,range[1000:8000]
|
||||
float mic_distance; //default:0.015,range[0.035:0.015]
|
||||
float target_signal_degradation;//default:1,range[0:1]
|
||||
float enc_aggressfactor; //default:4.f,range[0:4]
|
||||
float enc_minsuppress; //default:0.09f,range[0:0.1]
|
||||
/*BCS*/
|
||||
int bone_process_maxfreq;
|
||||
int bone_process_minfreq;
|
||||
float bone_init_noise_lvl;
|
||||
int Bone_AEC_Process_MaxFrequency;
|
||||
int Bone_AEC_Process_MinFrequency;
|
||||
/*common*/
|
||||
float global_minsuppress; //default:0.0,range[0.0:0.09]
|
||||
/*data handle*/
|
||||
int (*cvp_advanced_options)(void *aec,
|
||||
void *nlp,
|
||||
void *ns,
|
||||
void *enc,
|
||||
void *agc,
|
||||
void *wn,
|
||||
void *mfdt);
|
||||
int (*aec_probe)(short *mic0, short *mic2, short *mic3, short *ref, u16 len);
|
||||
int (*aec_post)(s16 *dat, u16 len);
|
||||
int (*aec_update)(u8 EnableBit);
|
||||
int (*output_handle)(s16 *dat, u16 len);
|
||||
|
||||
/*flexible enc*/
|
||||
int flexible_af_length; //default:512 range[128、256、512、1024]
|
||||
int sir_minfreq; //default:100,range[0:8000]
|
||||
int SIR_mean_MaxFrequency; //default:1000,range[0:8000]
|
||||
int SIR_mean_MinFrequency; //default:100,range[0:8000]
|
||||
float ENC_CoheFlgMax_gamma; //default:0.5f,range[0:1]
|
||||
float coheXD_thr; //default:0.5f,range[0:1]
|
||||
float Disconverge_ERLE_Thr; //default:-6.f,range[-20:5]
|
||||
|
||||
/*WN*/
|
||||
float wn_detect_time; //in second
|
||||
float wn_detect_time_ratio_thr; //0-1
|
||||
float wn_detect_thr; //0-1
|
||||
float wn_minsuppress; //0-1
|
||||
|
||||
/*Extended-Parameters*/
|
||||
u16 ref_sr;
|
||||
u16 ref_channel; /*参考数据声道数*/
|
||||
u16 adc_ref_en; /*adc回采参考数据使能*/
|
||||
|
||||
/*DNS Parameters*/
|
||||
float DNS_highGain; //EQ强度 range[1.0:3.5]
|
||||
float DNS_rbRate; //混响强度 range[0:0.9];
|
||||
|
||||
/*MFDT Parameters*/
|
||||
float detect_time; // // 检测时间s,影响状态切换的速度
|
||||
float detect_eng_diff_thr; // 0~-90 dB 两个mic能量差异持续大于此阈值超过检测时间则会检测为故障
|
||||
float detect_eng_lowerbound; // 0~-90 dB 当处于故障状态时,正常的mic能量大于此阈值才会检测能量差异,避免安静环境下误判切回正常状态
|
||||
int MalfuncDet_MaxFrequency;// 检测信号的最大频率成分
|
||||
int MalfuncDet_MinFrequency;// 检测信号的最小频率成分
|
||||
int OnlyDetect;// 0 -> 故障切换到单mic模式, 1-> 只检测不切换
|
||||
};
|
||||
|
||||
s32 aec_dms_init(struct dms_attr *attr);
|
||||
s32 aec_dms_exit();
|
||||
s32 aec_dms_fill_in_data(void *dat, u16 len);
|
||||
int aec_dms_fill_in_ref_data(void *dat, u16 len);
|
||||
s32 aec_dms_fill_ref_data(void *dat, u16 len);
|
||||
void aec_dms_toggle(u8 toggle);
|
||||
int aec_dms_cfg_update(AEC_DMS_CONFIG *cfg);
|
||||
int aec_dms_reboot(u8 enablebit);
|
||||
|
||||
s32 aec_dms_flexible_init(struct dms_attr *attr);
|
||||
s32 aec_dms_flexible_exit();
|
||||
s32 aec_dms_flexible_fill_in_data(void *dat, u16 len);
|
||||
int aec_dms_flexible_fill_in_ref_data(void *dat, u16 len);
|
||||
s32 aec_dms_flexible_fill_ref_data(void *dat, u16 len);
|
||||
void aec_dms_flexible_toggle(u8 toggle);
|
||||
int aec_dms_flexible_cfg_update(DMS_FLEXIBLE_CONFIG *cfg);
|
||||
int aec_dms_flexible_reboot(u8 enablebit);
|
||||
|
||||
/*获取风噪的检测结果,1:有风噪,0:无风噪*/
|
||||
int cvp_dms_get_wind_detect_state(void);
|
||||
|
||||
/*单双麦切换状态
|
||||
* 0: 正常双麦 ;
|
||||
* 1: 副麦坏了,触发故障
|
||||
* -1: 主麦坏了,触发故障
|
||||
*/
|
||||
int cvp_dms_get_malfunc_state(void);
|
||||
|
||||
/*
|
||||
* 获取mic的能量值,开了MFDT_EN才能用
|
||||
* mic: 0 获取主麦能量
|
||||
* mic:1 获取副麦能量
|
||||
* return:返回能量值,[0~90.3],返回-1表示错误
|
||||
*/
|
||||
float cvp_dms_get_mic_energy(u8 mic);
|
||||
|
||||
typedef enum {
|
||||
DMS_FLEXIBLE_DUAL_MIC = 0, //双mic
|
||||
DMS_FLEXIBLE_USE_TALK_MIC, //通话mic(主麦)
|
||||
DMS_FLEXIBLE_USE_REF_MIC, //参考mic(副麦)
|
||||
} DMS_FLEXIBLE_MIC;
|
||||
|
||||
/* 话务耳机切换使用的mic
|
||||
* DMS_FLEXIBLE_DUAL_MIC :正常双麦话务耳机
|
||||
* DMS_FLEXIBLE_USE_TALK_MIC :使用主麦
|
||||
* DMS_FLEXIBLE_USE_REF_MIC :使用副麦
|
||||
*/
|
||||
int aec_dms_flexible_selete_mic(DMS_FLEXIBLE_MIC mic);
|
||||
|
||||
int cvp_dms_read_ref_data(void);
|
||||
int cvp_dms_flexible_read_ref_data(void);
|
||||
|
||||
/*
|
||||
* 获取风噪检测信息
|
||||
* wd_flag: 0 没有风噪,1 有风噪
|
||||
* 风噪强度r: 0~BIT(16)
|
||||
* wd_lev: 风噪等级,0:弱风,1:中风,2:强风
|
||||
* */
|
||||
int jlsp_get_wind_detect_info(int *wd_flag, int *wd_val, int *wd_lev);
|
||||
|
||||
#endif/*_COMMPROC_DMS_H_*/
|
||||
26
include_lib/media/cvp/commproc_ns.h
Normal file
26
include_lib/media/cvp/commproc_ns.h
Normal file
@ -0,0 +1,26 @@
|
||||
#ifndef _COMMPROC_NS_H_
|
||||
#define _COMMPROC_NS_H_
|
||||
|
||||
#include "generic/typedef.h"
|
||||
|
||||
typedef struct {
|
||||
char wideband;
|
||||
char mode;
|
||||
float AggressFactor;
|
||||
float MinSuppress;
|
||||
float NoiseLevel;
|
||||
} noise_suppress_param;
|
||||
|
||||
int noise_suppress_frame_point_query(noise_suppress_param *param);
|
||||
int noise_suppress_mem_query(noise_suppress_param *param);
|
||||
int noise_suppress_open(noise_suppress_param *param);
|
||||
int noise_suppress_close(void);
|
||||
int noise_suppress_run(short *in, short *out, int npoint);
|
||||
|
||||
enum {
|
||||
NS_CMD_NOISE_FLOOR = 1,
|
||||
NS_CMD_LOWCUTTHR,
|
||||
};
|
||||
int noise_suppress_config(u32 cmd, int arg, void *priv);
|
||||
|
||||
#endif/*_COMMPROC_NS_H_*/
|
||||
198
include_lib/media/cvp/commproc_tms.h
Normal file
198
include_lib/media/cvp/commproc_tms.h
Normal file
@ -0,0 +1,198 @@
|
||||
#ifndef _COMMPROC_DMS_H_
|
||||
#define _COMMPROC_DMS_H_
|
||||
|
||||
#include "generic/typedef.h"
|
||||
#include "cvp_common.h"
|
||||
|
||||
/*agc类型定义*/
|
||||
#define AGC_EXTERNAL 0
|
||||
#define AGC_INTERNAL 1
|
||||
|
||||
//tms_cfg:
|
||||
typedef struct {
|
||||
u8 ver; //Ver:01
|
||||
u8 mic_again; //MIC增益,default:3(0~14)
|
||||
u8 fb_mic_again; //FB MIC增益,default:3(0~14)
|
||||
u8 dac_again; //DAC增益,default:22(0~31)
|
||||
|
||||
u8 talk_mic_ch; //主MIC通道选择
|
||||
u8 talk_ref_mic_ch; //副MIC通道选择
|
||||
u8 talk_fb_mic_ch; //FB通道选择
|
||||
|
||||
u8 enable_module; //使能模块
|
||||
u8 ul_eq_en; //上行EQ使能,default:enable(disable(0), enable(1))
|
||||
u8 agc_type;
|
||||
union {
|
||||
/*AGC*/
|
||||
struct {
|
||||
float ndt_fade_in; //单端讲话淡入步进default: 1.3f(0.1 ~ 5 dB)
|
||||
float ndt_fade_out; //单端讲话淡出步进default: 0.7f(0.1 ~ 5 dB)
|
||||
float dt_fade_in; //双端讲话淡入步进default: 1.3f(0.1 ~ 5 dB)
|
||||
float dt_fade_out; //双端讲话淡出步进default: 0.7f(0.1 ~ 5 dB)
|
||||
float ndt_max_gain; //单端讲话放大上限,default: 12.f(0 ~ 24 dB)
|
||||
float ndt_min_gain; //单端讲话放大下限,default: 0.f(-20 ~ 24 dB)
|
||||
float ndt_speech_thr; //单端讲话放大阈值,default: -50.f(-70 ~ -40 dB)
|
||||
float dt_max_gain; //双端讲话放大上限,default: 12.f(0 ~ 24 dB)
|
||||
float dt_min_gain; //双端讲话放大下限,default: 0.f(-20 ~ 24 dB)
|
||||
float dt_speech_thr; //双端讲话放大阈值,default: -40.f(-70 ~ -40 dB)
|
||||
float echo_present_thr; //单端双端讲话阈值,default:-70.f(-70 ~ -40 dB)
|
||||
} agc_ext;
|
||||
|
||||
/*JLSP AGC*/
|
||||
struct {
|
||||
int min_mag_db_level;
|
||||
int max_mag_db_level;
|
||||
int addition_mag_db_level;
|
||||
int clip_mag_db_level;
|
||||
int floor_mag_db_level;
|
||||
} agc_int;
|
||||
} agc;
|
||||
/*aec*/
|
||||
int aec_process_maxfrequency; //default:8000,range[3000:8000]
|
||||
int aec_process_minfrequency; //default:0,range[0:1000]
|
||||
int af_length; //default:128 range[128:256]
|
||||
/*nlp*/
|
||||
int nlp_process_maxfrequency; //default:8000,range[3000:8000]
|
||||
int nlp_process_minfrequency; //default:0,range[0:1000]
|
||||
float overdrive; //default:1,range[0:30]
|
||||
/*ans*/
|
||||
float aggressfactor; //default:1.25,range[1:2]
|
||||
float minsuppress; //default:0.04,range[0.01:0.1]
|
||||
float init_noise_lvl; //default:-75dB,range[-100:-30]
|
||||
/*enc*/
|
||||
int enc_process_maxfreq; //default:8000,range[3000:8000]
|
||||
int enc_process_minfreq; //default:0,range[0:1000]
|
||||
int sir_maxfreq; //default:3000,range[1000:8000]
|
||||
float mic_distance; //default:0.015,range[0.035:0.015]
|
||||
float target_signal_degradation;//default:1,range[0:1]
|
||||
float enc_aggressfactor; //default:1.f,range[0:4]
|
||||
float enc_minsuppress; //default:0.09f,range[0:0.1]
|
||||
float Tri_SnrThreshold0; //sir设定阈值
|
||||
float Tri_SnrThreshold1; //sir设定阈值
|
||||
float Tri_CompenDb; //mic增益补偿
|
||||
/*wn*/
|
||||
float wn_msc_th; //双麦非相关性阈值,default:0.6f(0 ~ 1)
|
||||
float ms_th; //麦增益能量阈值, default:80.f(0-255)dB
|
||||
int wn_gain_offset; //风噪能量增益偏移阈值
|
||||
|
||||
} _GNU_PACKED_ AEC_TMS_CONFIG;
|
||||
|
||||
struct tms_attr {
|
||||
u8 ul_eq_en: 1;
|
||||
u8 wideband: 1;
|
||||
u8 wn_en: 1;
|
||||
u8 dly_est : 1;
|
||||
u8 aptfilt_only: 1;
|
||||
u8 reserved: 3;
|
||||
|
||||
u8 dst_delay;/*延时估计目标延时*/
|
||||
u8 EnableBit;
|
||||
u8 FB_EnableBit;
|
||||
u8 packet_dump;
|
||||
u8 SimplexTail;
|
||||
u8 output_sel;/*dms output选择*/
|
||||
u16 hw_delay_offset;/*dac hardware delay offset*/
|
||||
u16 wn_gain;/*white_noise gain*/
|
||||
u8 agc_type; /*agc类型*/
|
||||
/*AGC*/
|
||||
float AGC_NDT_fade_in_step; //in dB
|
||||
float AGC_NDT_fade_out_step; //in dB
|
||||
float AGC_NDT_max_gain; //in dB
|
||||
float AGC_NDT_min_gain; //in dB
|
||||
float AGC_NDT_speech_thr; //in dB
|
||||
float AGC_DT_fade_in_step; //in dB
|
||||
float AGC_DT_fade_out_step; //in dB
|
||||
float AGC_DT_max_gain; //in dB
|
||||
float AGC_DT_min_gain; //in dB
|
||||
float AGC_DT_speech_thr; //in dB
|
||||
float AGC_echo_present_thr; //In dB
|
||||
int AGC_echo_look_ahead; //in ms
|
||||
int AGC_echo_hold; // in ms
|
||||
/*jlsp agc*/
|
||||
int min_mag_db_level;
|
||||
int max_mag_db_level;
|
||||
int addition_mag_db_level;
|
||||
int clip_mag_db_level;
|
||||
int floor_mag_db_level;
|
||||
/*AEC*/
|
||||
int aec_process_maxfrequency; //default:8000,range[3000:8000]
|
||||
int aec_process_minfrequency; //default:0,range[0:1000]
|
||||
int af_length; //default:128 range[128:256]
|
||||
/*NLP*/
|
||||
int nlp_process_maxfrequency; //default:8000,range[3000:8000]
|
||||
int nlp_process_minfrequency; //default:0,range[0:1000]
|
||||
float overdrive; //default:1,range[0:30]
|
||||
/*ANS*/
|
||||
float aggressfactor; //default:1.25,range[1:2]
|
||||
float minsuppress; //default:0.04,range[0.01:0.1]
|
||||
float init_noise_lvl; //default:-75db,range[-100:-30]
|
||||
/*DNS Parameters*/
|
||||
float DNS_highGain; //EQ强度 range[1.0:3.5]
|
||||
float DNS_rbRate; //混响强度 range[0:0.9];
|
||||
int enhance_flag; //是否高频增强 range[0,1]
|
||||
/*ENC*/
|
||||
int Tri_CutTh; //fb麦统计截止频率
|
||||
float Tri_SnrThreshold0; //sir设定阈值
|
||||
float Tri_SnrThreshold1; //sir设定阈值
|
||||
float *Tri_TransferFunc; //fb -> main传递函数
|
||||
float Tri_FbCompenDb; //fb补偿增益
|
||||
int Tri_TfEqSel; //eq,传递函数的选择:0选择eq,1选择传递函数,2选择传递函数和eq
|
||||
int enc_process_maxfreq; //default:8000,range[3000:8000]
|
||||
int enc_process_minfreq; //default:0,range[0:1000]
|
||||
int sir_maxfreq; //default:3000,range[1000:8000]
|
||||
float mic_distance; //default:0.015,range[0.035:0.015]
|
||||
float target_signal_degradation;//default:1,range[0:1]
|
||||
float enc_aggressfactor; //default:4.f,range[0:4]
|
||||
float enc_minsuppress; //default:0.09f,range[0:0.1]
|
||||
float Tri_CompenDb; //mic增益补偿, dB
|
||||
int Tri_Bf_Enhance; //bf是否高频增强
|
||||
/*wn*/
|
||||
float wn_msc_th; //双麦非相关性阈值,default:0.6f(0 ~ 1)
|
||||
float ms_th; //麦增益能量阈值, default:80.f(0-255)dB
|
||||
int wn_gain_offset; //风噪能量增益偏移阈值
|
||||
/*common*/
|
||||
float global_minsuppress; //default:0.0,range[0.0:0.09]
|
||||
/*data handle*/
|
||||
int (*cvp_advanced_options)(void *aec,
|
||||
void *nlp,
|
||||
void *ns,
|
||||
void *enc,
|
||||
void *agc,
|
||||
void *wn,
|
||||
void *mfdt);
|
||||
int (*aec_probe)(short *mic0, short *mic2, short *mic3, short *ref, u16 len);
|
||||
int (*aec_post)(s16 *dat, u16 len);
|
||||
int (*aec_update)(u8 EnableBit);
|
||||
int (*output_handle)(s16 *dat, u16 len);
|
||||
|
||||
/*Extended-Parameters*/
|
||||
u16 ref_sr;
|
||||
u16 ref_channel; /*参考数据声道数*/
|
||||
u16 adc_ref_en; /*adc回采参考数据使能*/
|
||||
};
|
||||
|
||||
s32 aec_tms_init(struct tms_attr *attr);
|
||||
s32 aec_tms_exit();
|
||||
s32 aec_tms_fill_in_data(void *dat, u16 len);
|
||||
int aec_tms_fill_in_ref_data(void *dat, u16 len);
|
||||
int aec_tms_fill_in_ref_1_data(void *dat, u16 len);
|
||||
s32 aec_tms_fill_ref_data(void *dat, u16 len);
|
||||
void aec_tms_toggle(u8 toggle);
|
||||
int aec_tms_cfg_update(AEC_TMS_CONFIG *cfg);
|
||||
int aec_tms_reboot(u8 enablebit);
|
||||
|
||||
int cvp_tms_read_ref_data(void);
|
||||
|
||||
/*
|
||||
* 获取风噪检测信息
|
||||
* wd_flag: 0 没有风噪,1 有风噪
|
||||
* 风噪强度r: 0~BIT(16)
|
||||
* wd_lev: 风噪等级,0:弱风,1:中风,2:强风
|
||||
* */
|
||||
int jlsp_tms_get_wind_detect_info(int *wd_flag, int *wd_val, int *wd_lev);
|
||||
|
||||
/*tri_en: 1 正常3MIC降噪
|
||||
* 0 变成2MIC降噪,不使用 FB MIC数据*/
|
||||
int jlsp_tms_mode_choose(u8 tri_en);
|
||||
|
||||
#endif/*_COMMPROC_DMS_H_*/
|
||||
60
include_lib/media/cvp/cvp_common.h
Normal file
60
include_lib/media/cvp/cvp_common.h
Normal file
@ -0,0 +1,60 @@
|
||||
#ifndef _CVP_COMMON_H_
|
||||
#define _CVP_COMMON_H_
|
||||
|
||||
/*DMS版本定义*/
|
||||
#define DMS_GLOBAL_V100 0xB1
|
||||
#define DMS_GLOBAL_V200 0xB2
|
||||
|
||||
/*
|
||||
* V200新算法回声消除nlp模式
|
||||
* JLSP_NLP_MODE1: 模式1为单独的NLP回声抑制,回声压制会偏过,该模式下NLP模块可以单独开启
|
||||
* JLSP_NLP_MODE2: 模式2下回声信号会先经过AEC线性压制,然后进行NLP非线性压制
|
||||
* 此模式NLP不能单独打开需要同时打开AEC,使用AEC模块压制不够时,建议开启该模式
|
||||
*/
|
||||
#define JLSP_NLP_MODE1 0x01 //模式一(默认)
|
||||
#define JLSP_NLP_MODE2 0x02 //模式二
|
||||
|
||||
/*
|
||||
* V200新算法风噪降噪模式
|
||||
* JLSP_WD_MODE1: 模式1为常规的降风噪模式,风噪残余会偏大些
|
||||
* JLSP_WD_MODE2: 模式2为神经网络降风噪,风噪抑制会比较干净,但是会需要多消耗31kb的flash
|
||||
*/
|
||||
#define JLSP_WD_MODE1 0x01 //常规降噪
|
||||
#define JLSP_WD_MODE2 0x02 //nn降风噪,目前该算法启用会多31kflash
|
||||
|
||||
/*DMS输出选择*/
|
||||
typedef enum {
|
||||
DMS_OUTPUT_SEL_DEFAULT = 0, /*默认输出:dms处理后的数据*/
|
||||
DMS_OUTPUT_SEL_MASTER, /*主mic原始数据*/
|
||||
DMS_OUTPUT_SEL_SLAVE, /*副mic原始数据*/
|
||||
DMS_OUTPUT_SEL_FBMIC, /*FB mic原始数据*/
|
||||
} CVP_OUTPUT_ENUM;
|
||||
|
||||
/*
|
||||
*********************************************************************
|
||||
* Audio CVP IOCTL
|
||||
* Description: CVP功能配置
|
||||
* Arguments : cmd 操作命令
|
||||
* value 操作数
|
||||
* priv 操作内存地址
|
||||
* Return : 0 成功 其他 失败
|
||||
* Note(s) : (1)比如动态开关降噪NS模块:
|
||||
* aec_dms_ioctl(CVP_NS_SWITCH,1,NULL); //降噪关
|
||||
* aec_dms_ioctl(CVP_NS_SWITCH,0,NULL); //降噪开
|
||||
*********************************************************************
|
||||
*/
|
||||
enum {
|
||||
CVP_AEC_SWITCH = 1,
|
||||
CVP_NLP_SWITCH,
|
||||
CVP_NS_SWITCH,
|
||||
CVP_AGC_SWITCH,
|
||||
CVP_ENC_SWITCH,
|
||||
CVP_AGC_MAX_LVL,
|
||||
};
|
||||
int aec_ioctl(int cmd, int value, void *priv);
|
||||
int aec_dms_ioctl(int cmd, int value, void *priv);
|
||||
int aec_dms_flexible_ioctl(int cmd, int value, void *priv);
|
||||
|
||||
|
||||
#endif /*_CVP_COMMON_H_*/
|
||||
|
||||
260
include_lib/media/cvp/lib_h/jlsp_ns.h
Normal file
260
include_lib/media/cvp/lib_h/jlsp_ns.h
Normal file
@ -0,0 +1,260 @@
|
||||
#ifndef __JLSP_NS_H__
|
||||
#define __JLSP_NS_H__
|
||||
|
||||
//出现单个麦掩蔽参数
|
||||
typedef struct {
|
||||
float detect_time;//检测时间
|
||||
float detect_eng_diff_thr; /*0~-90 dB 两个mic能量差异持续大于此阈值超过检测时间则会检测为故障*/
|
||||
float detect_eng_lowerbound;// 0~-90 dB start detect when mic energy lower than this
|
||||
int MalfuncDet_MaxFrequency;//检测频率上限
|
||||
int MalfuncDet_MinFrequency;//检测频率下限
|
||||
int OnlyDetect;// 0 -> 故障切换到单mic模式, 1-> 只检测不切换
|
||||
} JLSP_dms_micsel_cfg;
|
||||
|
||||
//beamforming参数设置
|
||||
|
||||
typedef struct {
|
||||
int UseExWeight; //挂空
|
||||
int *ENC_WeightA; //挂空
|
||||
int *ENC_WeightB; //挂空
|
||||
int ENC_Weight_Q; //挂空
|
||||
|
||||
int ENC_Process_MaxFrequency; //设定enc处理的最大频率,设定范围(3000~8000),默认8000
|
||||
int ENC_Process_MinFrequency; //设定enc处理的最小频率,设定范围(0~1000),默认为0
|
||||
int SIR_MaxFrequency; //设定enc信噪比处理最大频率,设定范围(1000~8000),默认3000
|
||||
float Mic_Distance; //设定主副mic的距离,单位(m),范围(0.015~35),默认0.015
|
||||
float Target_Signal_Degradation; //根据主副麦能量的diff值,设定范围(0~1),默认1.0
|
||||
float AggressFactor; //设置enc压制强度,设定范围(0~4),默认4
|
||||
float minSuppress; //设定enc抑制的最小值,设定范围(0~0.1),默认0.09
|
||||
|
||||
float compen_db; //补偿增益控制,单位(db),具体调节配合麦的增益协同调节,一般设定范围为(0~20)
|
||||
int bf_enhance; //该值默认设置为0,设为1时,高频成分会丰富些,但是低信噪比下高频噪声也会偏大
|
||||
int lowFreqHoldEn;
|
||||
float bfSupressFactor;
|
||||
} JLSP_dms_bf_cfg;
|
||||
|
||||
/*3麦降噪参数*/
|
||||
typedef struct {
|
||||
int Tri_CutTh; //fb麦统计截止频率
|
||||
float Tri_SnrThreshold0; //sir设定阈值
|
||||
float Tri_SnrThreshold1; //sir设定阈值
|
||||
float *Tri_TransferFunc; //fb -> main传递函数
|
||||
float Tri_FbAlignedDb; //fb和主副麦之间需要补偿增益
|
||||
float Tri_FbCompenDb; //fb补偿增益
|
||||
int Tri_TfEqSel; //eq,传递函数的选择:0选择eq,1选择传递函数,2选择传递函数和eq
|
||||
//int Tri_TransferMode; //传递函数模式选择,0:基于幅度的传递函数,1:基于幅度和相位的传递函数
|
||||
|
||||
|
||||
int Tri_Process_MaxFrequency;
|
||||
int Tri_Process_MinFrequency;
|
||||
int Tri_SIR_MaxFrequency;
|
||||
float Tri_Mic_Distance;
|
||||
float Tri_Target_Signal_Degradation;
|
||||
float Tri_AggressFactor;
|
||||
float Tri_MinSuppress;
|
||||
|
||||
float Tri_CompenDb; //mic增益补偿
|
||||
int Tri_Bf_Enhance;
|
||||
int Tri_LowFreqHoldEn;
|
||||
float Tri_SupressFactor;
|
||||
|
||||
} JLSP_tri_cfg;
|
||||
|
||||
//回声消除设置参数
|
||||
typedef struct {
|
||||
int AEC_Process_MaxFrequency; //设定回声消除处理的最大频率,设定范围(3000~8000),默认值为8000
|
||||
int AEC_Process_MinFrequency; //设定回声消除处理的最小频率,设定范围(0~1000),默认值为0
|
||||
int AF_Length; //挂空
|
||||
float muf; //设定aec滤波器的学习速率,默认0.02,设定范围(0.0001~0.5)
|
||||
} JLSP_dms_aec_cfg;
|
||||
|
||||
|
||||
//非线性回声压制设置参数
|
||||
typedef struct {
|
||||
int NLP_Process_MaxFrequency; //设定回声抑制的最大频率,设定范围(3000~8000),默认值为8000
|
||||
int NLP_Process_MinFrequency; //设定回声抑制的最小频率,设定范围(0~1000),默认值为0
|
||||
float OverDrive; //定设压制强度,越大压制越强,设定范围(0~5)默认为1.0
|
||||
} JLSP_dms_nlp_cfg;
|
||||
|
||||
|
||||
//dns参数设置
|
||||
typedef struct {
|
||||
float AggressFactor; //降噪强度,设置范围(0.3~6.0),默认值:1.0
|
||||
float minSuppress; //增益最小值控制,越小降噪越强,设置范围(0.0~1.0),默认为0.1
|
||||
float init_noise_lvl; //初始噪声水平
|
||||
float high_gain; //单麦高频增强,默认设置为1.0,设置范围为(1.0~3.0)
|
||||
float rb_rate; //单麦混响增强,默认设置为0.1,设置范围为(0~0.9)
|
||||
int enhance_flag; //是否开启双麦高频增强,默认为1
|
||||
} JLSP_dms_dns_cfg;
|
||||
|
||||
typedef struct {
|
||||
int min_mag_db_level; //语音能量放大下限阈值(单位db,默认-50,范围(-90db~-35db))
|
||||
int max_mag_db_level; //语音能量放大上限阈值(单位db,默认-3,范围(-90db~0db))
|
||||
int addition_mag_db_level; //语音补偿能量值(单位db,默认0,范围(0db~20db))
|
||||
int clip_mag_db_level; //语音最大截断能量值(单位db,默认-3,范围(-10db~db))
|
||||
int floor_mag_db_level; //语音最小截断能量值(单位db,默认-70,范围(-90db~-35db)
|
||||
} JLSP_agc_cfg;
|
||||
|
||||
//风噪检测参数设置
|
||||
typedef struct {
|
||||
float wn_msc_th; //双麦非相关性阈值 (0-1)
|
||||
float ms_th; //麦增益能量阈值(0-255)
|
||||
int wn_inty1;
|
||||
int wn_inty2;
|
||||
float wn_gain1;
|
||||
float wn_gain2;
|
||||
|
||||
int t1_bot; //低风噪等级能量下限阈值
|
||||
int t1_top; //低风噪等级能量上限阈值
|
||||
int t2_bot; //强风噪等级能量下限阈值
|
||||
int t2_top; //强风噪等级能量上限阈值
|
||||
int offset; //风噪能量增益偏移阈值
|
||||
|
||||
int t1_bot_cnt_limit; //风强变到弱风等级连续帧数计数,位宽16bit
|
||||
int t1_top_cnt_limit; //风强由弱风变到中风等级连续帧数计数,位宽16bit
|
||||
int t2_bot_cnt_limit; //风强由强风变到中风连续帧数计数,位宽16bit
|
||||
int t2_top_cnt_limit; //风强变到强风连续帧数计数,位宽16bit
|
||||
} JLSP_dms_wind_cfg;
|
||||
|
||||
/*
|
||||
gain_floor: 增益的最小值控制,范围0~1,建议值(0~0.2)之间
|
||||
over_drive: 控制降噪强度:
|
||||
0 < over_drive < 1,越小降噪强度越轻,太小噪声会很大;
|
||||
over_drive = 1,正常降噪
|
||||
over_drive > 1,降噪强度加强,越大降噪强度越强,太大会吃音
|
||||
建议调节范围0.3~3之间来控制降噪强度的强弱
|
||||
high_gain: 控制声音的宏亮度,范围(1.0f~3.5f),越大声音越宏亮,太大可能会使噪声增加, 为1.0f表示不做增强, 建议设置2.0f左右
|
||||
rb_rate: 混响强度,设置范围(0.0f~0.9f),越大混响越强, 为0.0f表示不增强, 建议默认设置0.5f
|
||||
*/
|
||||
|
||||
void *JLSP_ns_init(char *private_buffer, char *shared_buffer, float gain_floor, float over_drive, float high_gain, float rb_rate, int samplerate, const int is_dual);
|
||||
int JLSP_ns_get_heap_size(int *private_size, int *shared_size, int samplerate, int is_dual);
|
||||
|
||||
int JLSP_ns_reset(void *m);//单双麦共用
|
||||
void JLSP_ns_update_shared_buffer(void *m, char *shared_buffer);//单双麦共用
|
||||
int JLSP_ns_process(void *m, void *input, void *output, int *outsize);
|
||||
int JLSP_ns_free(void *m);//单双麦共用
|
||||
|
||||
void JLSP_ns_set_noiselevel(void *m, float noise_level_init);//单双麦共用
|
||||
|
||||
|
||||
/*功能:初始化snr相关参数
|
||||
* stop_freq: 高通滤波器的截止频率
|
||||
* snr_th: 人声阈值设定,即大于该值才会进行snr压制处理, 采用db进行设置, 默认-25db
|
||||
* commpress_params: 压制系数
|
||||
* 0db一下分为了5个区间进行压缩,压缩系数范围(0~3),越大压制越强,建议范围(0~1.0f)
|
||||
* snr < -10, 压制系数compress_params[4]
|
||||
* snr < -8, 压制系数compress_params[3]
|
||||
* snr < -5, 压制系数compress_params[2]
|
||||
* snr < -3, 压制系数compress_params[1]
|
||||
* snr < 0, 压制系数compress_params[0]
|
||||
*/
|
||||
void JLSP_init_snr(void *m, int stop_freq, int snr_th, float *compress_params);
|
||||
|
||||
/*功能: 获取当前帧snr
|
||||
* 返回:当前帧snr值
|
||||
*/
|
||||
float JLSP_get_snr(void *m);
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* 双麦降噪接口
|
||||
*/
|
||||
void JLSP_wd_single(unsigned char wd_act);
|
||||
/*
|
||||
*wd_flag: 0: no wind 1: wind
|
||||
*wd_val: wind strong bit(16)
|
||||
*wd_lev: wind level 0:弱风,1:中风, 2:强风
|
||||
*/
|
||||
int JLSP_get_wd_info(void *handle, int *wd_flag, int *wd_val, int *wd_lev);
|
||||
|
||||
/*设置使用的模块*/
|
||||
void JLSP_enable_module(int Enablebit);//仅双麦使用
|
||||
|
||||
/*初始化*/
|
||||
void *JLSP_DualMicSystem_Init(char *private_buf,
|
||||
char *share_buf,
|
||||
void *aec_cfg,
|
||||
void *nlp_cfg,
|
||||
void *bf_cfg,
|
||||
void *dns_cfg,
|
||||
void *wn_cfg,
|
||||
void *micsel_cfg,
|
||||
int samplerate,
|
||||
int EnableBit);
|
||||
|
||||
/*数据处理,返回风噪大小*/
|
||||
int JLSP_DualMicSystem_Process(void *handle,
|
||||
short *near,
|
||||
short *near_ref,
|
||||
short *far,
|
||||
short *out,
|
||||
int points);
|
||||
|
||||
//检测各个麦是否被堵住或者破坏相关信息
|
||||
/*获取单双麦切换状态
|
||||
* 0: 正常双麦 ;
|
||||
* 1: 副麦坏了,触发故障
|
||||
* -1: 主麦坏了,触发故障
|
||||
*/
|
||||
int JLSP_DualMicSystem_GetMicState(void *handle);
|
||||
/*
|
||||
* 获取mic的能量值,开了MFDT_EN才能用
|
||||
* mic: 0 获取主麦能量
|
||||
* mic:1 获取副麦能量
|
||||
* return:返回能量值,[0~90.3]
|
||||
*/
|
||||
float JLSP_DualMicSystem_GetMicEnergy(void *handle, unsigned char mic);
|
||||
/*设置初始使用单双麦切换状态
|
||||
* 0: 正常双麦 ;
|
||||
* 1: 副麦坏了,触发故障
|
||||
* -1: 主麦坏了,触发故障
|
||||
*/
|
||||
void JLSP_DualMicSystem_SetMicState(void *handle, int state);
|
||||
|
||||
//int JLSP_DualMicSystem_GetWdInfo(void* handle, int* wd_flag, int* wd_val, int* wd_lev);
|
||||
//int JLSP_DualMicSystem_Get_Size(int* private_size, int* share_size, int samplerate, const int is_dual);
|
||||
//int JLSP_DualMicSystem_Reset(void* m);
|
||||
//void JLSP_DualMicSystem_Update_Shared_Buffer(void* m, char* shared_buffer);
|
||||
//int JLSP_DualMicSystem_Free(void* m);
|
||||
//void JLSP_DualMicSystem_Set_Noiselevel(void* m, float noise_level_init);
|
||||
|
||||
/*
|
||||
* 三麦降噪接口
|
||||
*/
|
||||
/*设置使用的模块*/
|
||||
void JLSP_TriMicSystem_EnableModule(int Enablebit, int Enablebit_Ex);
|
||||
|
||||
/*获取风噪信息*/
|
||||
int JLSP_TriMicSystem_GetWdInfo(void *handle, int *wd_flag, int *wd_val, int *wd_lev);
|
||||
|
||||
/*获取buf大小*/
|
||||
int JLSP_TriMicSystem_Get_Size(int *private_size, int *share_size, int samplerate, const int is_dual);
|
||||
|
||||
/*初始化*/
|
||||
void *JLSP_TriMicSystem_Init(char *private_buf,
|
||||
char *share_buf,
|
||||
void *aec_cfg,
|
||||
void *nlp_cfg,
|
||||
void *tri_cfg,
|
||||
void *dns_cfg,
|
||||
void *wn_cfg,
|
||||
void *agc_cfg,
|
||||
int samplerate,
|
||||
int EnableBit);
|
||||
|
||||
/*数据处理,返回风噪大小*/
|
||||
int JLSP_TriMicSystem_Process(void *handle,
|
||||
short *near,
|
||||
short *near_ref,
|
||||
short *fb,
|
||||
short *far,
|
||||
short *out,
|
||||
int InDataLen);
|
||||
|
||||
/*tri_en: 1 正常3MIC降噪
|
||||
* 0 变成2MIC降噪,不使用 FB MIC数据*/
|
||||
void JLSP_TriMicSystem_ModeChoose(void *handle, unsigned char tri_en);
|
||||
#endif
|
||||
Reference in New Issue
Block a user