SSU_SE算法使用参考


REVISION HISTORY

Revision No.
Description
Date
1.1.0
  • Initial release
  • 05/01/2021
    1.1.1
  • Add noise type and intensity option
  • Add IaaSe_Set function
  • 06/25/2021
    1.1.2
  • Modify IaaSe_Run API and library name
  • 06/30/2021
    1.1.3
  • Add stereo process mode
  • 07/01/2021
    1.1.4
  • Add IaaSe_GetInputSamples API
  • Add more detail description
  • 07/12/2021
    1.1.5
  • Modify Iaa_Run API and example
  • 08/12/2021
    1.1.6
  • Modify error code
  • 10/18/2021
    2.0.0
  • 2.0 version
  • 11/29/2022

    1. 概述

    1.1. 算法说明

    语音增强(Speech Enhancement, SE)算法是对通过AI算法对输入语音进行增强处理,可以抑制稳态噪声和非稳态噪声。

    1.2. 算法规格

    本算法工作采样率为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算法资源
    IaaSsl_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);

    • 形参

    参数名称 描述 输入/输出
    handle SE算法handle 输入
    • 返回值
    返回值 结果
    非0值 成功。单通道返回值为128,双通道返回值为256
    -1 失败
    • 依赖

    • 头文件: 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……。

    • 相关数据类型及接口

    IaaSe_Init

    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。

    • 相关数据类型及接口

    IaaSe_SetConfig

    3.4. AudioSeConfig_t

    • 说明

    定义SE算法参数结构体。

    • 定义

      typedef struct{

        AudioSeNoiseType_e noiseType;
      
        int normalize;
      
        int intensity;
      
        int smooth;
      

      }AudioSeInit_t;

    • 成员

    成员名称 描述
    noiseType 抑制噪声类型
    intensity 抑制噪声强度, 取值范围[1~10], 步长为1。1表示抑制强度最低,10表示抑制强度最高,推荐值5
    normalize 标准化参数,小音量时启用,推荐值20000; 不使用时置为0
    smooth Normalize启用时平滑因子,取值范围[1~10], 数值越大越平滑,推荐值5
    • 相关数据类型及接口

    IaaSe_SetConfig

    3.5. SE_HANDLE

    • 说明

    定义SE算法的句柄类型。

    • 定义

      typedef void* SE_HANDLE;

    • 成员

    成员名称 描述
    • 注意事项

    无。

    • 相关数据类型及接口

    IaaSe_Init

    IaaSe_SetConfig

    IaaSe_GetConfig

    IaaSe_Free

    IaaSe_Run

    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 平滑因子强度不支持