01 / 开口太早
抢答
我还没说完,你就开始答。
只是想一想,就被当成说完了。
REAL-TIME VOICE AGENT
从听见声音,到理解场景,再到合时宜地回应。
流式语音链路 / 话轮判断 / Jev 自定义任务

实时语音 AGENT · 体验的起点 / 01
两个常见场景,让对话的节奏乱了。
01 / 开口太早
我还没说完,你就开始答。
只是想一想,就被当成说完了。
02 / 插话无效
我已经插话,你还在继续说。
需求已经改了,回复却还在往下播。
对话的体验,取决于能否跟上人的节奏。

实时语音 AGENT · 体验的起点 / 02
同一段做饭指导:补充条件能听见,要求停下能响应,轻声附和能分清。
01 / 边说边听
说话时仍能听见,后续内容随之调整。
02 / 及时让话
用户一叫停,就把话语权交回来。
03 / 识别附和
分清附和与打断,保持讲解连贯。

实时语音 AGENT · 体验的起点 / 03
从优秀语音模型,走向自然的全双工体验。
辨清说了什么,保留关键信息。
跟住补充、改口与真实意图。
该回应时回应,该倾听时等待。
停下当前回复,转向新的需求。
双方可同时收听与表达
体验还需要:音频流处理 · 说话时机判断 · 播放控制 · 会话状态管理

CHAPTER 02 · GPT-LIVE / 01
以普通文本接口为例:提交请求 → 生成回答 → 请求结束。
开启 STREAMING 后

CHAPTER 02 · GPT-LIVE / 02
音频逐块进入同一个 Session;模型生成语音时,新的用户音频仍可进入。
后续交流沿用当前连接,
无需逐句发起完整请求。
用户音频分块进入;
模型结合当前上下文处理。
模型按对话时机发声;
输入与输出可重叠,即全双工。
图中上下分组表示两个方向,
不表示“全部输入结束才开始输出”。

CHAPTER 02 · GPT-LIVE / 03
Stateful Inference:从每次请求的处理流程,走向会话内持续维护的推理状态。
KV Cache:已处理内容的注意力键和值,供后续推理复用。普通请求也可以复用缓存。
“持续”指会话与状态承接,并非一直在后台生成 Token。
CHAPTER 02 · GPT-LIVE / 04
一条实时媒体链路,一条异步委派链路。


CHAPTER 02 · GPT-LIVE / 05
上下文空间有限:压缩较早的对话,为持续交流腾出空间。

CHAPTER 02 · GPT-LIVE / 06
把压缩与状态重建放到后台:先准备替代实例,再切换正在进行的会话。

