SSTAR_SE算法使用参考
REVISION HISTORY¶
Revision No. | Description |
Date |
---|---|---|
1.1.0 | 05/01/2021 | |
1.1.1 | 06/25/2021 | |
1.1.2 | 06/30/2021 | |
1.1.3 | 07/01/2021 | |
1.1.4 | 07/12/2021 | |
1.1.5 | 08/12/2021 | |
1.1.6 | 10/18/2021 | |
2.0.0 | 11/29/2022 | |
2.0.1 | 04/11/2022 | |
2.1.0 | 12/14/2023 |
1. 概述¶
1.1. 算法说明¶
语音增强(Speech Enhancement, SE)算法是对通过AI算法对输入语音进行增强处理,可以抑制稳态噪声和非稳态噪声。
1.2. 算法规格¶
本算法工作采样率为8k/16kHz,每一帧长度为128个采样点(8ms)。
2. API 参考¶
2.1. 功能模块API¶
API名称 | 功能 |
---|---|
IaaSe_GetBufferSize | 获取SE算法运行需要的内存大小 |
IaaSe_Init | 初始化SE算法 |
IaaSe_SetConfig | 设置SE算法参数 |
IaaSe_GetConfig | 打印SE算法参数 |
IaaSe_GetInputSamples | 获取SE算法输入样本点数目 |
IaaSe_Run | SE算法处理 |
IaaSe_Free | 释放SE算法资源 |
IaaSe_setCallbackFunc | SE算法验证回调函数 |
2.2. IaaSe_GetBufferSize¶
-
功能
获取SE算法运行所需要的内存大小。
-
语法
int IaaSe_GetBufferSize(void);
-
形参
参数名称 描述 输入/输出 -
返回值
返回值为SE算法运行所需要的内存大小。
-
依赖
-
头文件: AudioSeProcess.h
-
库文件: libSE_LINUX.so/ libSE_LINUX.a
-
-
注意
该接口仅返回需要的内存大小,申请和释放内存的动作需应用来处理。
-
举例
无。
2.3. IaaSe_Init¶
-
功能
初始化SE算法需要的内存。
-
语法
SE_HANDLE IaaSe_Init(char* workBufAddress, AudioSeInit_t *seInit);
-
形参
参数名称 描述 输入/输出 workBufAddress SE算法使用的内存地址 输入 seInit SE算法的初始化结构体指针 输入 -
返回值
返回值 结果 handle 成功 NULL 失败 -
依赖
-
头文件: AudioSeProcess.h
-
库文件: libSE_LINUX.so/ libSE_LINUX.a
-
-
注意
- SE算法仅支持16kHz采样率,16bit采样位宽。
-
举例
无。
2.4. IaaSe_SetConfig¶
-
功能
设置SE算法参数。
-
语法
int IaaSe_SetConfig(SE_HANDLE handle, AudioSeConfig_t seConfig);
-
形参
参数名称 描述 输入/输出 handle SE算法handle 输入 seConfig SE算法参数设置结构体 输入 -
返回值
返回值 结果 0 成功 其他值 失败,参照错误码 -
依赖
-
头文件: AudioSeProcess.h
-
库文件: libSE_LINUX.so/ libSE_LINUX.a
-
2.5. IaaSe_GetConfig¶
-
功能
设置SE算法参数。
-
语法
int IaaSe_GetConfig(SE_HANDLE handle);
-
形参
参数名称 描述 输入/输出 handle SE算法handle 输入 -
返回值
返回值 结果 0 成功 其他值 失败, 参照错误码 -
依赖
-
头文件: AudioSeProcess.h
-
库文件: libSE_LINUX.so/ libSE_LINUX.a
-
2.6. IaaSe_GetInputSamples¶
-
功能
获取SE算法输入样本点数目。
-
语法
int IaaSe_GetInputSamples(SE_HANDLE handle, int *samples);
-
形参
参数名称 描述 输入/输出 handle SE算法handle 输入 samples SE算法输入样本数目 输出 -
返回值
返回值 结果 0 成功 非0 失败,参照错误码 -
依赖
-
头文件: AudioSeProcess.h
-
库文件: libSE_LINUX.so/ libSE_LINUX.a
-
-
注意
这个函数并不是必须的,SE算法单通道返回值为128,双通道返回值为256。 根据采样位宽为16bit,单通道输入数组内存大小为128 * 16 bit,双通道输入数组内存大小为256 * 16bit。
2.7. IaaSe_Run¶
-
功能
SE算法处理函数。
-
语法
int IaaSe_Run(SE_HANDLE handle, short *input);
-
形参
参数名称 描述 输入/输出 handle 算法handle 输入 input 输入数据指针 输入/输出 -
返回值
返回值 结果 0 成功 其他值 失败,参照错误码 -
依赖
-
头文件: AudioSeProcess.h
-
库文件: libSE_LINUX.so/ libSE_LINUX.a
-
-
举例
参考Demo code
2.8. IaaSe_Free¶
-
功能
释放SE算法的资源。
-
语法
int IaaSe_Free(SE_HANDLE handle);
-
形参
参数名称 描述 输入/输出 handle SE算法handle 输入 -
返回值
返回值 结果 0 成功 其他值 失败,参照错误码 -
依赖
-
头文件: AudioSeProcess.h
-
库文件: libSE_LINUX.so/ libSE_LINUX.a
-
-
注意
- 必须先调用IaaSe_Free,再释放供SE算法所使用的内存。
2.9. IaaSe_setCallbackFunc¶
-
功能
SSL算法验证回调函数(暂不支持)。
-
语法
int IaaSe_setCallbackFunc(int(*log)(const char *szFmt, ...), int(*envSet)(char *key, char *par), int(*envGetString)(char *var, char *buf, unsigned int size), int(*envSave)(void), int(*readUuid)(unsigned long long *u64Uuid));
-
依赖
-
头文件: AudioSeProcess.h
-
库文件: libSE_LINUX.so/ libSE_LINUX.a
-
3. SE 数据类型¶
3.1. SE模块相关数据类型定义¶
数据类型 | 定义 |
---|---|
AudioSeInit_t | SE算法初始化数据结构体类型 |
AudioSeNoiseType_e | SE算法噪声选择枚举类型 |
AudioSeConfig_t | SE算法参数设置结构体类型 |
SE_HANDLE | SE算法句柄类型 |
3.2. AudioSeInit_t¶
-
说明
定义SE算法的配置参数结构体。
-
定义
typedef struct{ int sampleRate; int bitWidth; int channel; }AudioSeInit_t;
-
成员
成员名称 描述 sampleRate 语音采样率 bitWidth 语音采样位宽 channel 语音通道数,取值范围[1, 2], 1表示单通道, 2表示双通道 -
注意事项
-
采样位宽只支持16bit, 采样率只支持16kHz。
-
双通道数据按左右声道交错存放,数据格式为L,R,L,R,L,R……。
-
-
相关数据类型及接口
3.3. AudioSeNoiseType_e¶
-
说明
定义SE算法抑制噪声类型。
-
定义
typedef enum{ IAA_SE_OFFICE_NOISE = 0, IAA_SE_TRAFFIC_NOISE, IAA_SE_ALL_NOISE, }AudioSeNoiseType_e;
-
成员
成员名称 描述 IAA_SE_OFFICE_NOISE 室内场景配置 IAA_SE_ TRAFFIC _NOISE 室外场景配置 IAA_SE_ALL_NOISE 通用配置 -
注意事项
- 目前只支持IAA_SE_ALL_NOISE。
-
相关数据类型及接口
3.4. AudioSeConfig_t¶
-
说明
定义SE算法参数结构体。
-
定义
typedef struct{ AudioSeNoiseType_e noiseType; int intensity; int normalize; int smooth; int normalizeMode; int normalizeVadThreshold; int normalizePosition; }AudioSeConfig_t;
-
成员
成员名称 描述 noiseType 抑制噪声类型 intensity 抑制噪声强度, 取值范围[1~10], 步长为1。1表示抑制强度最低,10表示抑制强度最高,推荐值5 normalize 标准化参数,小音量时启用,推荐值20000; 不使用时置为0 smooth 标准化平滑因子[1~10], 数值越大越平滑,推荐值5 normalizeMode 标准化模式,0固定增益标准化,1自适应标准化 normalizeVadThreshold 标准化模式VAD阈值,取值范围[-80, 0] normalizePosition 标准化位置,0语音增强前标准化,1语音增强后标准化 -
相关数据类型及接口
3.5. SE_HANDLE¶
-
说明
定义SE算法的句柄类型。
-
定义
typedef void* SE_HANDLE;
-
成员
成员名称 描述 -
注意事项
无。
-
相关数据类型及接口
4. 错误码¶
SE API 错误码如表下所示:
错误码 | 宏定义 | 描述 |
---|---|---|
0x00000000 | ALGO_SE_RET_SUCCESS | SE运行成功 |
0x70000401 | ALGO_SE_RET_INVALID_LICENSE | 授权码错误/试用时间结束 |
0x70000402 | ALGO_SE_RET_INVALID_HANDLE | HANDLE无效 |
0x70000403 | ALGO_SE_RET_INVALID_SAMPLERATE | 采样率不支持 |
0x70000404 | ALGO_SE_RET_INVALID_BITWIDTH | 采样位数不支持 |
0x70000405 | ALGO_SE_RET_INVALID_CHANNEL | 通道数不支持 |
0x70000406 | ALGO_SE_RET_INVALID_INTENSTIY | 噪声抑制强度不支持 |
0x70000407 | ALGO_SE_RET_INVALID_NOISETYPE | 噪声类型不支持 |
0x70000408 | ALGO_SE_RET_INVALID_NORMALIZE | 归一化幅值不支持 |
0x70000409 | ALGO_SE_RET_INVALID_SMOOTH | 平滑因子强度不支持 |
0x7000040A | ALGO_SE_RET_INVALID_NORMALIZE_POS | 标准化位置不支持 |
0x7000040B | ALGO_SE_RET_INVALID_NORMALIZE_MODE | 标准化模式不支持 |
0x7000040C | ALGO_SE_RET_INVALID_NORMALIZE_VADTHR | 标准化VAD阈值不支持 |