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 三方大模型配置
2.12 流畅全双工交互配置
2.13 表情标签配置
2.14 长时记忆配置
2.15 声纹识别配置
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 合成能力使用
4.3.6 声纹管理API
5. 自定义业务
技能工作室概述
名词解析
技能
意图和语料
实体
动态实体
模糊匹配
填槽对话
技能设计规范
语音技能设计规范
开放技能接入审核规范
开放技能图标图片规范
技能开发
创建技能和意图
意图配置
技能测试
技能发布
技能后处理
技能导入导出
云函数APIv2.1
云函数APIv2.0
智能体开发
智能体对接
问答库开发
语句问答
关键词问答
文档问答
设备人设开发
技能协议
语义协议:重要字段和通用字段
技能后处理协议:标准请求
技能后处理协议:请求校验
技能后处理协议:Request_v2.1协议
技能后处理协议:Response_v2.1协议
技能资源限制
6. 硬件模组
RK3328 降噪板
RK3328降噪板白皮书
RK3328降噪板使用手册
RK3328降噪板规格书
RK3328降噪板协议手册
RK3328 AIUI评估板开发套件
RK3328评估板白皮书
RK3328评估板使用手册
RK3328评估板规格书
RK3328评估板开发手册
RK3588s 极简通用多模态开发套件
RK3588s 极简多模态套件白皮书
RK3588s 极简多模态套件使用手册
RK3588 AIUI多模态开发套件
RK3588一体机多模态产品规格书
RK3588多模态套件使用手册
视频传输协议
识别语义传输协议
音频传输协议
AIUI类型消息事件
ZG803 离线语音识别套件
ZG803 产品白皮书
USB声卡套件
USB声卡产品白皮书
USB声卡使用指南
AC7911B AIUI语音开发套件
AC7911B-产品白皮书
AC7911B-快速体验指南
AIUI评估板接入
集成方式
软件包说明
AIUIServiceKitSDK
串口SDK
评估板参数配置
调试升级
7. 常见问题处理
7.1 AIUI常见问题
7.2 评估板常见问题
7.3 动态实体常见问题
8. 联系方式
9. 服务条款
AIUI开放平台服务协议
AIUI开放平台隐私政策
小飞在家用户协议
小飞在家隐私政策
小飞在家开源软件使用许可
讯飞账号隐私政策
讯飞账号用户协议
讯飞带屏音箱用户协议
讯飞带屏音箱隐私政策
AIUI SDK隐私政策
AIUI SDK合规使用说明
本文档使用 MrDoc 发布
-
+
home page
4.2.2 交互API
<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;">交互API概述</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>交互API概述涵盖了与系统进行数据交互的完整流程,包括连接建立、请求发送、结果处理及相关补充说明。</div> <a href="#服务介绍" style="color: #6f42c1; font-weight: 500;"> <strong>- 1、服务介绍>>>点击跳转   </strong></a>    <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>    <a href="#交互请求" style="color: #6f42c1; font-weight: 500;"> <strong>- 4、交互请求>>>点击跳转   </strong></a> <br><a href="#结果说明" style="color: #6f42c1; font-weight: 500;"> <strong>- 5、结果说明>>>点击跳转   </strong></a>    <a href="#断开连接" style="color: #6f42c1; font-weight: 500;"> <strong>- 6、断开连接>>>点击跳转   </strong></a> <br><a href="#附录" style="color: #6f42c1; font-weight: 500;"> <strong>- 7、附录>>>点击跳转   </strong></a> <div></div> </div> <!-- 便签底部 --> </div> </div> </div> <div id="服务介绍"> </div> ## 1. 服务介绍 本协议接口仅适用于`通用大模型交互链路`服务场景,提供在线语音交互能力。 [WebSocket DEMO](https://gitee.com/iflytek-aiui/AIUILiteDemo "WebSocket DEMO") ### 说明 星火交互认知大模型支持按台授权,联系讯飞商务或邮件咨询aiui_support@iflytek.com。 <div id="接口说明"> </div> ## 2. 接口说明 本协议基于websocket协议,交互过程含3个阶段:<span style="color:red">建立连接</span>、<span style="color:red">交互</span>、<span style="color:red">断开</span>。 <div style="display: flex; align-items: center; background-color: #fff3cd; border-left: 6px solid #ffc107; border-radius: 4px; padding: 12px 16px; gap: 8px;"> <div style="width: 30px; height: 30px; flex-shrink: 0;"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/> </svg> </div> <div style="flex: 1; line-height: 1.6;"> <h3 style="margin: 0 0 6px 0; font-weight: 600;">注意:</h3> <p style="margin: 0; font-size: 0.95rem;">单次会话后超过60s未发送数据,云端主动断开链接</p> </div> </div> <div id="建立连接"> </div> ## 3. 建立连接 WebSocket 握手阶段用于设置参数和鉴权,参数在url 中指定,握手请求和参数必须符合 websocket 协议。 ### 请求地址 > ws[s]://aiui.xf-yun.com/v2/aiint/ws ### 请求示例 > ws[s]://aiui.xf-yun.com/v2/aiint/ws?host=xxx&date=xxx&authorization=xxx <span style="color:red"> 需 url encode </span> 具体鉴权参数构建见【[鉴权文档](https://aiui-doc.xf-yun.com/project-1/doc-404/ "鉴权文档")】说明。 <div id="交互请求"> </div> ## 4. 交互请求 Websocket连接后进入通信阶段,此时客户端主动操作有:上传数据或断开连接,被动操作有:接收结果和错误信息 ### 请求数据结构 > > 请求数据格式由header,parameter 和 payload 构成。详细结构见<a href="#附录" style="color: #6f42c1;"><strong>【附录】</strong></a>说明 ```````json { "header": { "sn": "1234567890", "appid": "xxx", "stmid": "text-1", "status": 3, "scene": "main_box", "msc.lat": 19.65309164062, "msc.lng": 109.259056086, "os_sys": "windows" }, "parameter": { "nlp": { "nlp": { "compress": "raw", "format": "json", "encoding": "utf8" }, "sub_scene": "cbm_v45", "new_session": true } }, "payload": { "text": { "compress": "raw", "format": "plain", "text": "5L2g5aW95ZWK", "encoding": "utf8", "status": 3 } } } ``````` > > 数据请求协议字段说明 | 参数 | 类型 | 必须 | 说明 | 示例 | | :------- | :----- | :--- | :----------------------- | :----------- | | header | 协议头部 | 是 | object | 协议头部,⽤于描述平台特性的参数 | | parameter | AI能⼒参数 | 是 | object | 特性参数,⽤于控制 AI 引擎特性的开关 | | parameter.iat | 识别参数 | 否 | object | 识别引擎控制参数设置,如vad信息 | | parameter.nlp | 语义参数 | 否 | object | 语义结果格式控制、历史清理等参数设置 | | parameter.tts | 合成参数 | 否 | object | 合成参数设置,如发音人、合成音频类型等 | | payload | 输⼊数据段 | 是 | object | 数据段,携带请求的数据 | | payload.text | ⽂本输⼊ | 否 | object | 请求⽂本数据输⼊,文本请求时必传 | | payload.audio | 语⾳输⼊ | 否 | object | 请求语⾳数据输入,音频请求时必传 | | payload.cbm_semantic | 结构化语义 | 否 | object | 透传参数:个性化、自定义参数设置 | | payload.cbm_reply | 可控对话回复 | 否 | object | 大模型回复设置:风格化回复 | | payload.cbm_semantic_tpp | 应用后处理 | 否 | object | 透传参数:自定义参数设置 | | payload.cbm_knowledge | 知识检索 | 否 | object | 知识检索设置:文档问答标签检索和阈值设置 | #### header 数据参数详细说明 | 参数 | 类型 | 必须 | 说明 | 示例 | | :------- | :----- | :--- | :----------------------- | :----------- | | appid | string | 是 | AIUI应用信息中的appid取值 | a44e0f36 | | sn | string | 是 | 设备(用户)唯一标识,长度不超过32位。 | 1234567890 | | status | int | 是 | 取值范围 0 1 2 3;(0-首帧、1-中间帧、2-尾帧、3-数据一帧发送完毕,文本请求固定为3) | 3 | | stmid | string | 是 | 会话请求id,用于标记不同会话,每次请求需要更新不同取值。长度不超过32位。 | audio-1、text-1 | | scene | string | 是 | AIUI应用情景模式 | main、main_box | | msc.lat | double | 否 | 纬度,取值范围 -90 ~ +90,最长8位精度 | 19.65309164 | | msc.lng | double | 否 | 经度,取值范围 -180 ~ +180,最长8位精度 | 109.25905608 | | os_sys | string | 否 | 应用系统类型 | windows | #### parameter 数据参数详细说明 > iat 识别参数 | 参数 | 类型 | 必须 | 说明 | 示例 | | :------- | :----- | :--- | :----------------------- | :----------- | | svad | string | 否 | 云端vad开关:1(打开),0(关闭) | 1 | | eos | string | 否 | 云端音频尾端点时长检测设置 | 1000 | | vgap | string | 否 | 云端识别引擎会话断句时长检测设置 | 800 | | speex_size | int | 否 | speex音频帧大小,speex音频必传。详见附录speex_size与speex库<a href="#speex压缩关系等级表" style="color: #6f42c1;"><strong>【压缩等级关系表】</strong></a>| 70 | | iat.compress | string | 是 | 识别结果类型 |固定取值: raw | | iat.format | string | 是 | 识别结果格式 | 固定取值:json | | iat.encoding | string | 是 | 识别编码格式 | 固定取值:utf8 | > nlp 语义参数 | 参数 | 类型 | 必须 | 说明 | 示例 | | :------- | :----- | :--- | :----------------------- | :----------- | | sub_scene | string | 是 | 大模型引擎 | 固定取值:cbm_v45 | | richness | string | 否 | 回复丰富度: concise(简洁)、mid(中等)、rich(丰富)[默认取值,包含markdown标签] | concise | | env | string | 否 | 设备人设:结构固定,其中expand_persona取值代表是否支持大模型自定义扩展人设信息 ,persona取值为自定义人设的问题和答案。详细可见附录请求示例请求参数构建写法 |{\"human\":{\"expand_persona\":true,\"persona\":\"{\\\"父亲\|爸爸\\\":\\\"科大讯飞\\\",\\\"姓名\|名字\|称呼\\\":\\\"小飞\\\"}\"}} | | new_session | boolean | 否 | 是否清除本次会话历史 | true | | sn | string | 否 | 信源激活绑定设备标识,与header中sn取值保持一致 | 1234567890 | | nlp.compress | string | 否 | 预留字段:nlp结果类型 | 固定取值:raw | | nlp.format | string | 否 | 预留字段:nlp结果格式 | 固定取值:json | | nlp.encoding | string | 否 | 预留字段:nlp编码格式 | 固定取值:utf8 | > tts 合成参数 > <span style="color:red">合成url下发仅支持在主动文本合成方式(即在发送文本数据时指定 header.scene 取值固定为 IFLYTEK.tts),全链路合成结果下发仅支持音频流</span> | 参数 | 类型 | 必须 | 说明 | 示例 | | :------- | :----- | :--- | :----------------------- | :----------- | | vcn | string | 否 | 发音人取值<br> 使用声音复刻时固定取值为: x5_clone | x2_xiaojuan | | res_id | string | 否 | 声音复刻资源id。<br>注意:仅在使用声音复刻(vcn=x5_clone) 时需要携带本参数 | kps77sqew4k | | oral_level | string | 否 | 超拟人合成口语化等级(仅在超拟人合成调用中生效)<br> 高:high, 中:mid, 低:low。默认mid | 默认取值: mid | | tts_res_type | string | 否 | 合成下发url链接 | 固定取值:url | | tts.bit_depth | int | 是 | 音频位数 | 16 | | tts.channels | int | 是 | 音频通道数 | 1 | | tts.encoding | string | 是 | 音频格式:raw、speex-wb;10、lame、opus | raw | | tts.sample_rate | int | 是 | 音频采样率 | 16000 | #### payload 数据参数详细说明 <span style="color:red">payload项提供交互数据类型说明及对应参数设置,现阶段主要有:文本、音频两种请求,具体参数设置如下。</span> > payload.text 设置 (文本请求参数和内容) | 参数 | 类型 | 必须 | 说明 | 示例 | | :------- | :----- | :--- | :----------------------- | :----------- | | encoding | string | 是 | 编码格式,默认 utf8 | utf8 | | compress | string | 是 | 压缩格式:默认 raw | raw | | format | string | 是 | 内容格式:默认 plain | plain | | status | int | 是 | 数据帧状态 | 固定取值:3 | | text | string | 是 | 文本数据:需经base64编码 | 5L2g5aW95ZWK | > payload.audio 设置 (音频请求参数和内容) | 参数 | 类型 | 必须 | 说明 | 示例 | | :------- | :----- | :--- | :----------------------- | :----------- | | encoding | string | 是 | 音频编码(取值:lame,speex,opus,opus-wb,speex-wb, raw,ico) | raw | | sample_rate | int | 是 | 采样率(取值 :8000、16000) | 16000 | | channels | int | 是 | 通道数(取值 :1、2) | 1 | | bit_depth | int | 是 | 位数(取值 :8、16) | 16 | | status | int | 是 | 数据状态:首帧 0、中间帧 1、尾帧2,一帧传完 3| 0 | | frame_size | int | 是 | 帧大小(取值: 0~1024) | 0 | | audio | string | 是 | 音频数据:需经base64编码 | | > payload.cbm_semantic 设置(透传参数设置) | 参数 | 类型 | 必须 | 说明 | 示例 | | :------- | :----- | :--- | :----------------------- | :----------- | | encoding | string | 是 | 内容编码:固定 utf8 | utf8 | | compress | string | 是 | 内容压缩格式:固定 raw | raw | | format | string | 是 | 内容格式:固定 json | plain | | status | int | 是 | 数据帧发送帧状态,固定取值 3 | 3 | | text | string | 是 | 支持pers_param、userparam等参数设置:结果需经base64编码 | eyJ1c2VycGFyYW1zIjoiZXlKclpYa2lPaUoyWVd4MVpTSjkiLCJwZXJzX3BhcmFtIjoie1widWlkXCI6XCIxMjM0NTY3ODkwXCJ9In0= | > payload.cbm_semantic_tpp 设置(自定义参数透传设置) | 参数 | 类型 | 必须 | 说明 | 示例 | | :------- | :----- | :--- | :----------------------- | :----------- | | encoding | string | 是 | 内容编码:固定 utf8 | utf8 | | compress | string | 是 | 内容压缩格式:固定 raw | raw | | format | string | 是 | 内容格式:固定 json | plain | | status | int | 是 | 数据帧发送帧状态,固定取值 3 | 3 | | text | string | 是 | UserParam参数设置:注意UserParams参数key的大小写,以及需要三次base64编码 | ZXlKVmMyVnlVR0Z5WVcxeklqb2laWGxLY2xwWWEybFBhVW95V1ZkNE1WcFRTamtpZlE9PQ== | > payload.cbm_reply 设置(风格化设置) | 参数 | 类型 | 必须 | 说明 | 示例 | | :------- | :----- | :--- | :----------------------- | :----------- | | encoding | string | 是 | 内容编码:固定 utf8 | utf8 | | compress | string | 是 | 内容压缩格式:固定 raw | raw | | format | string | 是 | 内容格式:固定 json | json | | status | int | 是 | 数据帧发送帧状态,固定取值 3 | 3 | | text | string | 是 | 风格化回复设置:base64编码 | W3sidHlwZSI6IumjjuagvOWMluaOp+WItiIsInZhbHVlIjoi55So5byg6aOe57KX54q355qE5Y+j5ZC76K+J6K+0In1d | > payload.cbm_knowledge 设置(文档问答指定文档标签搜索) | 参数 | 类型 | 必须 | 说明 | 示例 | | :------- | :----- | :--- | :----------------------- | :----------- | | encoding | string | 是 | 内容编码:固定 utf8 | utf8 | | compress | string | 是 | 内容压缩格式:固定 raw | raw | | format | string | 是 | 内容格式:固定 json | json | | status | int | 是 | 数据帧发送帧状态,固定取值 3 | 3 | | text | string | 是 | 文档问答标签:base64编码 | eyJ0YWdzIjp7Im11c3QiOlsi56eR5oqA5oql56ysMeeJiCJdfX0= | <div id="结果说明"> </div> ## 5. 结果说明 ### 连接建立成功 > 连接成功消息示例如下:cid表示会话ID,后续会话都会关联该ID ```````json { "header": { "code": 0, "message": "success", "cid": "xxx" } } ``````` ### 数据交互 - 会话开始 > 初始消息格式示例: ```````json { "header": { "code": 0, "message": "success", "cid": "xxx", "sid": "xxx", "stmid": "text-1", "status": 0 } } ``````` ### 数据交互 - 会话中间结果 <span style="color:red">说明:下面所有结果中 text 字段取值都要解析base64才能获取明文内容</span> > 会话中间结果:识别结果(iat) 示例如下: ```````json { "header": { "code": 0, "message": "success", "stmid": "audio-1", "sid": "xxx", "cid": "xxx", "status": 1 }, "payload": { "iat": { "encoding": "utf8", "compress": "raw", "format": "plain", "status": 1, "seq": 1, // 结果序号,从1开始计数,1、2、3…… "text": "eyJ0ZXh0Ijp7ImJnIjowLCJlZCI6MCwibHMiOmZhbHNlLCJzbiI6MSwid3MiOlt7ImJnIjowLCJjdyI6W3sic2MiOjAsInciOiLku4rlpKkifV19LHsiYmciOjAsImN3IjpbeyJzYyI6MCwidyI6IuaYn+acnyJ9XX0seyJiZyI6MCwiY3ciOlt7InNjIjowLCJ3Ijoi5YegIn1dfV19fQ==" // {"text":{"bg":0,"ed":0,"ls":false,"sn":1,"ws":[{"bg":0,"cw":[{"sc":0,"w":"今天"}]},{"bg":0,"cw":[{"sc":0,"w":"星期"}]},{"bg":0,"cw":[{"sc":0,"w":"几"}]}]}} } } } ``````` > 会话中间结果:语义规整结果(cbm_tidy) 示例: ```````json { "header": { "code": 0, "message": "success", "stmid": "text-1", "sid": "xxx", "cid": "xxx", "status": 1 }, "payload": { "cbm_tidy": { "compress": "raw", "encoding": "utf8", "format": "plain", "seq": 0, "status": 2, "text": "eyJxdWVyeSI6IuWQiOiCpeS7iuWkqeeahOWkqeawlOaAjuS5iOagt+aYjuWkqeeahOWRoiIsImludGVudCI6W3siaW5kZXgiOjAsInZhbHVlIjoi5ZCI6IKl5LuK5aSp55qE5aSp5rCU5oCO5LmI5qC3In0seyJpbmRleCI6MSwidmFsdWUiOiLlkIjogqXmmI7lpKnnmoTlpKnmsJTmgI7kuYjmoLcifV19" // {"query":"合肥今天天气?明天呢?","intent":[{"index":0,"value":"合肥今天天气"},{"index":1,"value":"合肥明天天气"}]} } } } ``````` > 会话中间结果:聚合语义结果(cbm_semantic) 示例: ```````json { "header": { "code": 0, "message": "success", "stmid": "audio-1", "sid": "xxx", "cid": "xxx", "status": 1 }, "payload": { "cbm_meta": { "compress": "raw", "encoding": "utf8", "format": "plain", "seq": 0, "status": 3, "text": "eyJjYm0tc2VtYW50aWMiOnsiaW50ZW50IjowfX0=" }, "cbm_semantic": { "compress": "raw", "encoding": "utf8", "format": "plain", "seq": 0, "status": 3, "text": "eyJhbnN3ZXIiOnsidGV4dCI6IuaYr+aYn+acn+Wbm+OAgiIsInR5cGUiOiJUIn0sImFycmF5X2luZGV4IjowLCJjYXRlZ29yeSI6IklGTFlURUsuZGF0ZXRpbWVQcm8iLCJkYXRhIjp7fSwiZGVtYW5kX3NlbWFudGljIjp7ImRhdGV0aW1lIjoi5LuK5aSpIiwib3BlcmF0aW9uIjoiV0hBVFdFRUsiLCJzZXJ2aWNlIjoiZGF0ZXRpbWVQcm8ifSwiZGlhbG9nX3N0YXQiOiJEYXRhVmFsaWQiLCJvcGVyYXRpb24iOiJXSEFUV0VFSyIsIm9yaWdfc2VtYW50aWMiOnsic2xvdHMiOnsiZGF0ZXRpbWUiOiLku4rlpKkiLCJvcGVyYXRpb24iOiJXSEFUV0VFSyJ9fSwicmMiOjAsInNhdmVfaGlzdG9yeSI6dHJ1ZSwic2NvcmUiOjEsInNlYXJjaF9zZW1hbnRpYyI6eyJkYXRldGltZSI6IuS7iuWkqSIsIm9wZXJhdGlvbiI6IldIQVRXRUVLIiwic2VydmljZSI6ImRhdGV0aW1lUHJvIn0sInNlbWFudGljIjp7InNsb3RzIjp7ImRhdGV0aW1lIjp7ImRhdGUiOiIyMDIzLTA4LTI0IiwiZGF0ZU9yaWciOiLku4rlpKkiLCJ0eXBlIjoiRFRfQkFTSUMifSwib3BlcmF0aW9uIjoiV0hBVFdFRUsifX0sInNlcnZpY2UiOiJkYXRldGltZVBybyIsInNob3VsZGVuZHNlc3Npb24iOiJ0cnVlIiwic2lkIjoid2d3MDAwYzU5NTBAZHgxOGEyNmZmOWZkOTc4MjQ1MzIiLCJzdGF0ZSI6eyJmZzo6ZGF0ZXRpbWVQcm86OmRlZmF1bHQ6OmRlZmF1bHQiOnsic3RhdGUiOiJkZWZhdWx0In19LCJ0ZXh0Ijoi5LuK5aSp5pif5pyf5YegIiwidXNlZF9zdGF0ZSI6eyJzdGF0ZSI6ImRlZmF1bHQiLCJzdGF0ZV9rZXkiOiJmZzo6ZGF0ZXRpbWVQcm86OmRlZmF1bHQ6OmRlZmF1bHQifSwidXVpZCI6IndndzAwMGM1OTUwQGR4MThhMjZmZjlmZDk3ODI0NTMyIiwidmVyc2lvbiI6IjMyMi4wIn0=" // {"answer":{"text":"是星期四。","type":"T"},"array_index":0,"category":"IFLYTEK.datetimePro","data":{},"demand_semantic":{"datetime":"今天","operation":"WHATWEEK","service":"datetimePro"},"dialog_stat":"DataValid","operation":"WHATWEEK","orig_semantic":{"slots":{"datetime":"今天","operation":"WHATWEEK"}},"rc":0,"save_history":true,"score":1,"search_semantic":{"datetime":"今天","operation":"WHATWEEK","service":"datetimePro"},"semantic":{"slots":{"datetime":{"date":"2023-08-24","dateOrig":"今天","type":"DT_BASIC"},"operation":"WHATWEEK"}},"service":"datetimePro","shouldendsession":"true","sid":"wgw000c5950@dx18a26ff9fd97824532","state":{"fg::datetimePro::default::default":{"state":"default"}},"text":"今天星期几","used_state":{"state":"default","state_key":"fg::datetimePro::default::default"},"uuid":"wgw000c5950@dx18a26ff9fd97824532","version":"322.0"} } } } ``````` > 会话中间结果:最终语义结果(nlp) 示例: > <div style="display: flex; align-items: center; background-color: #fff3cd; border-left: 6px solid #ffc107; border-radius: 4px; padding: 12px 16px; gap: 8px;"> <div style="width: 30px; height: 30px; flex-shrink: 0;"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/> </svg> </div> <div style="flex: 1; line-height: 1.6;"> <h3 style="margin: 0 0 6px 0; font-weight: 600;">注意:</h3> <p style="margin: 0; font-size: 0.95rem;">大模型语义结果根据结果序列做拼接操作时,当请求改写结果有多个,需要根据 payload.cbm_meta.text.nlp 中 intent 字段取值来做结果标识区分(0代表第一个改写请求响应内容,1为第二个……)</p> </div> </div> ```````json { "header": { "code": 0, "message": "success", "stmid": "audio-1", "sid": "xxx", "cid": "xxx", "status": 1 }, "payload": { "cbm_meta": { "compress": "raw", "encoding": "utf8", "format": "plain", "seq": 0, "status": 1, "text": "eyJubHAiOnsiaW50ZW50IjowLCJubHBfb3JpZ2luIjoiY2JtX3NlbWFudGljIn19" // {"nlp":{"intent":0,"nlp_origin":"cbm_semantic"}} }, "nlp": { "compress": "raw", "encoding": "utf8", "format": "plain", "seq": 2, // 结果序号,从 0 开始,0、1、2、3…… "status": 1, // 结果帧类型:0-首帧、1-中间帧、2-尾帧 "text": "56Wd5oKo5bqm6L+H5LiA5Liq" // 祝您度过一个 } } } ``````` > 会话中间结果:合成结果(tts)示例: > ```````json { "header": { "code": 0, "message": "success", "stmid": "text-1", "sid": "xxx", "cid": "xxx", "status": 2 }, "payload": { "tts": { "encoding": "opus", "sample_rate": 16000, "channels": 1, "bit_depth": 16, "frame_size": 0, "status": 2, "seq": 1, "audio": "aHR0cHM6Ly9haXVpLm9wZW5zcGVlY2guY24vdHRzL2Rvd25sb2FkL1lYQndhV1E5WVRRMFpUQm1NellzYzJsa1BYZG5kekF3TUdOak9UZzRRR1I0TVRoaE1tRTJZbVV6WmpFM09ESTBOVE15TEhKcFpEMHgubXAz" // 当请求携带参数 tts_res_type:url 时下发url,否则下发音频数据流 } } } ``````` ### 下发结果类型说明 | 结果字段 | 类型 | 解析需要 | 结果说明 | 备注 | | :----------------------- | :----- | :------- | :----------- | :----------------------------------------------------------- | | payload.iat | object | 是 | 识别结果 | 解析结果时注意是否开启了流式识别(text解析后查看是否 pgs 参数存在) | | payload.cbm_tidy | object | 是 | 语义规整结果 | 当请求包含有多个意图时会进行意图拆分,后续服务按照实际拆分的结果执行请求。如请求“合肥今天天气如何明天的呢” | | payload.cbm_meta | object | 是 | 附加描述信息 | 对下列payload的平级结果做信息补充说明, | | payload.cbm_semantic | object | 是 | 聚合语义结果 | AIUI通用技能结构化结果 | | payload.nlp | object | 是 | 最终语义结果 | 解析文本做拼接处理 | | payload.tts | object | 是 | 合成结果 | 解析音频流做拼接,或获取url | > 当payload.cbm_semantic.text结构化数据结果中rc值为4或payload.cbm_meta.text补充说明中untrusted取值为true,说明技能未命中或结果可信度不够,应当舍弃payload.cbm_semantic中的结构化结果,直接采用payload.nlp中大模型结果 具体业务参考[大模型使用问答库手册](https://aiui-doc.xf-yun.com/project-1/doc-359/)中落域判断。 <div id="断开连接"> </div> ## 6. 断开连接 > 断开连接机制 > 1、请求参数报错,云端直接断开连接 > 2、正常会话建立连接,可以一直请求。当某此会话后超过60s无交互云端会报错连接超时,然后断开连接 > 3、设备端主动断开连接 <div id="附录"> </div> <div id="附录"> </div> ## 7. 附录 ### 音频请求示例 > 识别+语义请求,包含风格化回复、自定义参数、个性化参数 > 多帧发送之首帧音频请求结构 ```````json { "header": { "sn": "1234567890", "appid": "a44e0f36", "stmid": "audio-1", "status": 0, "scene": "main_box", "msc.lat": 19.65309164062, "msc.lng": 109.259056086, "os_sys": "windows" }, "parameter": { "nlp": { "nlp": { "compress": "raw", "format": "json", "encoding": "utf8" }, "sub_scene": "cbm_v45", "new_session": false, "richness": "concise", "env": "{\"human\":{\"expand_persona\":true,\"persona\":\"{\\\"父亲|爸爸\\\":\\\"科大讯飞\\\",\\\"姓名|名字|称呼\\\":\\\"小飞\\\"}\"}}" }, "iat": { "svad": "1", "bos": "5000", "eos": "800", "iat": { "compress": "raw", "format": "json", "encoding": "utf8" } } }, "payload": { "cbm_semantic": { "compress": "raw", "format": "json", "text": "eyJ1c2VycGFyYW1zIjoiZXlKclpYa2lPaUoyWVd4MVpTSjkiLCJwZXJzX3BhcmFtIjoie1wiYXBwaWRcIjpcImE0NGUwZjM2XCIsXCJ1aWRcIjpcIjEyMzQ1Njc4OTBcIn0ifQ==", "encoding": "utf8", "status": 3 }, "cbm_reply": { "compress": "raw", "format": "json", "text": "W3sidHlwZSI6IuWuoOa6uueUt+WPiyIsInZhbHVlIjoi5rip5p+U5L2T6LS077ya5Lya5peg5b6u5LiN6Iez5Zyw54Wn6aG+5Lq677yM6K6p5Lq65oSf5Y+X5Yiw54ix5ZKM5YWz5b+D44CCIn1d", "encoding": "utf8", "status": 3 }, "audio": { "sample_rate": 16000, "channels": 1, "audio": "+//7//z/+v/9//3//f/7//r/+P/5//v//P/8//r//f/8//v//f/9//7/AAD///////8AAP//AwAFAAYAAgAAAAIAAgADAAIA//8CAAQABgADAAQAAQABAAUAAwADAAUABgAEAAUABAAFAAUAAwAEAAUAAgABAP7//v/+////AgACAAAAAAD6//f/9v/3//f/9P/1//f/+//+//z/AQAAAAAABAADAAMABQAIAAoACQAHAAYABgAFAAYABAAEAAUABAAAAAAA///////////+/////v/+//v//P/9//z//f/+//7//v///wEAAgACAP3//P/+//3//v8BAAEA/v8BAAYABgAGAAMAAwAFAAUABQAFAAQABAADAAQABQAEAAQABQAFAAMABAAEAAEAAgADAAIA/v/8/wEAAQD+////AgD///7//v/7//3/AAD6//v/+v/7//z/+v/3//j/+f/5//f/+P/3//f/9//6//n/+f/6//r/+P/5//j/+P/4//r//P/+////AgACAAIAAAD9/wAA//8BAAEA/f//////AAAAAAAAAgABAAUABAABAP7//v/9//3/+v/6//z//f/9//z///8BAAMAAwAEAAMABQAHAAcACAAKAA0ADgALAAgACwAMAAgACwAMAA8AEgASABQAFgASABQAEQAPAAgAAwAFAAYABAACAAEAAAD+//v/+f/1/+//5f/l/+b/5//m/+j/8f/7////AAAFAAUABQACAAEA///8//v/9//3//b/+f/6//r/+v/2//j/9P/2//f/9//4//z/AAD+/wAAAwAFAAcABAAEAAcABgADAAIABAAGAAwADQANAA0ADAAKAAwADAAMAA8ADwAMAA0ACgAJAAoACAAFAAMAAQD9//v/9//7//n/+f/3//f/9//6//j/+P/4//r/+P/2/w==", "encoding": "raw", "bit_depth": 16, "frame_size": 0, "status": 0 } } } ``````` ### 文本语义请求 > 语义请求,包含风格化回复、自定义参数、个性化参数 > 一帧请求 ```````json { "header": { "sn": "1234567890", "appid": "a44e0f36", "stmid": "text-1", "status": 3, "scene": "main_box", "msc.lat": 19.65309164062, "msc.lng": 109.259056086, "os_sys": "windows" }, "parameter": { "nlp": { "nlp": { "compress": "raw", "format": "json", "encoding": "utf8" }, "sub_scene": "cbm_v45", "new_session": false, "richness": "concise", "env": "{\"human\":{\"expand_persona\":true,\"persona\":\"{\\\"父亲|爸爸\\\":\\\"科大讯飞\\\",\\\"姓名|名字|称呼\\\":\\\"小飞\\\"}\"}}" } }, "payload": { "cbm_semantic": { "compress": "raw", "format": "json", "text": "eyJ1c2VycGFyYW1zIjoiZXlKclpYa2lPaUoyWVd4MVpTSjkiLCJwZXJzX3BhcmFtIjoie1wiYXBwaWRcIjpcImE0NGUwZjM2XCIsXCJ1aWRcIjpcIjEyMzQ1Njc4OTBcIn0ifQ==", "encoding": "utf8", "status": 3 }, "cbm_reply": { "compress": "raw", "format": "json", "text": "W3sidHlwZSI6IuWuoOa6uueUt+WPiyIsInZhbHVlIjoi5rip5p+U5L2T6LS077ya5Lya5peg5b6u5LiN6Iez5Zyw54Wn6aG+5Lq677yM6K6p5Lq65oSf5Y+X5Yiw54ix5ZKM5YWz5b+D44CCIn1d", "encoding": "utf8", "status": 3 }, "text": { "compress": "raw", "format": "plain", "text": "5omT55S16K+d57uZ5byg5LiJ", "encoding": "utf8", "status": 3 } } } ``````` ### 文本合成请求 > 文本合成请求 ```````json { "header": { "sn": "1234567890", "appid": "a44e0f36", "stmid": "text-1", "status": 3, "scene": "IFLYTEK.tts" }, "parameter": { "tts": { "vcn": "x4_lingxiaoying_em_v2", "tts": { "channels": 1, "sample_rate": 16000, "bit_depth": 16, "encoding": "lame" }, "tts_res_type": "url" } }, "payload": { "text": { "compress": "raw", "format": "plain", "text": "5omT55S16K+d57uZ5byg5LiJ", "encoding": "utf8", "status": 3 } } } ``````` <div id="speex压缩关系等级表"> </div> ### speex压缩关系等级表 > speex_size与speex库压缩等级(quantity)关系表: |quantity(压缩等级)|0|1|2|3|4|5|6|7|8|9|10| |:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--| |speex | 6 | 10 | 15 | 20 | 20 | 28 | 28 | 38 | 38 | 46 | 62 | |speex-wb | 10 | 15 | 20 | 25 | 32 | 42 | 52 | 60 | 70 | 86 | 106 |
admin
Dec. 1, 2025, 2:08 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
share
link
type
password
Update password