交接期间维持媒体流;同一机制也可用于实例迁移。
CHAPTER 03 · 落地取舍 / 01
从一段对话到每天万人使用,先算清持续运行的账单。
美元 / 会话分钟
按秒计费,不向整分钟取整。
后端模型与工具费用另计。
一次自然语音交流
$0.50每次会话 · 仅语音层每人每天 20 分钟
$1.00每人每天 · 仅语音层按相同日使用量扩展
$10,000每天 · 仅语音层测算假设:每人每天 2 次 × 每次 10 分钟;示例用量,不代表实际账单。价格核验:2026-11-03。
CHAPTER 03 · 落地取舍 / 02
会议助手要持续倾听,也要区分:人在互相讨论,还是把任务交给助手?
CHAPTER 04 · 我们的选择 / 01
听清内容 → 判断是否回应 → 理解与执行 → 说出结果
能力分工示意;具体触发顺序、并行关系与打断处理,在后续章节展开。
把声音转为文字,
为后续理解提供输入。
结合语音活动、文本与
上下文,辅助判断接话。
组织回答,按需调用
工具与业务能力。
把回复转成语音,
送到用户耳边。
CHAPTER 04 · 我们的选择 / 02
同一个“是否需要回应”节点,让会议讨论和助手任务走向不同分支。
点击上方场景切换高亮 · 业务行为示意,判定输入、配置与实际效果在第六节展开。
CHAPTER 05 · ASR / 01
音频持续输入,文字逐步返回;后续模块不必等整段录音结束才拿到内容。
深色:已确认片段浅色虚线:中间结果,可修正
文字随新音频陆续返回,
让后续处理尽早获得内容。
新增声音提供更多线索,
当前文字不一定是最终版本。
某段文字稳定下来,
后面仍可能继续输入音频。
CHAPTER 05 · ASR / 02
文字已经出现,用户可能只是停下来想一想。
有了文字,还不能只凭它决定接话。
地点、时间、业务词有没有听对?
说话期间,多久能拿到可用文字?
末字说完后,还要等多久确认结果?
CHAPTER 06 · VAD & JEV / 01
从连续采样到带状态的神经网络推理:VAD 输出帧级声学事实。
为何需要状态? 连续帧携带上下文;每条音频流独立维护历史状态和上下文,样本坐标必须连续。
检测 ≠ 判停。 概率达到阈值,只给出该帧的语音标签;思考停顿和句末静音都可能落到低概率区。
CHAPTER 06 · VAD & JEV / 02
判停是时序状态机:连续静音累积,恢复语音清零,超过阈值才结束。
缩短静音阈值会提前触发,也可能把句内停顿当成话轮边界。
CHAPTER 06 · VAD & JEV / 03
上下文 + 候选条件 → Jev 选择 → 运行时校验。
current_asr“帮我查一下明天杭州的天气。”
pending_asr尚未处理的累积材料
recent_history已完成的近期对话
system_semantic_default · choice
respond完整问候、提问或可执行请求
wait表达未完成,继续等待输入
option_code
selected_probability
≥ 0.75 阈值
校验通过 → 进入 Agent
若输入是“帮我查一下……” → wait。概率与阈值仅作示意,阈值由任务 / 运行时配置。
CHAPTER 06 · VAD & JEV / 04
用户说要求,Agent 将自然语言整理成任务参数。
“接下来开会,平时不要插话;
我说‘帮我记一下’时,把内容记下来并简单确认;
散会时,总结分工和时间节点,然后退出。”
普通讨论不插话
持续积累会议材料
条件:用户明确要求记录
命中后记录并简短确认
交付分工与时间节点instructions
本场结束后退出lifetime: one_shot
“帮我记一下” → 新增选项 record_action;Agent 调用工具,将选项代码与触发条件写入 criteria。
CHAPTER 06 · VAD & JEV / 05
左:智能体调用工具,创建任务。右:任务生效后,组装进后续 Jev 请求的判断参数。
upsert_jev_task(
task_id="meeting_record",
title="会议重点记录",
criteria={"record_action": "明确要求记录并简短确认"},
instructions="普通讨论静默;要求记录时执行并确认;"
"散会时总结分工和时间节点并退出",
lifetime="one_shot",
status="running"
){
"questions": {
"meeting_record": {
"type": "choice",
"criteria": {
"record_action": "用户明确要求记录并简短确认",
"wait": "普通讨论,继续静默倾听",
"stop": "用户明确散会,结束会议任务"
}
}
}
}生效流程: manage 开放工具 → 校验并暂存 → 当轮最终回复提交 → 注册表生效 → 组装右侧请求。
task_id,传入 criteria={} 并更新 instructions。
CHAPTER 06 · VAD & JEV / 06
同一个会议任务持续运行;一次记录完成,并不意味着任务结束。
“小李周三完成前端,
小王周四给接口。”
wait累积到 pending_asr
不启动 Agent,不播放回复
● running · 继续倾听
“帮我记一下,明天下午
两点和财务对账。”
option_code: record_action命中新建选项 → Agent 调记忆工具
“好的,已记下。”
● running · 动作完成后继续监听
“散会,总结一下
分工和时间节点。”
stopAgent 用累积素材总结
删除本次 one_shot 任务
○ 已退出 · 无其他抑制时恢复闲聊
场景行为示意。业务执行须通过有效结果校验与输入确认;静默时 Jev 仍在判断。
CHAPTER 06 · VAD & JEV / 07
流式 ASR 与语义预判重叠执行,通过快照一致性保护最终提交。
用户说话期间,ASR 已返回前半句;此时还不能提交完整请求。
300 ms 是预判触发值。 PCM 能量窗口累计静默;修订请求至少间隔 300 ms,同一快照去重。
复用取决于一致性。 续说会清除旧窗口结果;终判核对文本与上下文快照,不能把过时结果直接提交。
CHAPTER 07 · AGENT & TTS / 01
拿到已确认的输入后,先明确任务,再执行查询,最后组织用户听得懂的结果。
当前请求
+ 最近的对话
+ 可用工具
城市:杭州
日期:明天
意图:查询天气
传入城市与日期
等待查询结果
检查成功或失败
天气:小雨
气温:18–23°C
演示数据
“明天杭州有小雨,
18 到 23 度,
出门记得带伞。”
CHAPTER 07 · AGENT & TTS / 02
文字不必全部写完才开始说;按短句形成文本块,再衔接对应的音频。
首段已开始播放,后续文本与音频仍在生成。
CHAPTER 07 · AGENT & TTS / 03
从“杭州”改成“上海”:播放要停,旧任务与新请求也要分清。
停止旧音频播放
及时把话权交回用户
移除旧回复待播音频
不让旧内容继续出声
取消旧回复与合成
迟到旧结果不进入新轮
区分已生成与已播放
记录改口与打断位置
旧回复正在播放;用户插话,提出新的查询条件。
CHAPTER 08 · TURN MANAGEMENT / 01
Smart Turn 判断表达是否完成;动态阈值决定首次检测时机。
分析语调、节奏等音频线索,无需先取得 ASR 文本。
以上是期望结果,需用实际录音验证。
以默认 1000ms 为起点的实验示例。
数据不足用默认值,调整时保持平滑。
等待时长 ≠ 模型概率判定阈值。
CHAPTER 08 · TURN MANAGEMENT / 02
VAD 检测静默 → 动态阈值触发检测 → Smart Turn 确认说完 → JEV 判断是否回答。
CHAPTER 08 · TURN MANAGEMENT / 03
模型给判断,策略定时机;状态机负责收尾、重试与并发控制。
CHAPTER 08 · TURN MANAGEMENT / 04
这是待验证的进阶架构方案;先守住模块职责,再衡量等待与误判。
| VAD | 检测 speech / silence |
| Adaptive Endpointing | 动态等待 + Smart Turn 调用与重试 |
| Smart Turn | 判断 Complete / Incomplete |
| ASR | 转写与识别事件,受控收尾 |
| JEV | 结合完整文本、上下文与场景决定回应 |
检查 Incomplete 不触发 JEV;旧 Complete 不关闭新输入;ASR 不提前自动结束。
CHAPTER 09 · 我们如何逼近理想体验 / 01
从用户最后发声,到真正听见回复,把每一段等待放回同一条时间线。
CHAPTER 09 · 我们如何逼近理想体验 / 02
提前识别 · 流式输出 · 合理判停,让第五至第七节的机制协作起来。
把识别放到用户说话期间。
提交前确认完整输入与判定一致。
后续文本、音频与播放重叠。
分段仍需保护语义与语音连贯。
结合场景调整规则或阈值。
等得过短,会增加误抢话风险。
CHAPTER 09 · 我们如何逼近理想体验 / 03
用同一组场景验收四个维度,让每一次接话、执行和播放都经得起比较。
| 体验问题 | 用什么衡量 |
|---|---|
| 快不快? | 首段有效回复等待 · P50 / P90同时观察典型请求与较慢请求 |
| 自不自然? | 误抢话 · 打断响应 · 会议误回应该等时等、该停时停、该安静时安静 |
| 事情办成没有? | 识别效果 · 任务成功率听对请求,也要拿到正确的执行结果 |
| 成本能否承担? | 单次会话成本统一时长、工具与服务计价范围 |
CHAPTER 10 · 总结
从 GPT-Live 的实时交互方向,到适合业务的级联语音 Agent。
助手正在介绍第二天的安排……
等等,我想当天往返。
停止旧回复,继续听用户说。
把“当天往返”带入上下文。
按新要求继续完成任务。
好,那按当天往返重新安排。
听懂表达,跟上改口。
该接话时接话,该让话时让话。
选择级联,分别调整识别与判定。
让任务执行、语音生成与播放衔接。
在真实场景中验证效果与稳定性。
用可承担的成本,持续改善体验。
让对话自然,让回应合时宜,让任务有结果。