NVIDIA员工Rick Grandy:语音代理缓存策略将响应延迟压至0.72秒
NVIDIA员工Rick Grandy详细记录了MonsterHouse万圣节互动投影的构建过程,核心贡献在于展示如何通过流式部分文本释放和预缓存常见回复,将端到端语音延迟从1.70秒降至0.72秒,并以双GPU分工保持动画帧率稳定。
NVIDIA员工Rick Grandy在Hugging Face博客上记录了MonsterHouse的构建过程:一个用车库门扮演的暴躁老海盗船,通过实时语音代理与万圣节访客对话。他的核心工程问题不是模型选择,而是延迟——一个鬼屋如果抱怨得太慢就失去了权威感。
管线由四个模型串联:Nemotron Speech ASR(nemotron-speech-streaming-en-0.6b,量化为q8_0 GGUF格式)负责听,Nemotron 3.5 Bolt E4B 4GB负责想,Magpie TTS Zeroshot负责说,Audio2Face-3D负责动嘴。Bolt E4B是一个4位量化的开源小语言模型,作者称其足迹小于Qwen3 30B-A3B和Qwen 3.6 35B-A3B,在测试十余个模型后选定它作为对话核心。性格由LoRA适配器提供,训练数据超过5000条多轮合成对话,由一个本地智能体配合大模型生成和评判。
延迟管理是本文最有迁移价值的部分。作者报告了两组中位数数据:完整管线(Bolt Q4加TTS合成)的语音结束到音频输出中位延迟为1.70秒,使用预缓存回复时为0.72秒。两个机制共同压缩了感知等待:第一,管线在完整回答生成之前释放可朗读的文本片段,让角色开始说话而句子其余部分仍在生成;第二,常见问候语和糖果笑话预先录制为音频,跳过语言模型推理和语音合成两步。作者还注明语音端点检测当前等待300毫秒静音,这本身构成延迟下限的一部分。
GPU分工解决另一个问题:动画帧率不能因代理管线的计算负载而抖动。作者将语言与语音模型管线放在RTX PRO 6000 Blackwell Max-Q上,Unreal Engine图形与Audio2Face-3D放在RTX PRO 4000 Blackwell上。他的判断是瓶颈不在显存而在算力,分离两块GPU的目的就是让动画保持恒定帧率,不受代理管线处理波动的影响。
文章末尾给出了一个对算力受限场景的务实建议:完全可以用离线方式让Bolt E4B加Magpie管线预生成数百条回复并缓存音频,实际运行时只保留Nemotron Speech ASR、一个Python对话路由器和全量缓存音频,跳过实时推理和合成。作者计划将这套方案用于互动南瓜装置。