SSTAR_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
    2.0.1
  • Modify APIs version
  • 04/11/2022
    2.1.0
  • update normalize
  • 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……。

    • 相关数据类型及接口

      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 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语音增强后标准化
    • 相关数据类型及接口

      IaaSe_SetConfig

    3.5. 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阈值不支持