pi-card

pi-card

树莓派上的离线AI智能助手

Pi-C.A.R.D是一个完全运行在树莓派上的离线AI智能助手项目。它集成了标准大语言模型的对话能力,同时支持拍照、图像描述和分析功能。该系统通过唤醒词或按钮触发对话,具有可配置的对话记忆功能。Pi-C.A.R.D采用C++实现音频转录和视觉语言模型,确保高效运行,同时保护用户隐私。

Raspberry PiAI助手语音交互离线系统计算机视觉Github开源项目

Pi-C.A.R.D

<img src="https://yellow-cdn.veclightyear.com/835a84d5/97f52f9b-072e-441d-9bf3-b6f8817b646e.png" height="200"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/aca6fab0-b42e-4570-8f12-7a0df5faefcf.png" height="200">

目录

演示

(更好的视频即将推出)

介绍

Pi-Card 是一个完全运行在树莓派上的 AI 驱动助手。它能够在对话环境中完成标准 LLM(如 ChatGPT)可以做的任何事情。 此外,如果配备了摄像头,你还可以要求 Pi-card 拍照、描述所见内容,并询问关于该图像的问题。

为什么叫 Pi-card?

树莓 Pi - 摄像头 音频 识别 设备

<img src="https://yellow-cdn.veclightyear.com/835a84d5/d5c8500c-65b5-4be1-ba36-173d61da6d6b.jpg" height="300">

如果你能想到更好的方式来强制这个缩写,请提交问题或拉取请求。

它是如何工作的?

Pi-Card 完全运行在你的树莓派上。

使用唤醒词。一旦运行 main.py,系统将监听你的唤醒词。说出唤醒词后,你就正式进入对话。在对话中,你不需要重复唤醒词。系统将继续监听你的命令,直到你说"停止"、"退出"或"再见"之类的话。

使用按钮。如果你能弄到一个面包板、一些线和一个按钮,使用按钮来处理对话是一种更流畅的交互方式(根据我的经验)。这是通过按下按钮,然后说出你的命令来实现的。按钮是一个简单的 GPIO 按钮,可以按照 main_button.py 文件中的说明进行设置。

聊天机器人有一个可配置的对话记忆,这意味着如果你想让助手重复它说过的话,或者详细说明之前的话题,你可以这样做。为了获得更快的响应,你可以在 config.py 文件中将记忆设置为一个较小的数字。

它有多有用?

该系统旨在成为一个有趣的项目,可以作为一个 有点 有帮助的 AI 助手。由于一切都在本地完成,系统的功能和速度不会像基于云的系统那样强大或快速。然而,该系统仍然有很大的改进空间。

为什么这不是一个应用程序?

主要原因是我想创建一个完全离线且不需要任何互联网连接的语音助手。这主要是因为我想确保用户的隐私受到保护,用户的数据不会被发送到任何第三方服务器。我还想知道在完全离线的环境中,语音助手能有多强大。

使用方法

下载存储库、安装所需的软件包并按照其他设置说明操作后,你可以通过运行以下命令来运行主程序:

python main.py

python main_button.py

程序运行后,你可以通过说出唤醒词来开始与助手对话。默认的唤醒词是"hey assistant",但你可以在 config.py 文件中更改它。如果使用按钮版本,你可以按下按钮开始对话,或随时打断助手。

设置

软件

为了使系统尽可能快速和精简,我们使用音频转录和视觉语言模型的 C++ 实现。这是通过出色的库 whisper.cpp(用于音频转录)和 llama.cpp(用于视觉语言模型)来完成的。

在这两种情况下,请在你喜欢的位置克隆这些存储库,并将它们的路径添加到 config.py 文件中。

克隆后,请进入每个存储库,按照设置说明让模型运行起来。下面给出一些提示:

对于 llama.cpp,我们使用的是视觉语言模型功能,这与标准设置略有不同。你需要按照 LlaVA 的设置说明进行操作,但将使用的模型更新为更适合这个设备的 Moondream2

