音效
噪声门限 (Noise Gate)
API说明
-
void ae_drc_noisegate_init(ae_drc_noisegate_init_t *drc_ng_init_param)
DRC音效之noise gate初始化
- 参数
drc_ng_init_param – ae_drc_noisegate_init_t 类型指针
- 返回
无
-
struct ae_drc_noisegate_init_t
noise gate初始化参数
-
uint32_t holdtime
保持时间是指当输入电平低于阈值时,增益在开始向稳态值下降之前保持的时间。参数范围[0,2),单位秒,定点数q30
-
uint32_t ltrhold
开始作用输入信号的最低等级。采样值,参数范围[0,32767]
-
uint32_t utrhold
作用输入信号的最高等级。采样值,参数范围[0,32767]
-
uint32_t release
当输入超过阈值范围时,应用增益从其最终值的90%下降到10%所需的时间。参数范围[0,2),单位秒,定点数q30
-
uint32_t attack
当输入低于阈值范围时,应用增益从其最终值的10%上升到90%所需的时间。参数范围[0,2),单位秒,定点数q30
-
uint32_t filter_freq
用于包络计算低通滤波器的截止频率,单位hz,范围 (0,fs/2)
-
uint32_t fs
音频采样频率,单位hz
-
uint32_t g_min
最小增益0-1,q30。当达到noise gate的阈值时的最小增益。
-
uint32_t holdtime
-
void ae_drc_noisegate(int16_t *in, int16_t *out, int32_t datalen)
DRC音效之noise gate处理
- 参数
in – 输入数据地址
out – 输出数据地址
datalen – 输入输出数据音频点数
- 返回
无
- Note
输入输出的数据地址必不能是同一块内存空间
- Note
输入输出数据点数必须为4的整数倍
使用方法
调用ae_drc_noisegate_init()函数初始化noise gate
调用ae_drc_noisegate()函数处理音频数据
参量均衡器 (Parametric Equalizer)
API说明
使用方法
eq工具,用于生成eq系数,使用方法如下图
![]()
调用ae_eq_init()函数初始化EQ
调用ae_eq()函数处理音频数据
音乐机器人音效 (Roboter_mix)
是声音随着音乐的节奏播放
API说明
- int ae_roboter_mix_need_alwaysbuf();
音乐机器人音效运行需要的ram空间大小,in byte
- void *ae_roboter_mix_init(void *heap);
音效之机器人变声音效初始化
- 参数
heap – 运行空间首地址,其大小必须足够,大小可由ae_roboter_mix_need_alwaysbuf()函数获取
- 返回
运行所需ram空间首地址
- void ae_roboter_mix_run(void *work_buf, short *m_buf, short *c_buf, int len, short *out_buf);
音效之音乐机器人变声音
- 参数
work_buf – 运行空间首地址,ae_roboter_mix_init()函数返回
m_buf – 输入需要调制的音频首地址
c_buf – 输入添加音乐的音频首地址
len – 音频输入帧长
out_buf – 输出处理后的音频数据长度
- 返回
None
- Note
输入输出地址可以是同一块数据空间
使用方法
调用ae_roboter_mix_need_alwaysbuf()获取运行需要ram空间大小,并分配所需要的ram
ae_roboter_mix_init()函数初始化效果
调用ae_roboter_mix_run()函数处理音频数据
机器人音效 (Roboter)
API说明
- int32_t ae_roboter_init(int32_t frame_step, int32_t always_buff[768], int32_t temp_buff[1026]);
音效之机器人变声音效初始化
- 参数
frame_step – 每帧数据的步进,它必须为每帧输入数据长度的约数,它的值影响机器人音效的效果
always_buff – 总长为3072byte空间,在机器人音效ae_roboter()函数不再调用之前,不可篡改、复用的空间
temp_buff – 总长4104byte空间,在机器人音效不调用ae_roboter()时,可篡改、复用的空间
- Return 0
成功
- int32_t ae_roboter(int16_t *input, int16_t *output, int32_t len);
音效之机器人变声音
- 参数
input – 输入音频首地址
output – 输出音频首地址
len – 输入音频点数量
- Return 0
成功
- Return -1
失败,len 必须为初始化参数 frame_step的整数倍。
- Note
输入输出地址可以是同一块数据空间
- Note
!!!计算算力较高,在cpu 100Mhz,nor 50Mhz,统计每帧算力 75MCPS
使用方法
调用ae_roboter_init()函数初始化ROBOTER效果
调用ae_roboter()函数处理音频数据
回声音效 (Echo)
API说明
- int32_t kss_ae_echo_need_buf(int delay_len);
获取回声音效运行需要的ram空间大小,in byte
- 参数
delay_len – 回声延迟线长度,in samples
- 返回
运行所需ram空间大小
- int32_t kss_ae_echo_init(void *work_buf, int delay_len, int gFB, int gFF);
初始化回声
- 参数
work_buf – echo工作sam地址,其空间必须足够,可由kss_ae_echo_need_buf()获取需要空间大小
delay_len – 回声延迟线长度,in samples ,影响回声出现时间
gFB – 回声衰减 q29 直观感受为影响同一个音重复次数
gFF – 回声缩放 q29 影响回声音量大小
- Return 0
工作ram空间首地址
- int32_t kss_ae_echo_run(void *work_buf, short *inbuf, short *outbuf, int len);
音效之机器人变声音
- 参数
work_buf – echo工作的首地址,kss_ae_echo_init()的返回值
input – 输入音频首地址
output – 输出音频首地址
len – 输入音频点数量
- Return 0
成功
- Return -1
失败
- Note
输入输出地址可以是同一块数据空间
使用方法
调用kss_ae_echo_need_buf()获取echo运行需要ram空间大小,并分配所需要的ram
kss_ae_echo_init()函数初始化echo效果
调用kss_ae_echo_run()函数处理音频数据
颤音音效 (RM)
API说明
- int32_t ae_rm_need_buf(int delay_len);
获取颤音音效运行需要的ram空间大小,in byte
- Param
None
- 返回
运行所需ram空间大小
- int32_t ae_rm_init(void *heap, int samplerate, int freq);
初始化颤音
- 参数
heap – 颤音工作sam地址,其空间必须足够,可由ae_rm_need_buf()获取需要空间大小
samplerate – 处理音频的采样率
freq – 颤音的频率
- Return 0
工作ram空间首地址
- int32_t ae_rm_run(void *work_buf, short *indata, int inlen, short *outdata);
音效之机器人变声音
- 参数
work_buf – echo工作的首地址,kss_ae_echo_init()的返回值
indata – 输入音频首地址
inlen – 帧长 in samples
outdata – 输出音频首地址
- 返回
处理的音频点长度
- Note
输入输出地址可以是同一块数据空间
使用方法
调用ae_rm_need_buf()获取颤音运行需要ram空间大小,并分配所需要的ram
ae_rm_init()函数初始化颤音效果
调用ae_rm_run()函数处理音频数据
混响音效 (Reverb)
API说明
- struct fdn_reverb_init_t
混响初始化参数结构体
- int32_t fdn_reverb_init(void *heap_start, fdn_reverb_init_t *init_param);
获取颤音音效运行需要的ram空间大小,in byte
- 参数
heap_start – 工作ram首地址
init_param – fdn_reverb_init_t参数
- 返回
运行所需ram空间大小
- int32_t fdn_reverb_run(int32_t *indata, int32_t *outdata, int32_t len);
音效之机器人变声音
- 参数
work_buf – echo工作的首地址,kss_ae_echo_init()的返回值
indata – 输入音频首地址
inlen – 帧长 in samples
outdata – 输出音频首地址
- 返回
处理的音频点长度
- Note
输入输出地址可以是同一块数据空间
使用方法
fdn_reverb_init()函数初始化颤音效果
调用fdn_reverb_run()函数处理音频数据
语音检测 (VAD)
API说明
- int32_t kss_ae_vad_need_buf();
获取VAD运行需要的ram空间大小,in byte
- Param
None
- 返回
运行所需ram空间大小
- int32_t kss_ae_vad_init(void *heap_addr);
初始化VAD
- 参数
heap – 颤音工作sam地址,其空间必须足够,可由kss_ae_vad_need_buf()获取需要空间大小
- 返回
工作ram空间首地址
- int32_t kss_ae_vad_run(void *workbuf, short *inbuf);
VAD运行
- 参数
work_buf – 工作的首地址,kss_ae_vad_init()的返回值
indata – 输入音频首地址
- Return -1
首地址空间无效
- Return 0
VAD判据无语音
- Return 1
VAD判据有语音
- Note
只对8khz音频 一帧128音频点判断
使用方法
调用kss_ae_vad_need_buf()获取颤音运行需要ram空间大小,并分配所需要的ram
kss_ae_vad_init()函数初始化效果
调用kss_ae_vad_run()函数处理音频数据
语音拉伸 (PST)
API说明
- int ae_pst_need_alwaysbuf(uint32_t windowsize_set)
获取拉伸音效运行需要的状态ram空间大小,in byte
- Param
None
- 返回
运行所需ram空间大小
- int ae_pst_need_tempsbuf(uint32_t windowsize_set)
获取拉伸音效运行需要的临时ram空间大小,in byte
- Param
None
- 返回
运行所需ram空间大小
- void *ae_pst_init(void *heap, Q27 stretch, int windowsize_set);
初始化拉伸音效
- 参数
heap – 工作sam地址,其空间必须足够,可由ae_pst_need_alwaysbuf()返回
stretch – 拉伸比例 Q27
windowsize_set – 处理的窗长,可以 64 128 256 512
- 返回
工作ram空间首地址
- int ae_pst_run(void *work_buf, short *indata, int inlen, short *outdata, void *tempbuf);
拉伸音效运行
- 参数
work_buf – work_buf:工作sam地址,ae_pst_init()返回
indata – 输入音频首地址
inlen – 输入音频长度
outdata – 输出音频地址空间
tempbuf – 计算临时空间,大小由ae_pst_need_tempsbuf()获取
- 返回
输出总长度
- Note
输入与输出地址空间不可为同一地址
使用方法
调用ae_pst_need_alwaysbuf(),ae_pst_need_tempsbuf()获取颤音运行需要ram空间大小,并分配所需要的ram
ae_pst_init()函数初始化效果
调用ae_pst_run()函数处理音频数据
降噪 (Denoise)
API说明
- int kss_ae_denoise_init(int32_t always_buff[1169], int32_t temp_buff[1538]);
降噪算法,默认处理16khz音频
- 参数
always_buff – 总长为4676byte空间,在机器人音效kss_ae_denoise_run()函数不再调用之前,不可篡改、复用的空间。需要对齐到4
temp_buff – 总长6152byte空间,在机器人音效不调用kss_ae_denoise_run()时,可篡改、复用的空间。需要对齐到4
- Return 0
成功
- Return 其它
失败
- Note
只可运行再spv12x芯片上,非此类芯片,初始化失败
- int kss_ae_denoise_run(short *inbuf, short *outbuf, int len);
降噪算法,默认处理16khz音频
- 参数
inbuf – 输入buf
outbuf – 输出buf
len – 一定为256
- Return 0
成功
- Return 其它
失败
- Note
输入数据与输出地址可以同一块内存空间
- Note
输入长度必须为256采样点
- Note
只可运行再spv12x芯片上,非此类芯片,不会做任何处理,并返回错误码
使用方法
kss_ae_denoise_init()函数初始化效果
调用kss_ae_denoise_run()函数处理音频数据