方法列表
接口索引
函数签名 | 简介 |
---|---|
int xyos_init_sdk(const XYOSConfiguration *conf); | XYOS LiteSDK 初始化 |
int xyos_register_xyos_platform(const char *credential); | 设备根据credential向XYOS平台进行注册并完成登录 |
void xyos_unregister_xyos_platform(void); | 将设备从XYOS平台注销,清空token,退出登录 |
int xyos_request_asr_nlu_by_file(const char *path, callback_type cb); | 根据语音文件,获取对应的asr和nlu结果 |
int xyos_request_asr_nlu_by_stream(const void *stream, long long size, callback_type cb); | 根据二进制语音流数据,获取对应的asr和nlu结果 |
int xyos_request_asr_nlu_by_segment(struct voice_options *vopt); | 分片上传二进制语音流数据,实时获取对应的asr和nlu结果 |
int xyos_request_tts_stream(const char *text, callback_type cb); | 根据文本字符串,获取对应的tts语音数据流 |
int xyos_register_rc_msg_handler(callback_type cb); | 注册反向控制器回调,该接口会在SDK中独立起一个线程,用来接收小雅OS云端push的消息 |
int xyos_perform_general_command(ge_command_type command_type, void* arg_in, callback_type cb); | 输入系统控制指令,执行系统控制 |
int xyos_get_location(double *latitute, double *longitude, MacAddressInfo localMacAddr, MacAddressInfo apMacAddr, MacAddressInfo arpMacList[], int ListSize); | 输入本地网卡信息 获取定位信息 |
关键结构
/**
* 语音数据的格式类型
*/
typedef enum {
PCM = 0,
OPUS,
WAV,
AUDIO_TYPE_MAX
} audio_type_t;
/**
* 用于存储获取的网卡信息数据结构体
*/
typedef struct _MacAddressInfo{
char mMAC[32];
char mSSID[128];
char mSignal[12];
}MacAddressInfo;
/**
* 基本的系统控制指令枚举类型
*/
typedef enum _ge_command_type{
NEXT_COMMAND = 0, // 系统控制[00] 下一首
CHANGE_COMMAND, // 系统控制[01] 换一首
PREV_COMMAND, // 系统控制[02] 上一首
MUTE_COMMAND, // 系统控制[03] 静音
UNMUTE_COMMAND, // 系统控制[04] 取消静音
PAUSE_COMMAND, // 系统控制[05] 暂停
STOP_COMMAND, // 系统控制[06] 停止
QUIT_COMMAND, // 系统控制[07] 退出
CONFIRM_COMMAND, // 系统控制[08] 确认
CANCEL_COMAND, // 系统控制[09] 取消
POWEROFF_COMMAND, // 系统控制[10] 关机
UP_COMMAND, // 系统控制[11] 调高音量
DOWN_COMMAND, // 系统控制[12] 调低音量
MAX_COMMAND, // 系统控制[13] 音量最大
MIN_COMMAND, // 系统控制[14] 音量最小
SET_COMMAND, // 系统控制[15] 设置音量
ASKVOLUME_COMMAND, // 系统控制[16] 查询音量
OPEN_COMMAND, // 系统控制[17] 蓝牙打开
CLOSE_COMMAND, // 系统控制[18] 蓝牙关闭
SWITCH_COMMAND, // 系统控制[19] 蓝牙切换
GO_TO_SLEEP_COMAND, // 系统控制[20] 我要睡觉
LEAVE_OUT_COMMAND, // 系统控制[21] 我要离开
AUTO_NEXT_COMMAND, // 系统控制[22] 自动下一首
COMMAND_MAX, // 23
} ge_command_type;
/**
*
*SDK所需全局配置
*/
typedef struct {
//客户信息
char client_id[ID_LEN];//已废弃
char client_secret[SECRET_LEN];//已废弃
//设备信息
char sn[ID_LEN];
char xn[ID_LEN];
int device_type;//默认2,表示音箱设备
//产品信息
char product_id[ID_LEN];
char product_secret[SECRET_LEN];
//平台信息
char platform_id[ID_LEN];
//地理位置
double longitude;
double latitude;
//tts配置
int person;
int volume;
int speed;
int pit;
int tts_pid;//7007
//asr
int asr_pid;//7005
//固件版本号
char rom_version[VERSION_LEN];
//语音sdk版本号。若没有,跟rom_version保持一致
char voice_sdk_version[VERSION_LEN];
//语音流类型:
audio_type_t audio_type;
} XYOSConfiguration;
/**
*voice_options结构封装了分片上传语音数据流和获取对应asr/nlu结果的操作
*
*@loading:指向需要实时加载语音数据的函数,由应用程序自行实现(可将麦克风实时录入的声音传入buffer中)
*@recving:用来接收云端实时语音识别的结果和最终NLU数据
*/
struct voice_options {
int (*loading)(unsigned char *buffer);
void (*recving)(unsigned char *msg, int len);
};
/**
* 一种回调函数类型,SDK提供的接口中,大都会使用这种函数指针类型作为回调
*/
typedef void (*callback_type)(const char* msg, int msg_len);
接口详情
int xyos_init_sdk(const XYOSConfiguration *conf);
功能
完成xyos lite SDK 的初始化,调用程序负责填充conf各字段内容
参数
参数 | 类型 | 描述 |
---|---|---|
conf | const XYOSConfiguration * | SDK全局配置 |
返回值
成功返回0,失败返回非0值
int xyos_register_xyos_platform(const char *credential);
功能
设备根据credential向XYOS平台进行注册,并完成登录。 设备登录时,XYOS用户中心会向设备厂商指定的地址(小雅OS开放平台-硬件开放平台-配置服务中的url)进行credential认证,完成登录操作。 如果SDK开启了feature.mk中的某些特性,会在登录成功后完成相关特性的初始化动作,如反向控制模块初始化等。
参数
参数 | 类型 | 描述 |
---|---|---|
credential | const char * | 从小雅OS开放平台获取到的信用证书 |
返回值
成功返回0,后台开启线程适时刷新token;失败返回非0值
void xyos_unregister_xyos_platform(void);
功能
将设备从XYOS平台注销,清空token,退出登录;完成其他内部资源的释放
参数
参数 | 类型 | 描述 |
---|---|---|
无 | void | 不需要参数 |
返回值
无
int xyos_request_asr_nlu_by_file(const char *path, callback_type cb);
功能
根据语音文件,获取对应的asr和nlu结果
参数
参数 | 类型 | 描述 |
---|---|---|
path | const char * | 语音文件路径 |
longitude | double* | asr和nlu的结果会通过cb进行输出,参数msg为json格式的字符串,msg_len为有效字符串长度 |
返回值
请求成功返回0,否则返回非0值
int xyos_request_asr_nlu_by_stream(const void *stream, long long size, callback_type cb);
功能
根据二进制语音流数据,获取对应的asr和nlu结果
参数
参数 | 类型 | 描述 |
---|---|---|
stream | const void * | 二进制语音流数据 |
size | long long | 二进制语音流数据的长度 |
cb | callback_type | asr和nlu的结果会通过cb进行输出,参数msg为json格式的字符串,msg_len为有效字符串长度 |
返回值
请求成功返回0,否则返回非0值
int xyos_request_asr_nlu_by_segment(struct voice_options *vopt);
功能
分片上传二进制语音流数据,实时获取对应的asr和nlu结果。该接口成功调用后,sdk会起一个内部线程完成数据的传输,主线程直接返回,不阻塞。任何时候,可以调用该接口完成新一轮的数据传输,该接口会首先停止之前创建的线程。
参数
参数 | 类型 | 描述 |
---|---|---|
vopt | struct voice_options * | 包含两个函数指针,分别对应于loading语音数据和recving实时语音识别结果 |
返回值
成功返回0,失败返回非0值
int xyos_request_tts_stream(const char *text, callback_type cb);
功能
根据文本字符串,获取对应的tts语音数据流
参数
参数 | 类型 | 描述 |
---|---|---|
text | const char * | 需要转成语音数据的文本内容,最长不要超过4096字节 |
cb | callback_type | tts的结果会通过cb进行输出,参数msg为语音流数据,msg_len为语音流数据有效长度 |
返回值
请求成功返回0,否则返回非0值
int xyos_register_rc_msg_handler(callback_type cb);
功能
注册反向控制器回调,该接口会在SDK中独立起一个线程,用来接收小雅OS云端push的消息
- 注意:
该接口通过
CONFIG_REVERSE_CONTROL_SURPPORT
开关进行控制,每个客户在拿到的SDK中,都会有SDK支持的特性文件demo/feature.mk
。该接口描述了SDK支持哪些特性。如果用户需要SDK支持的特性,可在提供工具链时提出需求。
参数
参数 | 类型 | 描述 |
---|---|---|
cb | callback_type | 接收到的push消息会通过cb->msg传递出来,cb->msg_len表示消息长度 |
返回值
成功返回0,否则返回非0值
int xyos_perform_general_command(ge_command_type command_type, void* arg_in, callback_type cb);
功能
输入系统控制指令,执行系统控制
参数
参数 | 类型 | 描述 |
---|---|---|
type | ge_command_type | 系统指令枚举类型 |
arg_in | void* | 对应系统指令需要携带参数的情况 |
cb | callback_type | 接收到的push消息会通过cb->msg传递出来,cb->msg_len表示消息长度 |
返回值
请求成功返回0,否则返回非0值
int xyos_get_location(double *latitute, double *longitude, MacAddressInfo localMacAddr, MacAddressInfo apMacAddr, MacAddressInfo arpMacList[], int ListSize);
功能
输入系统控制指令,执行系统控制
参数
参数 | 类型 | 描述 |
---|---|---|
latitute | double * | 返回的定位信息 纬度 |
longitude | double * | 返回的定位信息 经度 |
localMacAddr | MacAddressInfo | 本地网卡信息结构体 |
apMacAddr | MacAddressInfo | ap信息结构体 |
arpMacList[] | MacAddressInfo | arp信息结构体数组 |
ListSize | int | arpMacList数组的长度 |
返回值
请求成功返回0,否则返回非0值