语音大模型数据返回处理
支持机型及最低版本
| 机型 | 版本 |
| 豹小秘 | ≥7.0 |
| 豹小秘 mini | ≥9.2 |
| 豹小秘 Plus | ≥9.5 |
| 招财豹 | ≥9.2 |
第一步:收到流式意图
当收到intent为 stream&events或 stream&streaming时候,接下来会收到大模型的流式数据。
建议:当收到这两个意图时候,表示是一个新query的起始,初始化相应的数据,保存此次query的sid、streamType以便在close此次query时使用,接着等待几百ms便会收到此次query的流式数据,在等待的几百ms时间内可自定义等待UI(例如:“AI正在思考中”)来填补过渡响应真空期。
意图接收详情查看“SDK接入”文档,在onSendRequest 方法里回调意图。
第二步:接收流式数据
在SkillCallback 的onSpeechStreamData 回调中接收流式数据
SkillCallback 使用详情见“语音”–“创建语音服务回调”
流式数据结构详情见文章最后
停止接收流式数据
/**
* sid: 此次query的sid
* streamType:此次query的连接方式(如intent为'stream&events',则streamType对应‘events’;如intent为'stream&streaming',则streamType对应‘streaming’)
* closeType:此次query的close原因
*/
CloseStreamData closeStreamData = new CloseStreamData();
closeStreamData.sid = sid;
closeStreamData.stream_method = streamType;
closeStreamData.closeType = closeType;
skillApi.closeStreamDataReceived(new Gson().toJson(closeStreamData));
public class CloseStreamData {
public String sid;
public String stream_method;
public String closeType;
}
流式数据结构
public class ChatStreamInterface {
/** 会话ID */
private String sid;
/** 当前包索引,1为第一包,-1为最后一包 */
private int idx;
/** 领域 */
private String domain;
/** 意图 */
private String intent;
/** 业务线ID */
private String clientId;
/** 行业ID */
private String groupId;
/** 企业ID */
private String enterpriseId;
/** 是否需要播放TTS */
private boolean tts;
/** 类型 */
private String type;
/** 版本号 */
private String version;
/** 内容 */
private String content;
/** 发送人信息 */
private Sender sender;
/** 扩展字段 */
private Extra extra;
/**
* 发送人信息
*/
public static class Sender {
/** 服务logo */
private String logo;
/** 数据来源,例如 chatGPT */
private String source;
}
/**
* 扩展字段
*/
public static class Extra {
/** 全链路ID */
private String traceId;
/** 相关问题列表 */
private List<String> followUpQuestion;
}
}