跳到主要内容

4 篇博文 含有标签「voice-ai」

查看所有标签

语音代理 SLO 定义为首个音频时间,而你的服务商则以首个 Token 时间衡量

· 阅读需 11 分钟
Tian Pan
Software Engineer

产品规格说明书规定用户在说完话后的 600 毫秒内听到回复。LLM 供应商的仪表盘显示首个 Token 时间(TTFT)为 280 毫秒。你查看的每一张图表都在 SLO 范围内。但用户仍然抱怨智能体有延迟,当你亲自拨打电话时,确实能感觉到明显的停顿——每次都在 600 毫秒以上。仪表盘没有撒谎。它测量的是一个不包含 TTS 流水线、音频传输或接收端抖动缓冲(jitter buffer)的数值。流式传输的最后一个 Token 与第一帧音频之间存在的 350 毫秒差距是真实存在的,只是它没有出现在 LLM 团队的图表上。

Bug 不在模型中。Bug 出在 SLO 上。它被定义在了错误的堆栈层级。供应商的出站(egress)并不是用户的耳朵,任何忽视这一点的延迟契约都会在生产环境中显得数据健康,而产品体验却是一团糟。

为什么你的语音智能体显得很没礼貌:话轮转换是你从未记录过的延迟预算

· 阅读需 12 分钟
Tian Pan
Software Engineer

当你第一次发布语音智能体(voice agent)时,你会听到两个相同的抱怨:“它打断了我”和“它感觉很不礼貌”。这两者其实是同一个 Bug。智能体并不是真的没礼貌——它只是在运行一个你从未明确记录过的延迟预算(latency budget)。聊天机器人那种“在输入完成后响应”的直觉,在语音场景下会产生一种挫败感:就像在和一个人聊天,他总是打断你的话,又在不该沉默的时候突然安静。

人类在对话中的轮换(turn-taking)通常发生在约 100 到 300 毫秒的窗口内,这在所有已测量的语言中都是一致的。中位数 200ms 的说话者间隙不是一个目标,而是一个人类校准的基准。任何更慢的反应都会被解读为困惑,任何更快的反应都会被解读为打断。如果语音智能体没有明确模拟这种节奏,每一轮对话都会掉进这两个坑里的其中一个。

解决方案不是用更快的模型,而是承认语音 AI 是一个软实时系统(soft real-time system),其预算由人类对话的物理特性决定,并在发布前记录下这个预算。

语音智能体并非带麦克风的聊天机器人:半双工税

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个在所有转写层级基准测试(benchmark)中得分完美的语音智能体,在实际通话中可能仍然让人感觉有些微妙的不对劲。文字没错,推理也没错。仪表盘上的端到端延迟显示为 520ms,这正是预期的目标。然而,电话另一端的人却不断卡顿、抢话、重说,甚至提前挂断。团队发布了更好的模型,数据提升了,但体感依然没有改善。

究其原因,与模型说了什么几乎无关,而与它何时说话几乎全盘相关。语音并非仅仅是附带了音频的文本。人类的对话运行在一个严密的半双工(half-duplex)协议之上,包含插话(barge-in)、反馈信号(backchannel)和重叠语音,其时间预算是以毫秒计算的。大多数语音智能体的问题,在解决了第一周的幻觉修复后,本质上都是轮次协商(turn-negotiation)问题。而轮次协商是架构层面的问题——你无法通过提示词工程(prompting)来解决它。

语音 AI 生产落地:构建 300ms 延迟预算

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数构建语音 AI 的团队都会以同样的方式发现延迟问题:在生产环境中,面对真实用户。演示 (Demo) 感觉不错。原型 (Prototype) 听起来也令人印象深刻。但当有人在实际通话中使用它时,会觉得它很机械——不是因为声音不好听,而是因为每次回复前的微小停顿让整个交互感觉像是和卫星信号不好的人在说话。

这种停顿几乎总是在 600 毫秒到 1.5 秒之间。而目标是低于 300 毫秒。这两个数字之间的差距解释了语音 AI 系统实际构建方式的一切。