vui
RTX 4090上9倍实时的本地语音助手,WebRTC流式管道实现自然对话打断
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
RTX 4090上9倍实时的本地语音助手,WebRTC流式管道实现自然对话打断
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你在厨房做饭,手上沾满了面粉,突然想起今天需要给妈妈打个电话确认周末聚会的安排。这时你只需要对着空气喊一声——不是唤醒词,而是像和朋友聊天那样直接开口:「帮我给妈妈打个电话,提醒她周末来吃饭」——然后 AI 听懂了,帮你拨通电话,甚至还能在你继续做饭的时候,用语音告诉你妈妈说了什么、确认了几点到。
这就是 Vui 试图实现的目标:一个能实时对话的语音 AI 助手,不是 Siri 那种你问我答的机械模式,而是像和人说话一样自然地来回交流。你可以在它说话的时候打断它(barge-in),可以在说话过程中就开始处理你的意图,可以在它回应时继续做自己的事。
Vui 来自一家叫 fluxions.ai 的初创公司,成立于 2025 年。这个团队的核心成员曾在 Meta、Anthropic 和 Google DeepMind 从事语音和对话 AI 研究。他们的目标很明确:让本地部署的语音助手达到商用质量,延迟低到可以自然对话,而不是像玩具一样的演示作品。
Vui 的技术实现是一条精心设计的流式管道,包含四个核心环节:语音活动检测(VAD)→ 自动语音识别(ASR)→ 大语言模型(LLM)→ 语音合成(TTS)。
整个流程在用户说话的同时就已经启动了,不是等用户说完再处理。当检测到用户开始说话时,ASR 模块就开始实时转写;用户边说,LLM 边"预填充"(speculative prefill),根据已有输入猜测用户意图;用户一停顿,LLM 立即生成回复文本;与此同时,TTS 模块以句子为粒度实时合成语音,通过 backpressure 机制确保音频流和文本流同步。整个过程在 RTX 4090 上可以达到 ~9倍实时的速度——也就是说,生成 1 秒的回复只需要约 0.1 秒的处理时间。
VAD(语音活动检测) 使用 Silero VAD 的 ONNX 模型,纯 CPU 运行,负责判断用户何时开始说话、何时结束,是整个"打断"(barge-in)机制的基础。没有可靠的 VAD,barge-in 就无从谈起。
ASR(语音识别) 默认使用 faster-whisper(GPU 加速的 Whisper),也可切换为 Moonshine(CPU 流式,ONNX 导出)。faster-whisper 背后是 CTranslate2 加速的 Transformer 推理,配合 CUDA Graphs 优化,在 RTX 4090 上处理实时语音流绰绰有余。
LLM 支持热插拔,后端可以是 Ollama、vLLM 或任何 OpenAI 兼容接口。默认推荐 qwen3.5:4b(40 亿参数),在消费级 GPU 上可以在合理的延迟内完成对话推理。LLM 接收的是 ASR 转写的文本 + 对话历史,输出结构化的回复 JSON,内含 text(语音回复内容)和 tool_calls(如果需要调用工具)。
TTS(语音合成) 是 Vui 最有技术含量的部分。核心模型 Vui Nano 是一个 3 亿参数的语音 transformer,基于 Qwen3-TTS-12Hz codec 构建,架构风格是 Llama 式的 decoder + RQ-Transformer head。训练数据包含对话语音(呼吸声、笑声、犹豫语气)和多说话人对话数据。
RQ-Transformer 是实现高质量流式合成的关键。传统的 TTS 模型需要等待完整文本才能开始生成,而 RQ-Transformer 可以逐 token 生成音频帧,配合句子级 chunking,实现真正的流式输出——用户还没说完,AI 已经开始"开口"了。
传统 TTS 系统(如 Kokoro、TTS乱码)通常是离线合成:输入一段文本,输出完整音频文件,延迟等于"文本长度 × 生成速度"。这种方式在单段回复场景下勉强可用,但在多轮对话中,用户必须等待 AI 说完一整段话才能收到回复,体验远不如真人对话。
Vui 的解决方案是句子级流式 TTS:LLM 每生成一个完整句子,TTS 就立即开始合成该句子的音频并推送到播放器。同时 LLM 继续处理下一个句子。这种流水线并行让端到端延迟从"等 LLM 说完再等 TTS 说完"变成了"LTM 说第一句的同时 TTS 已经在说"。
在 bf16 精度 + CUDA Graphs 优化下,Vui Nano 在 RTX 4090 上实测合成速度约 9 倍实时——即生成 1 秒音频只需 0.11 秒处理时间。这是能够支撑自然对话节奏的关键数字。
这是语音助手和真人对话体验差距最大的地方。当 AI 正在说话时,用户突然想补充或改变话题,AI 能否立即停下并切换到新指令?
Vui 通过 VAD 监控麦克风输入实现 barge-in:当检测到用户开始说话(声音能量超过阈值且持续一定时长),立即停止当前音频播放和 LLM 生成,清空相关缓冲区,开始处理用户的新输入。这个过程用户感知到的中断延迟在几百毫秒级别,基本符合自然对话中"等人停下来"的预期。
Vui 不只是一个被动回答问题的助手,它的 Thoughts Stream 机制允许 LLM 并行调用约 15 个内置工具:记忆读写、定时器、网络搜索、任务委托等。更关键的是,它还支持可选的 Claude 任务服务器(Claude task server)——一个 sidecar 容器,通过 Anthropic 的 /v1/messages 接口连接到 Claude Code MCP,去执行需要多步推理的复杂任务(Gmail 读取、日历管理、Slack 消息等)。
这种架构把实时性要求高的任务(语音对话)交给本地 LLM(低延迟),把复杂任务(多步研究)委托给 Claude(高质量),两种能力互补。
对于大多数用户,推荐的部署方式是 docker-compose 一键启动:
ollama pull qwen3.5:4b # 在宿主机准备 LLM
docker compose up -d # 启动 Vui 流式服务
# 打开 http://localhost:8080 即可对话
docker-compose 默认启动两个服务:vui-stream(核心语音服务)和 claude-task(可选的 Claude 任务委托服务)。Vui 容器使用 host 网络模式(network_mode: host),这是因为 WebRTC 的 ICE 候选地址需要容器直接暴露给浏览器,使用 bridge 网络会导致 UDP 打洞失败。
硬件需求:
如果你的机器没有 NVIDIA GPU,也可以使用 CPU 流式 ASR(Moonshine backend)+ Apple Silicon MLX 后端(正在开发中),但 TTS 质量会有所下降。
原生安装(不使用 Docker)也是支持的,需要手动安装 ffmpeg、uv、Ollama,然后 uv sync 安装 Python 依赖。
Vui 的代码库采用标准的 Python 项目结构(src/vui/ 作为包根目录),核心依赖:
| 依赖 | 作用 |
|---|---|
torch + torchaudio | 深度学习框架,支撑 TTS/ASR 模型推理 |
transformers | HuggingFace 模型库,加载预训练模型 |
faster-whisper | GPU 加速 Whisper ASR |
aiortc | Python WebRTC 实现,处理浏览器端的音视频流 |
aiohttp | 异步 HTTP/WebSocket 服务器 |
gradio | Demo UI,提供 Gradio 语音交互界面 |
claude-agent-sdk | Claude 任务委托服务 |
flash-attn | 高效注意力机制,bf16 下加速 LLM 推理 |
torchcodec | 音频编解码,依赖系统 ffmpeg |
项目使用 uv 作为包管理工具,Python 版本要求 3.12,且严格限制 < 3.13(torchcodec 等依赖尚未支持 3.13)。
Vui 还提供了 OpenAI Realtime API 兼容接口(ws://localhost:8080/v1/realtime),这意味着任何使用 OpenAI Realtime API 的客户端(如某些商业应用)只需修改 WebSocket 连接地址,就可以切换到 Vui 作为后端。这是一个非常实用的功能,方便开发者将 Vui 集成到现有的语音应用生态中。
尽管 Vui 展示了令人印象深刻的技术能力,它的局限性也不容忽视:
GPU 强制需求:流式 TTS + 实时 LLM 推理对 GPU 有较高要求。没有 NVIDIA 显卡的用户体验会大打折扣,虽然有 CPU ASR 和 MLX 计划,但 TTS 质量仍无法与 GPU 版本相比。
中文支持未明确测试:Vui 的核心模型基于英文对话数据训练,对中文的支持(语音识别准确率、TTS 自然度)未在官方文档中明确说明。对于中文用户来说,可能需要额外调优或微调。
配置复杂度:虽然 Docker 一键启动足够简单,但要充分发挥 Vui 的能力(Ollama 模型选择、Claude 任务服务器配置、MCP 工具集成),需要一定的配置工作量和理解成本。
license 标注为 NOASSERTION:虽然 README 声称 Apache 2.0,但 GitHub API 返回的 license 字段为 NOASSERTION,这意味着 LICENSE 文件的法律效力可能存在不确定性,使用前需自行确认。
Vui 代表了 2025 年语音 AI 领域的一个重要方向:端侧可用的实时对话 AI。过去,"实时对话 AI"基本等于云端 API(OpenAI Realtime API、GPT-4o),延迟、隐私、成本都是障碍。Vui 证明了在消费级 RTX 4090 上,本地部署的语音助手已经可以达到令人满意的对话流畅度。
从技术演进角度看,Vui 的几个技术决策值得注意:
fluxions.ai 的商业模式是"开源核心 + 商业硬化版":GitHub 上公开的是开源核心,他们同时运营一个生产级的云端版本,面向需要 SLA 保证的企业客户。这种策略在 AI 领域越来越常见——开源吸引开发者生态和社区反馈,商业版本提供可靠性保证和定制服务。
对于想本地部署语音助手或学习流式语音 AI 架构的开发者来说,Vui 是一个值得深入研究的项目——代码结构清晰,依赖合理,从 ASR 到 TTS 的完整管线在一个仓库里全部可见,没有黑盒 API 调用。