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.2.5 数据发送方式
<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>AIUI服务请求支持音频和文本两种数据类型。本文档主要就SDK选用不同数据请求做详细说明:</div> <div>做音频请求时,需要先确认音频来源:确认是<strong>托管AIUI SDK进行系统录音调用获取录音数据</strong>,还是<strong>客户侧外部实现录音获取音频数据流写入AIUI SDK。</strong></div> <a href="#确认录音方式" style="color: #6f42c1; font-weight: 500;"> <strong>- 确认录音方式>>>点击跳转</strong></a> <a href="#外部数据写入" style="color: #6f42c1; font-weight: 500;margin-left: 40px;"> <strong>- 外部数据写入>>>点击跳转</strong></a> <div></div> </div> <!-- 便签底部 --> </div> </div> </div> <div id="确认录音方式"> </div> ## 1. 确认录音方式 开发者根据实际设备录音方式,选择对应的数据发送方式,通过配置文件参数直接体验。 在AIUI SDK加载的配置文件(aiui.cfg)中,通过`data_source`可以指定AIUI录音来源,详见[参数配置说明](https://aiui-doc-admin.xf-yun.com/project-1/doc-13/ "参数配置说明")。 - **sdk**: 托管sdk内部录音(支持Android、IOS、Windows)。用`CMD_START_RECORD、CMD_STOP_RECORD`控制录音开关,录音开始抛出 `EVENT_START_RECORD`事件,录音结束抛出`EVENT_STOP_RECORD`事件 ~~~ java // 开启系统录音 String params = "sample_rate=16000,data_type=audio"; AIUIMessage startRecord = new AIUIMessage(AIUIConstant.CMD_START_RECORD, 0, 0, params,null); mAIUIAgent.sendMessage(startRecord); // 停止系统录音 String params = "sample_rate=16000,data_type=audio"; AIUIMessage stopRecord = new AIUIMessage(AIUIConstant.CMD_STOP_RECORD, 0, 0, params,null); mAIUIAgent.sendMessage(stopRecord); ~~~ - **user**: 开发者自己外部实现录音后送音频给sdk,使用`CMD_WRITE、CMD_STOP_WRITE`通知AIUI数据写入和写入结束 <div id="外部数据写入"> </div> ## 2. 外部数据写入 通过`CMD_WRITE`事件向AIUI写入数据,支持文本和音频,请求参数字段说明如下: <table> <tr> <td><b>参数名称</b></td> <td><b>是否必传</b></td> <td><b>参数和取值说明</b></td> </tr> <tr> <td><b>data_type</b></td> <td>是</td> <td><b>数据类型</b><br>音频数据取值:audio<br>文本数据请求:text</td> </tr> <tr> <td><b>sample_rate</b></td> <td>否</td> <td><b>音频采样率</b><br>固定取值:16000<br>音频数据类型时必传</td> </tr> <tr> <td><b>msc.lng</b></td> <td>否</td> <td><b>GPS经度信息</b><br>取值示例:117.16334474(不超过8位精度)</td> </tr> <tr> <td><b>msc.lat</b></td> <td>否</td> <td><b>GPS纬度信息</b><br>取值示例:31.82102191(不超过8位精度)</td> </tr> <tr> <td><b>rec_user_data</b></td> <td>否</td> <td><b>临时识别热词</b><br>取值示例:rec_user_data=”{“recHotWords”: “播报内容|地图显示|路径优先”, “sceneInfo”: {}}”<br>注意:该参数仅在传统语义服务链路生效</td> </tr> </table> ### 2.1 Android 示例代码 <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、外部音频数据写入请求中,发送停止写入命令(CMD_STOP_WRITE)后代表本次会话结束</div> <div style="font-size: 14px; line-height: 1.5;">2、文本数据请求要一次发送完成,多次发送算多次请求。另外文本数据请求不需要发送停止写入命令</div> </div> </div> ~~~ java /* * 外部音频数据写入 */ // 第一步:获取音频流(外部录音 或 音频文件读取) byte[] audio = xxx; // 第二步:循环构建CMD_WRITE事件,发送获取的音频流 String params = "data_type=audio,sample_rate=16000"; AIUIMessage msg = new AIUIMessage(AIUIConstant.CMD_WRITE, 0, 0, params, audio); mAIUIAgent.sendMessage(msg); /* * 停止音频数据写入 */ // 第三步:当外部录音停止或音频文件读取完成后,发送停止写入命令 String params = "data_type=audio,sample_rate=16000"; AIUIMessage msg = new AIUIMessage(AIUIConstant.CMD_STOP_WRITE, 0, 0, params, null); mAIUIAgent.sendMessage(msg); /* * 文本数据写入 */ // 第一步:获取需要请求的文本,转成字节流 byte[] content= "确定预定".getBytes(); // 第二步:构建CMD_WRITE事件,直接发送。 String params = "data_type=text"; AIUIMessage msg = new AIUIMessage(AIUIConstant.CMD_WRITE, 0, 0, params, content); mAIUIAgent.sendMessage(msg); ~~~ ### 2.2 iOS/Linux/Windows 示例代码 ~~~ swift //写入音频 char audio[length] ; Buffer* buffer = Buffer::alloc(length); memcpy(buffer->data, audio, length); IAIUIMessage* writeMsg=IAIUIMessage::create(AIUIConstant::CMD_WRITE, 0, 0, "data_type=audio,sample_rate=16000", buffer); m_angent->sendMessage(writeMsg); writeMsg->destroy(); //写入文本 string text ="确定预定"; Buffer* textData = Buffer::alloc(text.length()); text.copy((char*) textData->data(), text.length()); IAIUIMessage* writeMsg=IAIUIMessage::create(AIUIConstant::CMD_WRITE, 0, 0, "data_type=text", textData); m_angent->sendMessage(writeMsg); writeMsg->destroy(); //停止写入 IAIUIMessage* writeMsg=IAIUIMessage::create(AIUIConstant::CMD_STOP_WRITE, 0, 0, "data_type=audio,sample_rate=16000", buffer); m_angent->sendMessage(writeMsg); writeMsg->destroy(); ~~~ 同时写入多个文本,用tag将结果与请求一一对应。示例: ~~~ java //写入文本 byte[] content= "你好".getBytes(); String params = "data_type=text"; AIUIMessage msg = new AIUIMessage(AIUIConstant.CMD_WRITE, 0, 0, "tag=write_data_1", content); mAIUIAgent.sendMessage(msg); //结果回调 private void processResult(AIUIEvent event) { String tag = event.data.getString("tag"); } ~~~ <IflyHeader />
admin
2025年9月12日 16:00
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码