基于 CSK6 的 AIUI SDK是基于 AIUI 开放平台提供的websocket精简协议封装而成。支持云端 VAD、流式识别、语义理解和在线 TTS 等功能。
该 SDK 释放源代码,开发者可根据自己需求进行定制和修改。
AIUI 请参考工程根目录下的src/core
完整实现。
AIUI 目前更改为长连接,为了保障长连接的可用性,服务支持应用层心跳指令,心跳指令仅在会话之外生效,应在连接空闲的时候使用,若没有使用心跳,AIUI 会在60s空闲后主动断开连接,通过心跳可以短时间延长可空闲时长,最长空闲时长可达10分钟。
目前demo中为方便展示和压力测试,空闲时长10分钟超时后,自动重连,实际项目中按实际需求重连,减小服务端压力。
typedef struct lisa_aiui_config {
uint8_t *appid;
uint8_t *api_key;
} lisa_aiui_config_t;
typedef struct lisa_aiui {
/// @brief AIUI配置信息
lisa_aiui_config_t *config;
/// @brief aiui websocket 句柄
lisa_aiui_ws_t *aiui_ws;
/// @brief websocket连接成功回调
void (*aiui_ws_connected)();
/// @brief websocket连接云端主动断开回调
void (*aiui_ws_disconnect)();
/// @brief websocket接收消息回调
void (*aiui_ws_onmessage)(const char *msg, int len);
} lisa_aiui_t;
typedef struct lisa_aiui_cb {
void (*aiui_ws_connected_cb)();
void (*aiui_ws_disconnect_cb)();
void (*aiui_ws_onmessage_cb)(const char *msg, int len);
} lisa_aiui_cb_t;
函数定义 | 用途简介 |
---|---|
lisa_aiui_create | 创建实例 |
lisa_aiui_connect | 建立连接 |
lisa_aiui_send_audio | 发送音频 |
lisa_aiui_send_txt | 发送文本 |
lisa_aiui_send_end | 停止发送 |
lisa_aiui_disconect | 断开连接 |
lisa_aiui_destroy | 销毁实例 |
lisa_aiui_start_send | 开始语音请求 |
lisa_aiui_ping | 发送心跳 |
lisa_aiui_t *lisa_aiui_create(const lisa_aiui_config_t *const config, lisa_aiui_cb_t *aiui_cb);
接口说明:AIUI 初始化函数
返回值:lisa_aiui_t*
, 返回实例(句柄)
参数名 | 类型 | 说明 |
---|---|---|
config | const lisa_aiui_config_t * | 初始化参数配置,必填 |
aiui_cb | lisa_aiui_cb_t* | AIUI回调事件,非局部变量 |
lisa_err_t lisa_aiui_connect(const lisa_aiui_t *const handle);
接口说明:建立 websocket 连接
返回值:lisa_err_t
, 执行结果,0为成功,其他为失败
参数名 | 类型 | 说明 |
---|---|---|
handle | const lisa_aiui_t *const | AIUI句柄 |
lisa_err_t lisa_aiui_send_audio(const lisa_aiui_t *handle, const void *audio, int len);
接口说明:发送音频数据
返回值:lisa_err_t
, 执行结果,0为成功,其他为失败
参数名 | 类型 | 说明 |
---|---|---|
handle | const lisa_aiui_t * | AIUI句柄 |
audio | const void * | 音频数据 |
len | int | 音频长度 |
lisa_err_t lisa_aiui_send_txt(const lisa_aiui_t *handle, const char *const txt);
接口说明:发送文本数据
返回值:lisa_err_t
, 执行结果,0为成功,其他为失败
参数名 | 类型 | 说明 |
---|---|---|
handle | const lisa_aiui_t * | AIUI句柄 |
txt | const char *const | 文本数据 |
lisa_err_t lisa_aiui_start_send(const lisa_aiui_t *handle);
lisa_err_t
, 执行结果,0为成功,其他为失败参数名 | 类型 | 说明 |
---|---|---|
handle | const lisa_aiui_t * | AIUI 句柄 |
lisa_err_t lisa_aiui_ping(const lisa_aiui_t *handle);
接口说明:发送心跳,连接开始后定时发送
返回值:lisa_err_t
, 执行结果,0为成功,其他为失败
参数名 | 类型 | 说明 |
---|---|---|
handle | const lisa_aiui_t * | AIUI 句柄 |
lisa_err_t lisa_aiui_stop_send(const lisa_aiui_t *handle);
接口说明:停止发送数据
返回值:lisa_err_t
, 执行结果,0为成功,其他为失败
参数名 | 类型 | 说明 |
---|---|---|
handle | const lisa_aiui_t * | AIUI 句柄 |
lisa_err_t lisa_aiui_disconect(const lisa_aiui_t *handle);
接口说明: 断开连接,云端 websocket 主动断开后必须调用。
返回值:lisa_err_t
, 执行结果,0为成功,其他为失败
参数名 | 类型 | 说明 |
---|---|---|
handle | const lisa_aiui_t * | AIUI句柄 |
lisa_err_t lisa_aiui_destroy(const lisa_aiui_t *handle);
接口说明: AIUI 销毁,释放资源
返回值:lisa_err_t
, 执行结果,0为成功,其他为失败
参数名 | 类型 | 说明 |
---|---|---|
handle | const lisa_aiui_t * | AIUI句柄 |