要安装 Moondream,你需要去 HuggingFace 模型中心下载模型。我使用 Python 完成了这个操作,命令如下。再次确保将视觉模型路径添加到 config.py 文件中。

from huggingface_hub import snapshot_download model_id="vikhyatk/moondream2" snapshot_download(repo_id=model_id, local_dir=your/local/path, local_dir_use_symlinks=False, revision="main")

工具

为了让 pi-card 更像一个真正的助手,它可以访问几个工具。这些是通过 tool-bert 实现的,这是一个经过微调的 BERT 版本,用于决定何时访问外部信息。关于如何制作这个版本的更多信息可以在这里找到。

该模型很容易安装,但要启用工具访问,请查看 .env.example 文件,了解需要哪些密钥和秘密。

对于 whisper.cpp,你需要按照 README 中的快速入门指南进行操作。

由于这个项目依赖于公开可用的模型,根据使用的模型,这个助手的限制将与模型的限制相同。

硬件

硬件设置相当简单。你需要一个树莓派 5 Model B、一个 USB 麦克风、一个扬声器和一个摄像头。

USB 麦克风和扬声器可以插入树莓派的 USB 端口。摄像头可以连接到树莓派的摄像头端口。

我在我的设置中使用了以下硬件:

请注意,树莓派5有新的摄像头接口,因此需要新的摄像头连接器。同时,虽然这个项目主要针对树莓派5,但它也应该适用于其他设备。

关于设置GPIO按钮,我发现这个教程的前几分钟非常有帮助。

你可以自由选择,这些是对我有用的组件!

基准测试

这个表格是对各种模型响应时间的非常粗略的基准测试。

转录模型

模型加载时间总时间
Whisper Tiny (en)0.113秒1.76秒
Whisper Base (en)0.159秒3.36秒

大型语言模型

由于这个因对话/响应的大小而异,这里只列出了大约的每秒令牌处理量。

模型提示评估~响应时间
Phi 3 Instruct (3B) (Q4_0)4.65令牌/秒3.8令牌/秒3.5秒
Llama 3 Instruct (8B) (Q4_0)2.37秒2.00秒5.0秒
Qwen2 Instruct (1.5B) (Q4_0)--1.0秒
Picard (0.5B) (fp16)--0.9秒

(响应时间 ~= 提示评估持续时间)

视觉语言模型

模型在上下文中加载图像时间开始生成时间
Moondream262秒3.5秒

这意味着对于视觉语言模型,最大的瓶颈是将所有"静默"图像令牌加载到LLM内存中。对于Moondream来说,这是729个图像令牌,所以需要一定的时间是可以理解的。

这是Moondream2的5月修订版,我最近没有经常使用它,但如果这个模型改用池化层,它的延迟应该会大幅下降,这将是一个巨大的改进。

超频

请自行承担风险!

我发现加快上述所有数字的一种方法是给我的树莓派超频。你可以按照这里的说明进行操作。我不建议将频率提高到3.0 GHz,而且你的机器可能甚至不允许你这么做。我只能将我的机器提高到2.6 GHz,它崩溃过一次,但除此之外工作正常,并且加快了上述所有基准测试的速度,我认为这大致与提高的时钟速度成正比。

如果你能接受设备烧毁的风险和额外的功耗,我建议你这样做。确保你有一个好的散热系统。

路线图

即将推出,但我计划在这里添加关于当前已实现的功能和未来可以做的事情的注释。以下是一些简要说明:

  • 基本对话能力
  • 摄像头功能
  • 基准响应时间
  • 测试超频
  • 弄清楚如何加快Whisper的速度
  • 添加更多外部服务
  • 添加中断助手并提出新问题的能力
  • 使用自定义调优模型
  • 新的YouTube视频
  • 使用带有图像令牌池化的Moondream模型
  • 改进外部服务功能模型(tool-bert)
  • 连接便携电源时进行测试
  • 正式写下我如何进行微调和移植的过程(因为我已经忘记了)
  • 将仓库Docker化以便在更多设备上测试

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多