设备端 AI 语音助手
简介
在 2025 年 CES 展会上,Synaptics 展示了众多令人印象深刻的 AI 演示。
其中包括一个完全在设备端运行的情境 AI 语音助手,无需依赖云端或卸载,可在 Synaptics Astra™ Machina SL1680 Linux 开发板上运行。
您现在就可以购买 Synaptics Astra SL1680 开发板 并运行这个开源演示:
在 GitHub 上找到 Python 源代码,您可以自定义和使用。
一些亮点功能:
- 理解上下文相关的查询
- 快速响应(低至 500ms)且准确,无需依赖云端
- 可以调用外设或云服务以扩展功能
- 利用多模态系统处理基于视觉的查询
- 无幻觉响应,前提是 Q&A 数据集干净(见限制说明)
该项目建立在许多开源 AI 项目和个人的工作和贡献之上,包括:
- 语音转文本:Useful Sensors Inc. 的 Moonshine,比 Whisper 快 5 倍且准确度更高
- 响应生成:使用仅编码器的语言模型进行上下文相关的 Q&A 匹配
- 文本转语音:Open Home Foundation 的 Piper
工作原理:可视化
助手使用 Sentence transformer 将问题转换为表示含义的向量。这种数据格式类似于 RAG 系统(检索增强生成)中存储在向量数据库中的格式。这实现了语音查询的语义搜索 - 用户无需精确措辞。
运行这个交互式可视化是获得直观理解的好方法。(在可视化界面中,按"A"键查看标签。)

示例查询
以下是一些常见问题和回答,展示了这个 AI 助手如何处理查询:
基本信息
问 - 你是谁?你叫什么名字? 答 - 我是一个运行在 Synaptics Astra SL1680 上的 AI 助手。
问 - 我的洗碗机无法启动。 答 - 如果您的洗碗机无法启动,请检查是否已插入电源、断路器是否跳闸、门是否完全关闭,以及电源按钮是否已激活。
工具调用
将工具调用集成到架构中很容易,可以使用宽泛的语义查询来调用操作。这实现了与以下功能的动态交互:
- 外设:控制 GPIO 或其他硬件组件
- 云 API:调用外部 API 以扩展功能
- 视觉模型:利用基于 NPU 的视觉系统进行多模态查询
例如,您可以通过将查询添加到 question_answers.json 来启用助手响应查询。
{
"question": "What's the time?",
"answer": "{time}"
},
当匹配时,助手将通过查看 tools.json 来调用 {time}:
{
"token": "{time}",
"command": "date +\"%B %d at %I.%M%p\""
},
这同样可以读取或写入 GPIO,或调用云 API。
工具调用示例查询
问 - 天气怎么样? 答 - 圣何塞天气部分多云,58°F。
问 - 现在几点了? 答 - 现在是下午 3:45。
设备端 AI 助手架构
该项目特意设计为情境特定,使用仅编码器语言模型和预生成的问题-答案组,在嵌入式 Linux 开发板上实现低延迟。然而,语义匹配实现了足够自然、私密和响应迅速的单一主题交互(例如特定设备的命令或支持问题),可在家庭、零售或工业应用中受益于有效的语音 UI。
(a) 预生成架构
在这种架构中,数据准备工作提前进行,以确保设备端快速高效的响应。
- 数据准备:
- 将用户手册或常见问题解答等手动数据源预处理成文本块
- 使用基于云的大语言模型(LLM)生成结构化 Q&A 数据集,通过提示工程基于源材料生成自然的用户问题
- 语义搜索索引:
- 文本嵌入模型将问题转换为高维向量,实现相似含义查询的语义搜索。仅编码器句子转换器确保高性能,并避免超出预生成数据的幻觉
- 部署:
- 将生成的嵌入和答案文本打包并加载到设备上
(b) 设备端架构
这种架构实现了用户和助手之间的无缝交互,无需任何外部依赖。值得注意的是,它利用仅编码器句子转换器进行推理和响应生成,提供了一种新颖的方法,确保高性能同时消除超出预生成数据的幻觉可能性。
- 语音输入管道:
- 通过语音活动检测(VAD)处理用户语音以识别活动语音输入
- 语义搜索:
- 转录文本通过嵌入使用余弦相似度进行语义搜索,匹配最接近的预生成 Q&A 组
- 响应传递:
- 使用文本转语音(TTS)模型将匹配的响应转换为音频
- 工具查询:
- 可以控制 GPIO 或其他硬件组件等外设,并基于语义匹配调用 API。这实现了动态交互并扩展了助手功能
- 多模态系统:
- 工具调用可以包括在 NPU 上运行的视觉模型,用于对象识别或环境理解。例如,查询"我能看到什么?"可以调用视觉模型,响应为:"我可以看到 {call_vision}",以增强多模态功能
设备端语音管道
下图表示设备端语音助手中的数据流:
用户语音 --> [VAD] --> [STT] --> [嵌入] -----------> [语义搜索]
|
|
v
[查找答案]
|
|
[运行工具,如 GPIO、云 API] <-----------是---------[包含工具调用令牌?]
| |
| |
| v
--------将工具响应插入答案------------------> [TTS]
- 语音活动检测 (VAD):检测用户开始说话的时间
- 语音转文本 (STT):使用 Moonshine 将用户语音转录为文本
- 嵌入:将用户问题转换为嵌入
- 语义搜索:对预生成的问题嵌入执行余弦相似度搜索
- 文本转语音 (TTS):将检索到的答案转换为自然语音输出
- 工具查询:允许与外设、视觉模型或外部 API 交互以实现额外功能