实现自然、流畅的语音代理(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,禁用重采样。
落地清单:
- 模型:openai/whisper-tiny.en (量化 INT8,<50ms 首次帧)。
- 库:faster-whisper + Silero-VAD。
- 监控: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.”。
清单:
- 模型:microsoft/Phi-3-mini-4k-instruct-q4。
- 服务:vLLM --quantization awq --max-model-len 4096。
- 负载:峰值 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。
清单:
- 模型:rhasspy/piper-voices (en-us)。
- 库:piper-tts --streaming。
- 参数: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):
- 端到端:histogram_quantiles (p95=450ms)。
- 组件:stt_eou_latency, llm_ttft, tts_ttf b。
- 风险:模型漂移(定期 A/B),负载峰值(限流 QPS)。
风险控制:
- 质量 - 延迟权衡:小模型用 RAG 增强,测试 WER/CER<10%。
- 尾延迟:预热 + 队列,p99<1s 否则降级。
通过以上参数,从零搭建可在单 GPU 上跑 demo,扩展至生产。实际调优需迭代负载测试。
资料来源:
(正文字数约 1250)
Footnotes
-
Cerebrium: Deploying a global scale AI voice agent with 500ms latency ↩
-
Sayna.ai: Sub-Second Voice Agent Latency Guide 其他参考:AssemblyAI Voice AI Stack, Simplismart Real-Time Voice AI。 ↩