SSTAR_VC算法使用参考


REVISION HISTORY

Revision No.
Description
Date
1.0.0
  • Initial release
  • 10/11/2021
    2.0.0
  • New verion
  • 11/29/2022
    2.0.1
  • Modify APIs
  • 04/11/2023

    1. 概述

    1.1. 算法说明

    声音修改(Voice Change, VC)算法是对通过语音信号进行变速和变调处理从而达到变声的效果。

    2. API 参考

    2.1. 功能模块API

    API名称 功能
    IaaVc_GetBufferSize 获取VC算法运行需要的内存大小
    IaaVc_Init 初始化VC算法
    IaaVc_SetConfig 设置VC算法参数
    IaaVc_GetConfig 打印VC算法参数
    IaaVc_GetInputSamples 获取VC算法输入的采样点数
    IaaVc_Run VC算法处理
    IaaVc_Free 释放VC算法资源
    IaaVc_setCallbackFunc VC算法验证回调函数

    2.2. IaaVc_GetBufferSize

    • 功能

      获取VC算法运行所需要的内存大小。

    • 语法

      int IaaVc_GetBufferSize(void);
      
    • 形参

      参数名称 描述 输入/输出
    • 返回值

      返回值为VC算法运行所需要的内存大小。

    • 依赖

      • 头文件: AudioVcProcess.h

      • 库文件: libVC_LINUX.so/ libVC_LINUX.a

    • 注意

      该接口仅返回需要的内存大小,申请和释放内存的动作需应用来处理。

    • 举例

      无。

    2.3. IaaVc_Init

    • 功能

      初始化VC算法需要的内存。

    • 语法

      VC_HANDLE IaaVc_Init(char* workBufAddress, AudioVcInit_t *vcInit);
      
    • 形参

      参数名称 描述 输入/输出
      workBufAddress VC算法使用的内存地址 输入
      vcInit VC算法的初始化结构体指针 输入
    • 返回值

      返回值 结果
      handle 成功
      NULL 失败
    • 依赖

      • 头文件: AudioVcProcess.h

      • 库文件: libVC_LINUX.so/ libVC_LINUX.a

    • 注意

      • VC算法仅支持16bit采样位宽。
    • 举例

      无。

    2.4. IaaVc_SetConfig

    • 功能

      设置VC算法参数。

    • 语法

      int IaaVc_SetConfig(VC_HANDLE handle, AudioVcConfig_t vcConfig);
      
    • 形参

      参数名称 描述 输入/输出
      handle VC算法handle 输入
      vcConfig VC算法参数设置结构体 输入
    • 返回值

      返回值 结果
      0 成功
      其他值 失败, 参照错误码
    • 依赖

      • 头文件: AudioVcProcess.h

      • 库文件: libVC_LINUX.so/ libVC_LINUX.a

    2.5. IaaVc_GetConfig

    • 功能

      打印VC算法参数。

    • 语法

      int IaaVc_GetConfig(VC_HANDLE handle);
      
    • 形参

      参数名称 描述 输入/输出
      handle VC算法handle 输入
    • 返回值

      返回值 结果
      输入长度 成功
      其他值 失败, 参照错误码
    • 依赖

      • 头文件: AudioVcProcess.h

      • 库文件: libVC_LINUX.so/ libVC_LINUX.a

    2.6. IaaVc_GetInputSamples

    • 功能

      获取VC算法输入样本点数目。

    • 语法

      int IaaVc_GetInputSamples(VC_HANDLE handle, int *samples);
      
    • 形参

      参数名称 描述 输入/输出
      handle VC算法handle 输入
      samples VC算法输入样本数目 输出
    • 返回值

      返回值 结果
      0 成功
      非0 失败,参照错误码
    • 依赖

      • 头文件: AudioVcProcess.h

      • 库文件: libVC_LINUX.so/ libVC_LINUX.a

    2.7. IaaVc_Run

    • 功能

      VC算法处理函数。

    • 语法

      int IaaVc_Run(VC_HANDLE handle, short *data, int *length);
      
    • 形参

      参数名称 描述 输入/输出
      handle 算法handle 输入
      input 输入数据指针 输入/输出
      length 输出长度 输出
    • 返回值

      返回值 结果
      0 成功
      非0 失败,参照错误码
    • 依赖

      • 头文件: AudioVcProcess.h

      • 库文件: libVC_LINUX.so/ libVC_LINUX.a

    • 举例

      参考src目录下的demo代码VCer.c。

    • 注意

      • 算法处理后语音帧的长度并不固定,因此建议设立稍大的Buffer。

    2.8. IaaVc_Free

    • 功能

      释放VC算法的资源。

    • 语法

      int IaaVc_Free(VC_HANDLE handle);
      
    • 形参

      参数名称 描述 输入/输出
      handle VC算法handle 输入
    • 返回值

      返回值 结果
      0 成功
      其他值 失败,参照错误码
    • 依赖

      • 头文件: AudioVcProcess.h

      • 库文件: libVC_LINUX.so/ libVC_LINUX.a

    • 注意

      • 必须先调用IaaVc_Free,再释放供VC算法所使用的内存。

    2.9. IaaVc_setCallbackFunc

    • 功能

      VC算法验证的回调函数(暂不支持)。

    • 语法

      int IaaVc_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));
      
    • 依赖

      • 头文件: AudioVcProcess.h

      • 库文件: libVC_LINUX.so/ libVC_LINUX.a

    3. VC 数据类型

    3.1. VC模块相关数据类型定义

    数据类型 定义
    AudioVcSampleRate_e VC算法支持的采样率类型
    AudioVcInit_t VC算法初始化数据结构体类型
    AudioVcConfig_t VC算法参数设置结构体类型
    VC_HANDLE VC算法句柄类型

    3.2. AudioVcSampleRate_e

    • 说明

      定义VC算法支持的采样率类型。

    • 定义

      typedef enum{
      
          IAA_VC_SAMPLE_RATE_8000 = 8000,
      
          IAA_VC_SAMPLE_RATE_16000 = 16000,
      
          IAA_VC_SAMPLE_RATE_32000 = 32000,
      
          IAA_VC_SAMPLE_RATE_48000 = 48000,
      
      }AudioVcSampleRate_e;
      
    • 成员

      成员名称 描述
      IAA_VC_SAMPLE_RATE_8000 8000Hz采样率
      IAA_VC_SAMPLE_RATE_16000 16000Hz采样率
      IAA_VC_SAMPLE_RATE_32000 32000Hz采样率
      IAA_VC_SAMPLE_RATE_48000 48000Hz采样率
    • 相关数据类型及接口

      IaaVc_Init

    3.3. AudioVcInit_t

    • 说明

      定义VC算法的配置参数结构体。

    • 定义

      typedef struct{
      
          int sampleRate;
      
          int bitWidth;
      
      }AudioVcInit_t;
      
    • 成员

      成员名称 描述
      sampleRate 语音采样率
      bitWidth 语音采样位宽
    • 注意事项

      • 采样位宽只支持16bit
    • 相关数据类型及接口

      IaaVc_Init

    3.4. AudioVcConfig_t

    • 说明

      定义VC算法参数结构体。

    • 定义

      typedef struct{
      
          float speedFactor;
      
          float pitchFactor;
      
      }AudioVcConfig_t;
      
    • 成员

      成员名称 描述
      speedFactor 速度系数, 取值范围[0.5~2]。系数小于1表示语速变慢; 系数大于1表示语速变快。
      pitchFactor 音调系数, 取值范围[0.5~2]。系数小于1表示音调变低; 系数大于1表示音调变高。
    • 相关数据类型及接口

      IaaVc_SetConfig

    3.5. VC_HANDLE

    4. 错误码

    VC API 错误码如表下所示:

    错误码 宏定义 描述
    0x00000000 ALGO_VC_RET_SUCCESS VC运行成功
    0x70000401 ALGO_VC_RET_INVALID_LICENSE LICENSE无效
    0x70000402 ALGO_VC_RET_INVALID_HANDLE HANDLE无效
    0x70000403 ALGO_VC_RET_INVALID_SAMPLERATE 采样率不支持
    0x70000404 ALGO_VC_RET_INVALID_BITWIDTH 采样位数不支持
    0x70000405 ALGO_VC_RET_INVALID_CHANNEL 通道数不支持
    0x70000406 ALGO_VC_RET_INVALID_SPEEDFACTOR 速度系数不支持
    0x70000407 ALGO_VC_RET_INVALID_PTICHFACTOR 音调系数不支持