Qwen3-TTS 速度与成本优化,实现低于 50ms 的延迟
Nari Labs 开发了一种 Qwen3-TTS 1.7B CustomVoice 模型的自定义实现,在单张 NVIDIA H100 SXM 上实现了低于 50 毫秒的 p95 首音频时间 (TTFA),同时在每秒 10 个请求 (RPS) 的负载下保持实时播放。这种优化显著降低了高性能文本转语音 (TTS) 的成本,据估计,在满负荷利用的情况下,每 100 万个字符的成本约为 2 美元。
实时 TTS 性能基准测试
为了评估实时可行性,Nari Labs 根据四个标准定义了一个成功的 TTS 服务器:低可感知的 TTFA、零音频欠载 (underruns)(即客户端音频缓冲耗尽)、随着 RPS 增加而保持高容量,以及清晰的输出。
在对比了包括 vLLM-Omni、SGLang-Omni、VoxServe 和 M* 在内的五种实现的基准测试中,Nari Labs 的实现是唯一一个在 10 RPS 下仍能保持低于 50ms p95 TTFA 的方案。虽然像 VoxServe 这样的其他引擎在 1 RPS 时可以达到低于 50ms,但随着负载增加,其延迟会显著飙升;例如,在 6 RPS 时,大多数引擎的 p95 TTFA 超过了 100ms。
解决常见的延迟瓶颈
为了建立公平的基准,在所有测试的引擎中都应用了两种主要的优化措施:
- 前导静音移除:模型在发出第一个声音之前通常会产生数十毫秒的静音。Nari Labs 实现了动态修剪功能,通过 RMS 窗口检测持续语音并移除前导静音,从而将 TTFA 提高了约 80ms。
- 帧累积调整:系统在解码前平衡收集的编解码器帧 (codec frames) 数量。较小的初始块 (chunks) 可以降低 TTFA,但会增加解码器开销;较大的块可以改善批处理和播放稳定性。最佳配置是使用较小的初始块,并随着后续输出逐渐增大块的大小。
Qwen3-TTS 的架构优化
Qwen3-TTS 使用分层多码本生成过程,涉及三个模块:Talker(预测第一个码本 token)、Code Predictor(生成剩余的 15 个 token)和 Codec(将 token 转换为波形)。
统一调度层
Nari Labs 没有将过程分为两个阶段(生成和解码),而是将 Talker、Code Predictor 和 Codec 视为单个调度器下的三个独立可调度的任务。这允许系统根据紧急程度重新排列工作——例如,优先处理接近播放截止时间的 Codec 任务,而不是 Talker 任务——并能够对等待同一模块的请求进行更细粒度的批处理。
基于紧急程度的调度
调度器区分两种类型的紧急程度:
- 初始延迟:尚未产生第一个音频块的请求被赋予最高优先级,以最小化 TTFA。
- 播放截止时间:一旦播放开始,块的优先级仅在接近防止音频欠载所需的截止时间时才会提高。
为了保持 GPU 效率,调度器会选择一个紧急请求作为“锚点” (anchor),并用兼容的、非紧急的工作任务填充剩余的批处理空间。
Code Predictor 与 Codec 增强
- CUDA Graphs 与 Triton Kernels:由于 Code Predictor 在每帧执行固定数量的步骤 (15),Nari Labs 将整个循环捕获为单个 CUDA graph,并利用了针对短上下文的专门 Triton attention kernel,从而减少了主机驱动的开销。
- 状态缓存增量解码:为了避免为每个新块重新处理完整的帧历史,Codec 使用状态缓存来保留 Transformer 上下文和卷积状态。系统对第一个音频块使用全量解码,以最小化初始化开销,然后切换到增量解码以实现持续播放。
行业视角与权衡
社区讨论强调了在生产环境中部署超低延迟 TTS 的几个关键考量因素:
- “恐怖”谷效应的速度:一些开发者认为,低于 200ms 的响应可能会让人感觉不自然或“恐怖”,因为人类通常有 200ms 的听觉处理延迟。为了让对话感觉更像人类,可能需要引入人工延迟或保护机制。
- 质量与延迟的权衡:存在一个明显的“质量硬壁垒” (quality hard wall),即进一步降低延迟可能会损害语音的节奏、表达力和整体自然度。
- 设备端需求:虽然 H100 的性能令人惊色的,但许多开发者的最终目标是将这些能力移至移动设备,以消除云端延迟并提高隐私性。
- 端到端延迟:对于智能体 (agentic) 场景,TTS 延迟只是链条中的一部分。总的感知延迟包括 STT (语音转文本) 和 LLM 推理。一些人建议,只有将语音 token 直接嵌入到 LLM 中的模型(如 OpenAI 的 GPT-4o/Realtime)才能真正解决端到端延迟问题。
Sources
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- 项目