Hotdry.

Article

从零构建亚500ms端到端延迟语音代理:STT、LLM、TTS管道优化

实现实时语音交互的关键工程实践:分配延迟预算、流式管道设计与各组件参数调优,确保E2E低于500ms。

2026-03-03ai-systems

实现自然、流畅的语音代理(Voice Agent)需要端到端(E2E)延迟控制在 500ms 以内,这相当于人类对话的即时响应阈值,能显著提升用户体验。核心挑战在于 STT(语音转文本)、LLM(大语言模型)推理和 TTS(文本转语音)三管道的串行累加延迟,通过流式处理、组件优化和基础设施协同,可将总延迟压缩至 300-450ms。

延迟预算与整体架构

首先,设定严格的延迟预算:网络传输(WebRTC/WS)60-100ms,STT 120-150ms,LLM 首次令牌时间(TTFT)150-250ms,TTS 首次音频(TTFB)100-150ms。通过重叠执行(如 STT 部分输出即触发 LLM),实际感知延迟可降至亚 500ms。架构采用单集群部署,所有服务置于同一可用区(AZ),使用长连接避免握手开销。Cerebrium 的全球部署实践证明,co-locate 策略可稳定实现 500ms 延迟1

关键参数:

  • 总预算阈值:p95 E2E <450ms,p99 <600ms(监控尾延迟)。
  • 重叠窗口:STT endpointing 后 100ms 内启动 LLM,LLM 首 token 后 50ms 启动 TTS。
  • 工具栈:WebRTC for audio,vLLM/SGLang for LLM,FastAPI/Redis for orchestration。

STT 优化:流式解码与智能端点检测

STT 是管道起点,目标是 150ms 内输出可靠部分转录文本。采用流式 Whisper-tiny 或 Silero VAD+Distil-Whisper 变体,支持 20-30ms hop 长度帧。

优化要点:

  • VAD(语音活动检测):能量阈值 - 30dB,沉默持续 150-250ms 触发端点,避免用户被打断。
  • 端点检测(EOU):结合标点预测和暂停模式,延迟控制在 200ms;参数:min_silence_duration=150ms,max_speech_duration=5s。
  • 部分转录:启用 word-level streaming,每词输出即推送到 LLM 缓冲(阈值:confidence>0.8)。
  • 部署:边缘部署或同机房,采样率 16kHz,禁用重采样。

落地清单:

  1. 模型:openai/whisper-tiny.en (量化 INT8,<50ms 首次帧)。
  2. 库:faster-whisper + Silero-VAD。
  3. 监控:first_partial_time <100ms,EOU_accuracy>95%。

LLM 推理:小模型快速 TTFT

LLM 是延迟瓶颈,选用 4-8B 参数对话模型如 Phi-3-mini 或 Qwen2-7B,量化至 4bit,自托管以 vLLM 实现 150ms TTFT。

观点与证据:小模型在工具调用和短响应场景下,质量不逊巨模,且 TTFT 低 10x。Sayna.ai 指南强调,speculative decoding 可进一步降 20% 延迟2

参数调优:

  • 上下文限制:max_tokens=50(首轮响应),total_context=2k tokens。
  • 解码策略:greedy (temp=0),speculative batch_size=4,target 100+ tokens/s。
  • KV 缓存:FlashAttention-2,预热 replicas=2(避免冷启动)。
  • 提示设计:系统提示强调 “简短首句响应,后续续说”,如 “Respond in 1 short sentence first.”。

清单:

  1. 模型:microsoft/Phi-3-mini-4k-instruct-q4。
  2. 服务:vLLM --quantization awq --max-model-len 4096。
  3. 负载:峰值 QPS 10,GPU A10/H100。

TTS 合成:即时流式音频

TTS 需 60-120ms TTFB,支持增量 token 输入。选用 Piper 或 XTTS-v2,支持 20ms 音频块输出。

优化:

  • 分块策略:LLM 每 20-30 tokens(~3-5 词)一 chunk,避免 prosody 断裂;首 chunk <100ms。
  • 预处理:轻量规范化(标点 + 缩写),非阻塞。
  • 声码器:神经声码器如 HiFi-GAN,缓存 speaker embedding。
  • 采样:22kHz,帧长 20ms。

清单:

  1. 模型:rhasspy/piper-voices (en-us)。
  2. 库:piper-tts --streaming。
  3. 参数:chunk_size=512 samples,silence_threshold=0.1s。

编排与基础设施

使用状态机(如 FSM)管理管道:STT stream → LLM partial → TTS stream。回压机制:LLM 超前缓冲 < 200 tokens,TTS 滞后插微顿。

Infra 参数:

  • 部署:Kubernetes + GPU node pool,autoscaling min=1。
  • 网络:WebRTC jitter_buffer=100ms,region = 用户最近(如 us-east-1)。
  • 容错:超时重试(STT 300ms,LLM 500ms),回滚到模板响应。

监控清单(Prometheus/Grafana):

  1. 端到端:histogram_quantiles (p95=450ms)。
  2. 组件:stt_eou_latency, llm_ttft, tts_ttf b。
  3. 风险:模型漂移(定期 A/B),负载峰值(限流 QPS)。

风险控制:

  • 质量 - 延迟权衡:小模型用 RAG 增强,测试 WER/CER<10%。
  • 尾延迟:预热 + 队列,p99<1s 否则降级。

通过以上参数,从零搭建可在单 GPU 上跑 demo,扩展至生产。实际调优需迭代负载测试。

资料来源

(正文字数约 1250)

Footnotes

  1. Cerebrium: Deploying a global scale AI voice agent with 500ms latency

  2. Sayna.ai: Sub-Second Voice Agent Latency Guide 其他参考:AssemblyAI Voice AI Stack, Simplismart Real-Time Voice AI。

ai-systems