车载 AI 语音助手(Jetson Orin Nano)

端侧全离线车辆语音助手:ASR-TTS 交互、意图路由、RAG 知识库、LLM Tool 调用与 QT 座舱界面,ZeroMQ 松耦合多服务架构。

项目概述

基于 NVIDIA Jetson Orin Nano 的端侧车辆 AI 语音助手:说话→听懂→思考→执行→回答全链路在车端本地完成,不依赖云端。集成 ASR-TTS 语音交互、意图路由、RAG 车辆知识库、LLM/Tool 调用与 QT 数字座舱界面,实现车辆知识问答、车控工具调用与 GUI 展示。

各服务模块采用 ZeroMQ 轻量级通信框架,实现松耦合的分布式多服务架构。

系统架构

系统拆分为 ASR、Intent Router、RAG、LLM、Tool Bus、TTS、QT UI 七个模块,模块间通过 ZMQ 的 REQ/REP + PUB/SUB 组合,实现请求应答、状态广播、状态同步三种通信模式。

以一句「帮我把空调调到 24 度」为例的完整链路:

关键技术点

  • AI 语音交互:ASR 使用 sherpa-onnx 部署 zipformer 模型,TTS 基于 SummerTTS;设计了 ASR 与 TTS 的同步机制,避免 TTS 播放期间语音回灌误识别;构建 VAD 与关键词唤醒
  • 意图路由:语义分类 + 规则分类双通路融合的意图识别,编排 5 类服务调用,按意图选择 RAG 检索、LLM 调用、直接语音回复或 Tool 调用的组合
  • RAG 车辆知识库:基于 sentence-transformers 将车辆手册向量化,余弦相似度 + Top-K 检索,端侧全离线完成知识问答
  • LLM 部署与 Tool 调用:llama.cpp 部署 Qwen2.5-3B 的 GGUF Q4_K_M 量化模型;通过 prompt 强约束让模型只输出两类 JSON——respond 交给 TTS 播放,tool_call 驱动车控工具执行
  • QT 车载座舱 GUI:数字座舱界面,实时展示空调、车窗、天窗、摄像头与传感器等车辆状态

核心 API 与接口设计

服务端口与通信原语

服务端口协议
Intent Router:6666ZMQ REQ/REP
RAG Service:6667ZMQ REQ/REP
LLM Service:6668ZMQ REQ/REP
Tool Bus:6669ZMQ REQ/REP
状态广播:6670 / :6671ZMQ PUB/SUB
TTS Server:7777音频流
llama-server(GGUF 推理后端):8080HTTP

C++ 侧封装了 ZmqServer / ZmqClient(REQ/REP 请求应答)与 ZmqPub / ZmqSub(状态广播)两组通用组件,各服务只依赖消息契约、不依赖彼此实现。

意图路由:五分类多分支

Router 对每句输入做语义分类 + 规则分类双通路融合,输出五类意图并按类型路由到不同服务链:

意图链路典型时延
EMERGENCY(紧急事项)RAG → TTS~0.5s
FACTUAL(手册事实问答)RAG → TTS~0.5s
EXPLICIT_CMD(明确车控指令)Tool Bus → TTS~0.5s
COMPLEX(复杂查询)RAG → LLM → TTS秒级
CREATIVE(闲聊/生成)LLM → TTS秒级
LLM + Tool 闭环LLM ↔ Tool → LLM → TTS秒级

LLM 双模式 JSON 契约

通过 Prompt 强约束 LLM 只输出两类 JSON,这是「语音语义 → 车辆动作」的核心契约:

1
2
3
4
5
6
7
{"action": "respond", "content": "好的,已为您将空调调到 24 度"}

{"action": "tool_call",
 "tool": "ac",
 "tool_action": "set_temperature",
 "params": {"value": 24},
 "reason": "用户要求把空调调到 24 度"}
  • respond → 直接送 TTS 播报
  • tool_call → Tool Bus 侧做参数归一化与校验(例如从口语化文本中提取「24 度」的数值),执行后通过 PUB 通道把车辆状态同步给 QT 座舱,并把执行结果回灌 LLM 生成自然语言回复
  • 无法归一化的输出会降级为 respond 兜底,保证任何情况下用户都能得到语音反馈

RAG 检索接口

车辆手册切片后经 sentence-transformers 编码为 768 维向量入库;查询时同模型编码 query → 余弦相似度 Top-K 检索 → 命中文档拼接进 LLM 上下文,全部在端侧离线完成。

项目状态

全链路已在 Jetson Orin Nano 上跑通,端侧离线完成语音到车控的闭环。

使用 Hugo 构建
主题 Stack 由 Jimmy 设计