AIUI文档中心
AIUI平台说明
什么是AIUI
AIUI平台能力介绍
AIUI交互流程说明
AIUI快速入门
AIUI应用管理说明
应用接入和配置
应用后处理
敏感词
AIUI开发接入
AIUI接入概述
声学接入
交互接入
SDK接入
SDK介绍
参数配置
消息事件
交互状态
结果解析
WebSocketAPI接入
精简协议接入
常用功能
交互控制
语音唤醒
语音合成
用户个性化
自定义参数
离线命令词
翻译模式
流式识别
语义VAD
发音人列表
关键词过滤
情景模式
错误码
星火交互认知大模型说明
大模型概述
开发接入
SDK接入
API接入
大模型API服务鉴权
特色能力
超拟人合成
声音复刻
大模型功能
大模型错误码
AIUI极速超拟人交互接入
AIUI极速超拟人交互方案介绍
AIUI极速超拟人交互SDK
软硬件产品接入
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
评估板参数配置
调试升级
技能工作室
技能概述
名词解析
技能
意图和语料
实体
动态实体
模糊匹配
填槽对话
技能设计规范
语音技能设计规范
开放技能接入审核规范
开放技能图标图片规范
技能开发
创建技能和意图
意图配置
技能测试
技能发布
技能后处理
技能导入导出
云函数APIv2.1
云函数APIv2.0
智能体开发
问答库开发
语句问答
关键词问答
文档问答
设备人设开发
技能协议
语义协议:重要字段和通用字段
技能后处理协议:标准请求
技能后处理协议:请求校验
技能后处理协议:Request_v2.1协议
技能后处理协议:Response_v2.1协议
技能资源限制
硬件设计参考
常见问题
AIUI常见问题
评估板常见问题
动态实体常见问题
联系方式
服务条款
AIUI开放平台服务协议
AIUI开放平台隐私政策
小飞在家用户协议
小飞在家隐私政策
小飞在家开源软件使用许可
讯飞账号隐私政策
讯飞账号用户协议
讯飞带屏音箱用户协议
讯飞带屏音箱隐私政策
AIUI SDK隐私政策
AIUI SDK合规使用说明
本文档使用 MrDoc 发布
-
+
首页
AIUI极速超拟人交互SDK
**目 录** 1. 接入流程 2. SDK介绍 3. 参数配置说明 4. 功能模块说明 5. 快速集成体验 6. 注意事项 7. 名词解释 ## 1. 接入流程 - 登陆[AIUI开放平台](https://aiui.xfyun.cn/),创建应用 - 进入创建的应用,从应用信息中获取appid和相关密钥信息。新应用免费赠送一路并发、两个小时的对话时长。如需增加授权,可联系讯飞(aiui_support@iflytek.com)申请。 - 下载[【附件】AIUI极速超拟人交互源码_v1.0.zip](/media/attachment/2025/01/AIUI%E6%9E%81%E9%80%9F%E8%B6%85%E6%8B%9F%E4%BA%BA%E4%BA%A4%E4%BA%92%E6%BA%90%E7%A0%81_v1.0.zip)进行对接开发 ><span style="color:red">**效果演示:**</span> ><p style="text-indent: 2em;"> 微信扫描下方二维码,查看演示视频。 </p>  ## 2. SDK介绍 - SDK接口说明: | 名称 | 说明 | |:----------------|:---------------------------------------------------------| | aiui_init | 初始化AIUI实例 | | aiui_start | 开启会话,一般在唤醒或者按键响应之后调用 | | aiui_send_audio | 发送音频数据(1ch 16k 16bit pcm音频数据流, 建议每次发送40ms音频量, 也就是1280字节) | | aiui_stop | 停止数据发送, 断开会话 | | aiui_uninit | 销毁AIUI交互实例, 释放相应资源 | - aiui 事件回调函数原型: `typedef void (*aiui_event)(const void *user_param, aiui_callback_event_t *event);` - user_param:用户在调用 `aiui_init` 函数传入的自定义参数 - event:事件数据结构体指针 - event_type: 事件类型 - result: 事件类型对应的数据结果. 具体的参见 `demo.c` 中 `process_aiui_event` 函数中的解析流程. - SDK调用流程: * 持续对话: 适用于有回消且持续对话的场景, 通常使用唤醒词触发流程 > 初始化(`aiui_init`) `-->` 启动会话(`aiui_start`) `-->` 写音频(`aiui_send_audio`) `-->` 回调收到tts音频送到播放器播放. > * `-->` 若收到云端 Vad:Bos 前端点事件, 则清空当前播放的tts音频流, 打断停止播放 > * `-->` 若收到云端错误码(比如触发敏感词审核), 则关闭会话(`aiui_stop`), 如需开启新会话则调用`aiui_start`. > * `-->` 若不再需要交互, 释放资源(`aiui_uninit`) * 单次交互: 适用于无回消, 或按键触发交互的场景 > 初始化(`aiui_init`) `-->` 按键触发启动会话(`aiui_start`) `-->` 写音频(`aiui_send_audio`) `-->` 回调收到tts音频送到播放器播放, 若收到最后一帧音频(dts==2)时断开会话(aiui_stop) > * `-->` 如需继续交互或者等按键再次触发时, 再次启动会话(`aiui_start`) `-->` ... > * `-->` 若不再需要交互, 释放资源(`aiui_uninit`) - 源代码说明(SDK以源码方式提供, 需要直接将源文件加入到工程中编译): | 头文件 | 内容说明 | |:-----------------------------------|:----------------------------------------------------------------------------------------------------------| | aiui_api.h | aiui交互接口 | | aiui_log.h | log打印接口 | | aiui_socket_api.h | socket接口的二次封装, 某些平台需要在.c文件自行实现相应函数 | | aiui_http_api.h | http相关接口, 调用 aiui_socket_api.h 实现. | | aiui_websocket_api.h | websocket相关接口, 基于 aiui_http_api.h 实现, 若所处设备平台提供了websocket接口, 可将 aiui_websocket_api.c 中的实现指向平台websocket接口 | | aiui_message_parse.h | 对云端下发的json数据进行解析, 解析出识别(iat), 语义(nlp), 合成(tts)结果 | | base64.h, cjosn.h, md5.h, sha256.h | base64编解码, json解析以及Hash计算。如果与系统本身自带的函数有冲突, 先删掉, 然后在代码中引用系统自带接口即可 | 与头文件对应的`.c`文件在`src/aiui`目录下。 ## 3. 参数配置说明 在 `tool/deploy/bin/aiui.json` 配置文件中定义了SDK配置参数 ```json { "login": { "appid": "", "key": "", "api_secret": "" }, "global": { "scene": "sos_app_box", "aiui_ver": "3", "uid": "12345678abcdefgh" }, "tts": { "voice_name": "", "data_encoding": "raw" } } ``` <table> <tr> <td><b>模块名称</b></td> <td><b>模块说明</b></td> <td><b>参数名称</b></td> <td><b>是否必传</b></td> <td><b>参数和取值说明</b></td> </tr> <tr> <td rowspan="3">login</td> <td rowspan="3">登录参数</td> <td>appid</td> <td>是</td> <td>AIUI应用信息appid</td> </tr> <tr> <td>key</td> <td>是</td> <td>AIUI应用信息appKey</td> </tr> <tr> <td>api_secret</td> <td>是</td> <td>AIUI应用信息apiSecret</td> </tr> <tr> <td rowspan="3">global</td> <td rowspan="3">全局参数</td> <td>scene</td> <td>是</td> <td><b>AIUI应用情景模式</b><br>sos_app或sos_app_box</td> </tr> <tr> <td>aiui_ver</td> <td>是</td> <td><b>AIUI交互链路指定</b><br>3:极速交互<br></td> </tr> <tr> <td>uid</td> <td>是</td> <td><b>用户唯一标识</b><br>不超过32字符长度(数字、字母)<br></td> </tr> <tr> <td rowspan="2">tts</td> <td rowspan="2">合成控制参数</td> <td>voice_name</td> <td>是</td> <td><b>合成发音人</b><br>x5_lingxiaoyue_flow</td> </tr> <tr> <td>data_encoding</td> <td>是</td> <td><b>合成音频格式</b><br>raw:原始pcm音频流</td> </tr> <tr> </table> ## 4. 功能模块说明 | 模块 | 说明 | |:-----------|:----------------------------------------------------------------------------------------------------------------------------| | 录音实现 | 实现Ubuntu环境系统录音处理,提供 1ch 16K 16bit PCM音频录音参考(开发者可基于该实现逻辑参考实现自己设备端录音实现), linux 录音可参考 `src/audio_player` | | socket通信 | 定义在 `aiui_socket_api.c` 中的接口实现websocket通信(开发者可基于自己设备平台做相应修改,大部分平台都不需要适配可直接使用) | | 播放实现 | 实现Ubuntu环境系统播放器处理,支持播放 1ch 16K 16bit合成pcm音频流( 开发者可基于该实现逻辑参考适配自己设备端播放器控制), linux 播音可参考 `src/audio_recorder` | | OS相关接口 | 定义在 `aiui_wrappers_os.h` 中, 包括内存分配与释放/信号量/锁和线程等接口, 需要开发者针对特定的平台实现。`aiui_os_linux.c` 即为针对linux实现的参考示例代码 | | 加密交互 | 若需要对流量进行加密, 则需要提供依赖mbedtls实现SSL加密通信方式(程序默认关闭不启用), 在设备端环境支持的情况下开发者如需使用SSL, 可以在 aiui_socket_api.c 中的将 `AIUI_SUPPORT_SSL` 宏打开。 | ## 5. 快速集成体验 - 在Ubuntu linux 快速体验 - 下载SDK开发包 - 安装必需软件: ```shell sudo apt install cmake libjack-jackd2-dev libasound2-dev pkg-config libpulse-dev ``` - 编译、运行: ```shell cd aiui_embedded_sdk mkdir build cd build cmake .. make cd ../tool/deploy/bin/ ./aiui_demo ``` - 语音直接对话交互体验 > `aiui_demo` 会在启动后读取设备默认的声卡, 使用1c16k16b参数读取麦克风音频送入云端, 并将收到的TTS音频通过声卡播放出来。 - 非linux平台, 拷贝 `src/aiui` 源码到设备, 适配 `aiui_wrapper_os.h` 中的内存分配释放/信号量/线程接口,主要需要注意: - 录音 适配 - websocket 通信接口适配(若平台没有websocket实现, 且平台支持标准 BSD socket 也可使用SDK自带的实现) - 播放器 适配: 播放TTS音频流 ## 6. 注意事项 - 设备与云端的系统时间误差不应超过`+-3`分钟, 否则设备在发起连接时会失败, 云端会校验当前时间与设备之间的差值, 超过指定的误差会被拒绝连接. > - 具体的连接错误信息可以在日志打印中查看. > - 常见的时间误差较大在连接时, 云端会返回 `403 Forbidden`. > - 若是appid信息授权错误, 云端会返回 `401 Unauthorized`. > - 所以最佳实践是设备在联网成功后先对设备进行校时(比如使用NTP校时), 校时成功后再调用AIUI. > 另外通过校时也可以初步判断网络的连通性, 如果校时都不成功, 那基本可以断定网络是不通的, 也没必要调用AIUI了. - 极速交互只支持音频上传, 下发TTS音频播报. **不支持**文本交互和文本合成. - 调用 `aiui_start` 到收到 `AIUI_EVENT_CONNECTED_TO_SERVER` 事件会有一定延迟, 所以在调用 `aiui_start` 后, 开始采集录音并保存到缓存队列中, 收到 `AIUI_EVENT_CONNECTED_TO_SERVER`, 才开始从缓存队列中获取数据, 调用 `aiui_send_audio` 向云端发送数据, 收到云端错误码(通常是命中审核,敏感词类, 服务异常)应主动断连(`aiui_stop`), 停止发送数据。 若需要继续交互, 请在 `aiui_stop` 之后再次调用 `aiui_start`. - 场景参数scene设置。一般地, 对于平台上创建的场景A, scene=A表示使用正式环境, scene=A_box则会使用测试环境。 - 所以如果您的产品在测试时scene使用`sos_app_box`, 产品正式上线时需要改成`sos_app`. - 送入云端的音频应该是做过回声消除的音频, 否则设备会陷入自播自答的情况. 若设备没有接入回消算法, 可联系我司提供回消算法技术支持 <aiui_support@iflytek.com> ## 7. 名词解释 | sub 名称 | 说明 | |:-------------|:---------------------------------------------------------------------------------------------| | event | 云端下发的事件, 通常是人声Vad事件. Bos: 是开始说话; Eos: 是结束说话 | | iat | 识别结果. | | cbm_tidy | 语义规整结果:请求包含多个问题时, 大模型会进行关键信息提取做意图拆分 | | cbm_semantic | 结构化语义结果:提供技能匹配结构化结果。当语义规整中吧请求结果拆分成多个意图时,可通过 `payload.cbm_meta.text` 中 `intent` 取值当前结果对应哪个意图。 | | nlp | 大模型语义结果:流式下发 | | tts | 合成结果:流式下发合成音频流 |
admin
2025年1月14日 18:00
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码