降低 AI 语音助手的延迟:2026 年实用指南
语音代理超过 1.5 秒就显得迟钝。本文拆解 STT、LLM、TTS 各阶段的耗时去向,以及能把总延迟压到 500 毫秒以内的流式技术栈。
你的语音代理花两秒才回应,对话就崩了。用户开始等待、走神,然后打断助手或者干脆改成打字。会话轮转研究显示,人与人之间的自然停顿大约是 200 毫秒,超过 500 毫秒就已经显得不自然,一旦超过 1.5 秒,就像是每次都得为延迟道歉。
好消息是,在 2026 年,一个调校得当的语音代理端到端预算完全可以压到一秒以内,任何超出这个阈值的毫秒都能修。坏消息是,大多数自托管的语音管线会在批量合成、阻塞式 STT,以及一个没人愿意谈的重新编码步骤上白白浪费掉 800 到 1500 毫秒。
本文梳理了时间到底花在哪、真正有效的优化手段是什么,以及在 2026 年一个低于 500 毫秒的技术栈长什么样。如果你正在从零搭建语音代理,先看语音配置指南,然后再回来做延迟这一遍优化。
时间到底花在了哪里
一次语音对话由四个连续步骤组成,每个步骤都有各自的预算。任何一步失守,整轮就慢了。
| 阶段 | 2026 年调校良好的目标 | 常见自托管结果 |
|---|---|---|
| 语音活动检测 + 音频采集 | 约 50 毫秒 | 100-200 毫秒 |
| STT(语音识别) | 100-200 毫秒 流式 | 500-1500 毫秒 批量 |
| LLM 首个 token 时间 | 150-400 毫秒 | 700-2000 毫秒 |
| TTS 首个音频分块 | 40-150 毫秒 流式 | 500-1200 毫秒 批量 |
| 传输(WebRTC / Telegram 上传) | 20-80 毫秒 | 200-600 毫秒 |
真正的两个跃迁点是:流式化与供应商选择。一条管线如果先把 STT 全部跑完再启动 LLM,等 LLM 全部输出完再启动 TTS,最后再把音频重新编码一次才上传,很容易就落到每轮 3-4 秒。同一条管线换成阶段之间的流式衔接、一个低延迟的 TTS,加上通道本身就接受的音频编码,就能接近 500-800 毫秒。
流式化是最大、最直接的收益
批量合成是自托管语音代理感觉迟钝最常见的原因。在批量管线里,LLM 会把整段回复写完,再把整段文本交给 TTS,TTS 完成整段音频渲染之后才播放。回复 30 个 token 的话,用户就要等 30 个 token 才能听到第一个音节。
流式化把这个流程反了过来。LLM 一边生成一边输出 token,TTS 一拿到第一个短语就开始合成,第一段音频进入通道的时候,回复的尾巴还在写。2026 年的独立测评显示,仅这一个切换就能把感知延迟降低 300-600 毫秒;再把 STT 也流式接入 LLM,P95 每轮延迟还能再降 400-800 毫秒。
两条实用规则:
- 让数据流进也流出 LLM。 不要在 LLM 调用之前缓冲整段转录,也不要在 TTS 调用之前缓冲整段 LLM 输出。任何值得使用的 SDK 都支持 token 级流式输出。
- 选择首个音频分块小于 150 毫秒的 TTS。 ElevenLabs Multilingual v2 的批量模式声音很美,但 500-800 毫秒的首音时间会让实时对话彻底失去节奏。
各家 TTS 供应商的延迟,真实数据
供应商发布的基准往往在撒谎,因为它们拿自家最快模式去对比别家的常规模式。Coval、Gradium 和 Future AGI 在 2026 年公布的独立数据比较可靠,总结起来很短:
- Cartesia Sonic Turbo - 首音时间约 40 毫秒,目前生产环境可用的最快 TTS。Cartesia Sonic-3 约 90 毫秒,韵律更饱满一些。
- ElevenLabs Flash v2.5 - 实时通道约 75 毫秒,代价是克隆保真度低于 Multilingual v2 或 v3。
- Deepgram Aura-2 - Coval 基准测得约 313 毫秒 P50。表现具竞争力,但不在纯延迟第一梯队。
- OpenAI tts-1 - 首个分块约 200 毫秒,落后于专注实时的供应商,但如果你本就在 OpenAI 生态里,也够用。
- Piper(自托管) - 表现由 CPU 决定。在小型 VPS 上即便没有网络跳数,也常常输给托管的实时供应商。
在市场头部,纯粹的延迟已经不再是差异化点。Cartesia、ElevenLabs Flash、Rime 和 Deepgram 都能做到首个分块低于 150 毫秒,真正拉开差距的是韵律、克隆能力和成本。想要更全面地对比付费 TTS 的选择,可以看TTS 供应商对比指南。
LLM 到首个 token 的时间
实时语音循环里,LLM 的预算是 150-400 毫秒到第一个 token。三种技术能把它从"有时候够用"变成"始终够用":
- Prompt caching。 对任何反复发送同一段 system prompt 的管线(几乎所有),启用 prompt caching 通常能把首个 token 时间降低 200-400 毫秒,改动就是一个开关。
- 小而快的模型。 GPT-4o-mini、Claude Haiku 4.5,以及 Groq 上托管的 Llama 模型通常都能在 100-180 毫秒交出首个 token。只有当那额外的 500 毫秒推理深度真的值得时,才切换到更大的模型,而不是把大模型当默认。
- 自建推理时的投机解码。 如果你自己托管模型,投机解码可以在保持输出质量不变的前提下把 TTFT 再压 30-50%。相比换个模型工作量更大,但天花板更高。
被忽视的音频编码陷阱
几乎每一篇讲语音延迟的文章都跳过了重新编码这一步,这正是自托管 Telegram 机器人体感总比数字更慢的原因。Telegram 原生接受 Opus 语音消息。如果你的 TTS 返回的是 MP3 或 WAV,你的管线里就必须有一步把它重新编码为 Opus,之后才能上传成功。这一步在小型 VPS 上就能吃掉 200-500 毫秒,纯粹是浪费。
修法在供应商侧:直接向 TTS 请求 Opus 输出。ElevenLabs 支持,Cartesia 支持,大部分现代供应商也支持。自托管 Whisper 上同样的陷阱反过来出现:来自用户的语音本就是 Opus,如果你走了较慢的编解码路径去解码它,同样会被慢住。
如果你的语音代理是完全丢音而不是只是慢,那是另一个问题 - 语音故障排查清单覆盖了常见的失效模式。
一个 2026 年低于 500 毫秒的技术栈
把上面的数字拼起来,一条快速通道大致是这样:
- STT:Deepgram Nova-3 流式 - 60-100 毫秒
- LLM:GPT-4o-mini 或 Claude Haiku 4.5,开启 prompt caching - 首 token 100-180 毫秒
- TTS:Cartesia Sonic Turbo 或 ElevenLabs Flash v2.5,Opus 原生输出 - 首个分块 40-80 毫秒
- 传输:WebRTC 或直接 Telegram 上传 - 20-40 毫秒
再加上 50 毫秒的 VAD 与音频采集,各阶段之间保持流式衔接,端到端的感知延迟就能压到 400 毫秒以内,落在人类自然会话轮转窗口之内。
大多数人实际跑的那套栈 - 托管 Whisper 走批量、GPT-4o、ElevenLabs Multilingual v2 走批量、再重新编码为 Opus、然后上传 - 会落在 2.5-3 秒上下。四个阶段里有两个错了,音频还多绕一趟没必要的路。
托管语音代理帮你省下的是什么
上述所有内容,只要你喜欢调参,都是可以自己调的。这也是自托管语音栈里每个季度都会随着供应商发新模型而变动的部分。如果你不愿意在配置文件里追着 Cartesia Sonic 3 和 Sonic 4 跑,那么诚实的建议就是选一个由别人替你保持延迟栈最新的托管代理。
Hermify 在 Telegram 上运行托管的 Hermes Agent,默认启用流式 STT、prompt caching、一条低延迟 TTS 链路,以及原生 Opus 输出,全部已经接好。Telegram 语音消息上实际测得的感知延迟通常落在端到端 500 到 800 毫秒之间。你连接自己的 OpenRouter 密钥,选一个套餐,就可以开始说话,不用 docker-compose,不用 ffmpeg,也不用调编解码器。
开始使用 Hermify,大约一分钟就能让你的语音代理上线。
Sources
- Designing Voice Assistants: STT, LLM, TTS, Tools, and Latency Budget - smallest.ai
- How to Optimize Voice Agent Latency: 12 Techniques for 2026 - Future AGI
- Time to First Audio: Measuring and Reducing TTS Latency in Voice Agents - Gradium
- TTS Latency Benchmark 2026: Gradium, ElevenLabs, Cartesia, Deepgram - Gradium
- Best TTS Providers 2026: Why Vendor Benchmarks Lie - Coval
- Latency Budgets for Real-Time Voice - The Prompt Bench