我们的语音代理p99为280ms,竞争对手为450ms,但用户却觉得我们的更慢。我们测量了原因。
摘要
一个语音代理团队发现,尽管端到端延迟更低(280ms对比竞争对手的450ms),但由于糟糕的打断响应时间(380ms对比60ms),用户感知更慢。他们确定了三项修复措施——内存锁定、VAD阈值调整和更小的TTS块——将100ms阈值下的打断率从41%提升至89%,让用户感觉更快。
上个季度将语音代理部署到生产环境。仪表盘显示我们比所有列出的竞争对手都快。p99端到端延迟为280ms。最大竞争对手为450ms。我们确实更快。用户研究小组却反馈我们的代理感觉更慢。在5点李克特量表上相差8个百分点,具有统计显著性。经过两周调查,我们发现用户小组衡量的是打断时间,而非延迟。打断时间是指用户开始插话到代理停止说话之间的时间。端到端时钟衡量代理的响应时间。打断时钟衡量的是用户想要控制对话时的实际等待时间。两者数值不同。我们的端到端延迟是280ms,打断时间为380ms,竞争对手只有60ms。我们的测量方法:1. 从之前的支持通话中提取500次打断尝试的合成语料库,将每个样本输入代理副本,测量从第一个音节到代理停止的时间。2. 生产流水线中的OTel跨度:一个跨度标记VAD触发,另一个标记TTS中断,两者相减。两种方法:合成语料用于A/B测试,生产数据用于实际分布。我们的打断响应率在100ms阈值为41%,250ms时达到89%,但250ms对于响应感来说太慢了。修复措施有三项:1. 将音频缓冲区页面锁定在内存中。使用libc::mlock锁定缓冲区。当模型权重活跃时,音频页面偶尔会换页到交换空间,导致检测延迟150ms。锁定后,VAD在25ms内捕捉到语音。2. VAD阈值调整。默认值为0.6,测试范围0.4到0.65,0.5最佳。检测提前4%,误报仅增加1.2%。3. TTS中断路径。我们的TTS以200ms块流式传输。当VAD触发时,音频队列仍会播放400ms的缓冲块。我们将块大小降至30ms,并在VAD触发时立即清空队列。网络开销增加,但值得。四周的工作后,100ms阈值下的打断响应率从41%提升至89%。p99延迟实际上略有上升(280ms到305ms),因为TTS块变小了。仪表盘数据变差了,但用户表示我们的代理现在比竞争对手(450ms)感觉更快。关键的心态转变是:语音代理延迟是仪表盘数字,而打断响应率是用户数字。一旦同时测量两者,仪表盘就成为调试工具,用户指标成为产品KPI。好奇其他团队是如何分别测量用户实际体验与仪表盘报告数据的。
相似文章
为服务型企业运行生产级语音代理6个月:延迟计算远比演示所暗示的复杂。
在为服务型企业运行语音AI代理6个月后,作者揭示了现实世界中的延迟是双峰的(中位数约800ms,p95约2.4s),而p95决定了用户的感知。诸如VAD误触发、长提示词下函数调用退化、以及TTS质量等问题比LLM的选择更重要,而多语言支持则增加了显著的成本。
你的语音助手响应慢可能不是因为大语言模型。
一位开发者驳斥了常见的观点,即LLM延迟是语音助手响应慢的主要原因,并解释说,延迟往往源于更早的阶段,如音频捕获、语音活动检测(VAD)和语音转文字(STT)。他建议记录特定的延迟指标,并测试不同的STT/TTS提供商和编排框架来诊断问题。
我给我的语音代理更换了TTS,结果它比任何其他方式都更有效地减少了人们实际感受到的延迟
作者分享了将语音代理中的TTS替换为专为双语(阿拉伯语和英语)对话设计的自定义模型(Banter 1)的经验,这显著降低了感知延迟。
@svpino: 人类在交谈时的平均延迟为200-250毫秒。这款语音模型甚至更快:仅110…
一款开放权重的8B参数语音模型仅需110毫秒延迟,比人类平均对话延迟200-250毫秒更快。它可以在本地运行,并通过GitHub仓库免费获取。
语音代理的最佳STT API?我会先测试延迟再测试准确性
作者认为,对于实时语音代理,STT延迟和实时行为比原始转录准确性更为关键,并提出了不同的评估记分卡。