跳转到内容

事件与字幕

增量与最终事件都带稳定的 turnId。UI 必须按 turnId 原位 upsert,不要把每个 delta 追加成新气泡。

session.on('asr_partial', ({ turnId, text }) => {
upsert({ id: turnId, role: 'user', text, live: true });
});
session.on('asr_final', ({ turnId, text }) => {
upsert({ id: turnId, role: 'user', text, live: false });
});
session.on('assistant_text_delta', ({ turnId, text }) => {
upsert({ id: turnId, role: 'assistant', text, live: true });
});
session.on('assistant_text', ({ turnId, text }) => {
upsert({ id: turnId, role: 'assistant', text, live: false });
});
事件 时机 UI
statechange 状态机迁移 控制按钮 / 指示灯
asr_partial ASR 临时结果 更新用户行 + live 光标
asr_final 用户轮次确认 覆盖临时文本
user_audio_end VAD 结束用户说话 可作延迟计时起点
assistant_text_delta 模型增量文本 原位更新助手行(优先用累计 text
assistant_text 回复确认 收口最终文本
assistant_audio_start / _end 播放起止 首音频延迟、播放态
turn 轮次落库 历史列表
usage 用量快照 指标
finished 会话结束 收尾 UI
error 归一化错误 Toast / 重试

assistant_text_delta.delta 是本次新增片段;渲染用累计字段 textasr_final / assistant_text 可能修正标点。

完整载荷见 API 参考 中的 VoiceSessionEventMap