AIUI文档中心
AIUI文档导览
1. AIUI平台服务
1.1 AIUI平台介绍
1.2 AIUI应用介绍
1.3 AIUI服务链路介绍
1.4 AIUI平台能力概述
1.5 快速体验
2. AIUI应用配置
2.1 应用发布
2.2 语义精简协议介绍
2.3 基础配置
2.4 语义模型配置
2.5 回复角色配置
2.6 语音识别配置
2.7 结构化语义配置
2.8 星火大模型配置
2.9 语音合成配置
2.10 应用后处理配置
2.11 三方大模型配置
3. AIUI SDK开发
3.1 AIUI SDK接入流程
3.2 AIUI SDK基础信息
3.2.1 SDK接口说明
3.2.2 参数配置说明
3.2.3 消息事件说明
3.2.4 SDK状态说明
3.2.5 数据发送方式
3.2.6 回调解析说明
3.2.7 交互结果协议说明
3.3 AIUI SDK基础能力
3.3.1 流式识别
3.3.2 离线识别
3.3.3 语音唤醒
3.3.4 语音合成
3.3.5 用户个性化
3.3.6 自定义参数
3.4 传统语义链路接入
3.4.1 链路配置说明
3.4.2 个性化数据使用
3.5 通用大模型链路接入
3.5.1 链路配置说明
3.5.2 个性化数据使用
3.5.3 超拟人合成
3.5.4 声音复刻
3.6 极速超拟人链路接入
3.6.1 链路配置说明
3.6.2 个性化数据使用
3.6.3 流式合成
3.6.4 声音复刻
3.6.5 RTOS系统SDK接入
3.7 错误码列表
3.8 发音人列表
4. AIUI API开发
4.1 传统语义链路
4.1.1 交互API
4.1.2 用户个性化API
4.1.3 合成能力使用
4.2 通用大模型链路
4.2.1. 服务鉴权
4.2.2 交互API
4.2.3 用户个性化API
4.2.4 声音复刻API
4.2.5 合成能力使用
4.3 极速超拟人链路
4.3.1 服务鉴权
4.3.2 交互API
4.3.3 用户个性化API
4.3.4 声音复刻API
4.3.5 合成能力使用
5. 自定义业务
技能工作室概述
名词解析
技能
意图和语料
实体
动态实体
模糊匹配
填槽对话
技能设计规范
语音技能设计规范
开放技能接入审核规范
开放技能图标图片规范
技能开发
创建技能和意图
意图配置
技能测试
技能发布
技能后处理
技能导入导出
云函数APIv2.1
云函数APIv2.0
智能体开发
智能体对接
问答库开发
语句问答
关键词问答
文档问答
设备人设开发
技能协议
语义协议:重要字段和通用字段
技能后处理协议:标准请求
技能后处理协议:请求校验
技能后处理协议:Request_v2.1协议
技能后处理协议:Response_v2.1协议
技能资源限制
6. 硬件模组
RK3328 降噪板
RK3328降噪板白皮书
RK3328降噪板使用手册
RK3328降噪板规格书
RK3328降噪板协议手册
RK3328 AIUI评估板开发套件
RK3328评估板白皮书
RK3328评估板使用手册
RK3328评估板规格书
RK3328评估板开发手册
RK3588 AIUI多模态开发套件
RK3588一体机多模态产品规格书
RK3588多模态套件使用手册
视频传输协议
识别语义传输协议
音频传输协议
ZG803 离线语音识别套件
ZG803 产品白皮书
USB声卡套件
USB声卡产品白皮书
USB声卡使用指南
AC7911 AIUI语音开发套件
AC7911-产品白皮书
AC7911-快速体验指南
AC7911-开发指南
AC7911-协议手册
AC7911-硬件参数
AIUI评估板接入
集成方式
软件包说明
AIUIServiceKitSDK
串口SDK
评估板参数配置
调试升级
7. 常见问题处理
7.1 AIUI常见问题
7.2 评估板常见问题
7.3 动态实体常见问题
8. 联系方式
9. 服务条款
AIUI开放平台服务协议
AIUI开放平台隐私政策
小飞在家用户协议
小飞在家隐私政策
小飞在家开源软件使用许可
讯飞账号隐私政策
讯飞账号用户协议
讯飞带屏音箱用户协议
讯飞带屏音箱隐私政策
AIUI SDK隐私政策
AIUI SDK合规使用说明
本文档使用 MrDoc 发布
-
+
首页
3.6.2 个性化数据使用
<div style="max-width: 100%; margin: 20px auto;"> <!-- 便签卡片容器 --> <div style="background-color: #ffffff; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); overflow: hidden; font-family: 'Comic Sans MS', cursive, sans-serif;"> <!-- 便签头部 --> <div style="background-color: #F4F8FA; padding: 1px 10px; border-bottom: 1px solid #dee2e6; display: flex; justify-content: space-between; align-items: center;"> <div style="color: #0E42D2; font-weight: bold;font-size: 1.3rem;">个性化数据使用概述</div> <div> </div> </div> <!-- 带横线的内容区域 --> <div style="padding: 25px; line-height: 29px; background-image: linear-gradient(transparent 26px, #dee2e6 27px, #dee2e6 27px, transparent 27px); background-size: 100% 28px; min-height: 100px; color: #333;"> <div>个性化数据使用涉及多个环节,了解这些环节有助于更好地应用和管理个性化数据。下面详细说明相关内容。</div> <a href="#流程介绍" style="color: #6f42c1; font-weight: 500;"> <strong>- 1、流程介绍>>>点击跳转   </strong></a> <br><a href="#接口调用" style="color: #6f42c1; font-weight: 500;"> <strong>- 2、接口调用>>>点击跳转   </strong></a> <br><a href="#生效使用" style="color: #6f42c1; font-weight: 500;"> <strong>- 3、生效使用>>>点击跳转   </strong></a> <div></div> </div> <!-- 便签底部 --> </div> </div> </div> <div id="流程介绍"> </div> ## 1. 流程介绍 <div style="display: flex; align-items: flex-start; gap: 16px; padding: 16px; background: #fff5f6; border-radius: 5px; border-left: 4px solid #e83e8c; box-shadow: 0 4px 12px rgba(255, 215, 0, 0.08); margin-bottom: 16px; transition: transform 0.2s ease, box-shadow 0.2s ease;"> <div> <div style="font-weight: 600; margin-bottom: 4px;">温馨提示</div> <div style="font-size: 14px; line-height: 1.5;">1、在通用大模型或极速超拟人交互链路下个性化数据上传是实时生效的。</div> <div style="font-size: 14px; line-height: 1.5;">2、数据下载可以执行资源下载上传的内容信息,注意和传统语义链路的打包查询做区分。</div> <div style="font-size: 14px; line-height: 1.5;">3、动态实体数据上传属于覆盖更新,上传后服务端将持久存储</div> </div> </div> 在**通用大模型**或**极速超拟人**交互链路下,个性化数据使用主要能力为: - 个性化数据上传、下载、删除 - 生效使用配置 <div id="接口调用"> </div> ## 2. 接口调用 ### 2.1. 个性化数据上传 **在`通用大模型语义`或`极速超拟人`链路**,个性化数据上传格式说明如下: 构建`CMD_SYNC` 类型事件进行个性化数据上传: ~~~ java new AIUIMessage(AIUIConstant.CMD_SYNC,AIUIConstant.SYNC_DATA_UPLOAD, 0, null, syncData); ~~~ 参数说明: - msgType :消息事件,`CMD_SYNC` 代表个性化数据操作请求 - agr1:数据类型,数据上传对应`SYNC_DATA_UPLOAD`(常量对应值为`6`) - arg2:默认空值 `0` - params:默认空值 null - data:同步JSON内容的utf-8二进制数据,JSON格式如下(注意新增字段`name_space`): ~~~ json { "param": { "id_name": "uid", // 维度类型 "id_value": "", // 维度取值,当取值为uid或appid时,该项可取空或不传,AIUI会自动补全 "name_space": "uid", // 命名空间(资源名对应的命令空间) "res_name": "XXX.user_applist" // 资源名,取值方式: 命名空间.实体资源名称 }, "data": "xxxxxx" // 待上传的动态实体json数据内容base64编码(每条json换行隔开) } ~~~ **`特别说明`:** 当上传的动态实体为自定义维度时候,同步的数据json格式如下(注意新增字段`name_space`): ~~~ json { "param": { "appid": "xxx", // AIUI应用appid "id_name": "xxx", // 自定义维度名 "id_value": "xxx", // 自定义维度value "name_space": "uid", // 命名空间(资源名对应的命令空间) "res_name": "xxx" // 资源名,取值方式: 命名空间.实体资源名称 }, "data": "xxxxxx"// 与schema名称对应的数据内容base64编码 } ~~~ #### 2.1.1. 自定义动态实体实例 依据下方创建的自定义动态实体,确认上传的资源名称(OS8565315570.building),示例代码如下: <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td style="text-align: center;"> <h2>自定义动态实体示例</h2> </td> </tr> <tr> <td style="overflow-x: auto; white-space: nowrap;"> <img src="/media/202508/2025-08-22_155042_4579370.7826248367123231.png" alt="Image 1" style="max-height: 300px;"> <img src="/media/202508/2025-08-22_155114_1205160.33670231333160816.png" alt="Image 3" style="max-height: 300px;"> </td> </tr> </table> ~~~ java // 构建待上传数据,每条json以换行符隔开 String userData = "{\"building\":\"北京国家体育馆\",\"alias\":\"鸟巢\"}\n" + "{\"building\":\"天坛\",\"alias\":\"祈谷坛|圜丘\"}" + JSONObject syncSchemaJson = new JSONObject(); JSONObject paramJson = new JSONObject(); paramJson.put("id_name", "uid"); paramJson.put("res_name", "OS8565315570.building"); // 注意大模型链路和通用语义链路的区别:新增参数 // aiui开放平台的命名空间,在「技能-实体-动态实体密钥」中查看 paramJson.put("name_space","OS8565315570"); syncSchemaJson.put("param", paramJson); syncSchemaJson.put("data", Base64.encodeToString(userData.getBytes(), Base64.DEFAULT | Base64.NO_WRAP)); // 传入的数据一定要为utf-8编码 byte[] syncData = syncSchemaJson.toString().getBytes("utf-8"); AIUIMessage syncAthenaMessage = new AIUIMessage(AIUIConstant.CMD_SYNC,AIUIConstant.SYNC_DATA_SCHEMA, 0, "", syncData); mAIUIAgent.sendMessage(syncAthenaMessage); ~~~ #### 2.1.2. 官方动态实体实例 官方动态实体,主要需要注意上传的资源名称(res_name)取值, - 以电话联系人举例: ~~~ java // 构建待上传数据,每条json以换行符隔开 String userData = "{\"name\":\"张三\",\"alias\":\"三弟\",\"phoneNumber\":\"18888888888\"}\n" + "{\"name\":\"王二\",\"alias\":\"二哥\",\"phoneNumber\":\"16666666666\"}"; JSONObject syncSchemaJson = new JSONObject(); JSONObject paramJson = new JSONObject(); paramJson.put("id_name", "uid"); paramJson.put("res_name", "IFLYTEK.telephone_contact"); // 注意大模型链路和通用语义链路的区别:新增参数 // 官方动态实体,固定取值为:IFLYTEK paramJson.put("name_space","IFLYTEK"); syncSchemaJson.put("param", paramJson); syncSchemaJson.put("data", Base64.encodeToString(userData.getBytes(), Base64.DEFAULT | Base64.NO_WRAP)); // 传入的数据一定要为utf-8编码 byte[] syncData = syncSchemaJson.toString().getBytes("utf-8"); AIUIMessage syncAthenaMessage = new AIUIMessage(AIUIConstant.CMD_SYNC,AIUIConstant.SYNC_DATA_SCHEMA, 0, "", syncData); mAIUIAgent.sendMessage(syncAthenaMessage); ~~~ - 以智能家居alisa资源举例: ~~~ java // 构建待上传数据,每条json以换行符隔开 String AliasData = "{\"modifier\":\"LED\",\"location\":{\"room\":\"客厅\"},\"did\":\"light-001\",\"device\":\"light\",\"alias\":\"吊灯\"}\n" + "{\"modifier\":\"吊扇\",\"location\":{\"room\":\"客厅\"},\"did\":\"fan-001\",\"device\":\"fan\",\"alias\":\"三叶大侠\"}" + JSONObject syncSchemaJson = new JSONObject(); JSONObject paramJson = new JSONObject(); paramJson.put("id_name", "uid"); paramJson.put("res_name", "IFLYTEK.smartH_deviceAlias"); // 注意大模型链路和通用语义链路的区别:新增参数 // 官方动态实体,固定取值为:IFLYTEK paramJson.put("name_space","IFLYTEK"); syncSchemaJson.put("param", paramJson); syncSchemaJson.put("data", Base64.encodeToString(userData.getBytes(), Base64.DEFAULT | Base64.NO_WRAP)); // 传入的数据一定要为utf-8编码 byte[] syncData = syncSchemaJson.toString().getBytes("utf-8"); AIUIMessage syncAthenaMessage = new AIUIMessage(AIUIConstant.CMD_SYNC,AIUIConstant.SYNC_DATA_SCHEMA, 0, "", syncData); mAIUIAgent.sendMessage(syncAthenaMessage); ~~~ ### 2.2. 个性化数据下载 上传数据完成后,还可以下载已上传的数据 构建`CMD_SYNC` 类型事件进行个性化数据下载: ~~~ java new AIUIMessage(AIUIConstant.CMD_SYNC,AIUIConstant.SYNC_DATA_DOWNLOAD, 0, null, syncData); ~~~ 参数说明: - msgType :消息事件,`CMD_SYNC` 代表个性化数据操作请求 - agr1:数据类型,数据下载对应`SYNC_DATA_DOWNLOAD`(常量对应值为`7`) - arg2:默认空值 `0` - params:默认空值 null - data:同步JSON内容的utf-8二进制数据,JSON格式如下: ~~~ json { "param": { "id_name": "uid", // 维度类型 "id_value": "", // 维度取值,当取值为uid或appid时,该项可取空或不传,AIUI会自动补全 "name_space": "uid", // 命名空间(资源名对应的命令空间) "res_name": "XXX.user_applist" // 资源名,取值方式: 命名空间.实体资源名称 } } ~~~ ~~~ java JSONObject syncSchemaJson = new JSONObject(); JSONObject paramJson = new JSONObject(); paramJson.put("id_name", "uid"); paramJson.put("res_name", "OS8565315570.building"); // 注意大模型链路和通用语义链路的区别:新增参数 // aiui开放平台的命名空间,在「技能-实体-动态实体密钥」中查看 paramJson.put("name_space","OS8565315570"); syncSchemaJson.put("param", paramJson); // 传入的数据一定要为utf-8编码 byte[] syncData = syncSchemaJson.toString().getBytes("utf-8"); AIUIMessage downLoadMessage = new AIUIMessage(AIUIConstant.CMD_SYNC,AIUIConstant.SYNC_DATA_DOWNLOAD, 0, "", syncData); mAIUIAgent.sendMessage(downLoadMessage); ~~~ ### 2.3. 个性化数据删除 上传数据完成后,如果数据不想要了可以发送删除事件删除云端存储的个性化数据: 构建`CMD_SYNC` 类型事件进行个性化数据下载: ~~~ java new AIUIMessage(AIUIConstant.CMD_SYNC,AIUIConstant.SYNC_DATA_DELETE, 0, null, syncData); ~~~ 参数说明: - msgType :消息事件,`CMD_SYNC` 代表个性化数据操作请求 - agr1:数据类型,数据下载对应`SYNC_DATA_DELETE`(常量对应值为`8`) - arg2:默认空值 `0` - params:默认空值 null - data:同步JSON内容的utf-8二进制数据,JSON格式如下: ~~~ json { "param": { "id_name": "uid", // 维度类型 "id_value": "", // 维度取值,当取值为uid或appid时,该项可取空或不传,AIUI会自动补全 "name_space": "uid", // 命名空间(资源名对应的命令空间) "res_name": "XXX.user_applist" // 资源名,取值方式: 命名空间.实体资源名称 } } ~~~ ~~~ java JSONObject syncSchemaJson = new JSONObject(); JSONObject paramJson = new JSONObject(); paramJson.put("id_name", "uid"); paramJson.put("res_name", "OS8565315570.building"); // 注意大模型链路和通用语义链路的区别:新增参数 // aiui开放平台的命名空间,在「技能-实体-动态实体密钥」中查看 paramJson.put("name_space","OS8565315570"); syncSchemaJson.put("param", paramJson); // 传入的数据一定要为utf-8编码 byte[] syncData = syncSchemaJson.toString().getBytes("utf-8"); AIUIMessage deleteMessage = new AIUIMessage(AIUIConstant.CMD_SYNC,AIUIConstant.SYNC_DATA_DELETE, 0, "", syncData); mAIUIAgent.sendMessage(deleteMessage); ~~~ ### 2.4. 回调解析 发送`CMD_SYNC`完成数据操作后会有`EVENT_CMD_RETURN`事件回调,可以获取该操作对应的sid,便于后面查询使用: ~~~ java private static String mSyncSid = null; //AIUI事件监听器 private AIUIListener mAIUIListener = new AIUIListener() { @Override public void onEvent(AIUIEvent event) { switch (event.eventType) { case AIUIConstant.EVENT_CMD_RETURN: { if (AIUIConstant.CMD_SYNC == event.arg1) { // 数据同步的返回 int dtype = event.data.getInt("sync_dtype", -1); int retCode = event.arg2; if (AIUIConstant.SUCCESS == retCode){ // 个性化请求sid,问题排查时可提交讯飞同事 mSyncSid = event.data.getString("sid"); // 获取上传调用时设置的自定义tag String tag = event.data.getString("tag"); switch (dtype){ case AIUIConstant.SYNC_DATA_UPLOAD: Log.e("个性化数据上传成功,tag=" + tag ); break; case AIUIConstant.SYNC_DATA_DOWNLOAD: String base64 = event.data.getString("text", ""); String content = new String(Base64.decode(base64, Base64.DEFAULT)); Log.e("个性化数据下载成功,内容为: \n" + content ); break; case AIUIConstant.SYNC_DATA_DELETE: Log.e("个性化数据删除成功,tag=" + tag ); break; } }else { mSyncSid = ""; showTip("操作失败,错误码:" + retCode); } } }break; } } } ~~~ <div id="生效使用"> </div> ## 3. 生效使用 个性化数据生效使用,按照AIUI参数配置也分两种方式: - aiui.cfg静态参数配置 - 动态参数设置或请求参数写入 #### 2.4.1. 静态参数配置生效 在aiui参数配置文件aiui.cfg中直接配置pers_param参数,可以多种级别的动态实体同时设置。 加载用户级和应用级别动态实体资源: ~~~ json { "audioparams": { "pers_param":"{\"appid\":\"\",\"uid\":\"\"}" } } ~~~ #### 2.4.2. 动态参数配置生效 <div style="display: flex; align-items: flex-start; gap: 16px; padding: 16px; background: #fff5f6; border-radius: 5px; border-left: 4px solid #e83e8c; box-shadow: 0 4px 12px rgba(255, 215, 0, 0.08); margin-bottom: 16px; transition: transform 0.2s ease, box-shadow 0.2s ease;"> <div> <div style="font-weight: 600; margin-bottom: 4px;">温馨提示</div> <div style="font-size: 14px; line-height: 1.5;">动态参数设置pers_param这种方式只会对语音交互生效,文本语义参考下面数据写入带pers_param的方式</div> </div> </div> ~~~ java JSONObject params = new JSONObject(); JSONObject audioParams = new JSONObject(); audioParams.put("pers_param", "{\"appid\":\"\",\"uid\":\"\"}"); params.put("audioparams", audioParams); AIUIMessage setMsg = new AIUIMessage(CMD_SET_PARAMS, 0 , 0, params.toString(), ""); mAgent.sendMessage(setMsg); ~~~ 也可以在音频写入时设置该参数: ~~~ java //写入音频 byte[] audio = xxx; //初始化 String params = "data_type=audio,sample_rate=16000,pers_param={\"appid\":\"\",\"uid\":\"\"}"; AIUIMessage msg = new AIUIMessage(AIUIConstant.CMD_WRITE, 0, 0, params, audio); mAIUIAgent.sendMessage(msg); ~~~ 文本语义请求: ~~~ java // 构建请求文本 byte[] content= "XXX".getBytes(); String params = "data_type=text,pers_param={\"appid\":\"\",\"uid\":\"\"}"; AIUIMessage msg = new AIUIMessage(AIUIConstant.CMD_WRITE, 0, 0, params, content); mAIUIAgent.sendMessage(msg); ~~~
admin
2025年9月12日 16:06
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码