1. 概述
语音服务组件提供关键词识别和语音数据的处理控制。输入麦克风的语音数据经过回音消除降噪和关键词识别处理后再输出到应用层使用。YoC在语音服务接口和算法实现之间增加了适配层,方便多种语音算法的接入,保持了应用代码的统一。
下图以SC5654芯片双核架构为例,适配层利用核间通讯,实现应用与DSP算法的数据交互。
2. 适配接口
2.1 语音服务适配接口
语音服务适配接口注册在mic_ops结构体中,详细信息如下:
组件:mic
头文件:
语音服务的适配接口如下:
2.2 应用接口映射
应用通过调用应用层API,操作对应语音服务适配接口,语音服务开发者只需实现适配接口定义。用户无需修改代码,即可迁移至对应语音服务上。
应用API与语音服务适配接口映射如下:
3. 接口说明
2.2 init
函数原型
int (*init) (mic_t *mic, mic_event_t mic_event);
功能描述
语音服务初始化,在应用调用aui_mic_start时会调用该接口。若有私有数据需要保存,可通过函数mic_set_privdata将其保存在mic->priv私有成员指针中。设置后,其他适配函数就可以通过函数mic_get_privdata获取该指针。语音服务层通过应用注册的mic_event回调函数将语音事件传递给应用层。
参数描述
相关定义
返回值
2.3 deinit
函数原型
int (*deinit) (mic_t *mic);
功能描述
应用接口aui_mic_stop执行时会调用该适配接口释放资源。
参数描述
2.3 kws_control
函数原型
int (*kws_control) (mic_t *mic, int flag);
功能描述
关键词识别使能控制。
参数描述
2.4 kws_wake
函数原型
int (*kws_wake) (mic_t *mic, int flag);
功能描述
强制算法发出一个模拟唤醒事件。
参数描述
2.5 pcm_data_control
函数原型
int (*pcm_data_control) (mic_t *mic, int flag);
功能描述
控制算法输出的音频流的开关。
参数描述
2.6 pcm_aec_control
函数原型
int (*pcm_aec_control) (mic_t *mic, int flag);
功能描述
控制算法是否使能回音消除。
参数描述
2.7 pcm_set_param
函数原型
int (*pcm_set_param) (mic_t *mic, void *param);
功能描述
初始化语音算法参数。
参数描述
返回值
2.8 mic_set_privdata
函数原型
int mic_set_privdata(void *priv);
功能描述
设置适配私有数据到mic对象。
参数描述
2.9 mic_get_privdata
函数原型
void *mic_get_privdata(void);
功能描述
获取mic对象中的私有数据指针。
参数描述
无
返回值
2.10 mic_ops_register
函数原型
int mic_ops_register(mic_ops_t *ops);
功能描述
注册适配层,一般增加一个适配需要实现一个新的函数封装该函数,提供一个简单的注册函数供应用使用。
参数描述
3 适配示例
适配完成所有接口函数后,定义适配接口结构体,完成函数注册。
示例如下:
/* 适配接口结构体 */
static mic_ops_t mic_adp_ops = {
.init = mic_adaptor_init,
.deinit = mic_adaptor_deinit,
.kws_control = mic_adaptor_kws_control,
.kws_wake = mic_adaptor_kws_wake,
.pcm_data_control = mic_adaptor_pcm_data_control,
.pcm_aec_control = mic_adaptor_pcm_aec_control,
.pcm_set_param = mic_adaptor_set_param,
.pcm_get_param = mic_adaptor_get_param,
};
/* 注册函数 */
void mic_thead_v1_register(void)
{
mic_ops_register(&mic_adp_ops);
}
文章来源:芯片开放社区
文章链接:https://occ.t-head.cn/community/post/detail?spm=a2cl5.14300636.0.0.1b87180flWxVN5&id=3772275121524969472