当前位置: 首页 > news >正文

一副普通眼镜如何变成AI助手?OpenGlass 25元开源改造方案全解析

一副普通眼镜如何变成AI助手?OpenGlass 25元开源改造方案全解析

【免费下载链接】OpenGlassTurn any glasses into AI-powered smart glasses项目地址: https://gitcode.com/GitHub_Trending/op/OpenGlass

OpenGlass 是一个把任意眼镜变成 AI 智能眼镜的开源项目,硬件成本不到 25 元。这篇文章不打算按"先看硬件、再看软件"的老套路介绍它,而是换一条更实用的路径带你读完:先从一个真实场景出发,理解它到底能帮你做什么;再顺着一条数据流,看懂照片和声音是怎么从镜腿走到 AI 模型里的;最后用一份清单,让你今晚就能开始动手。整个过程大约十分钟。

先讲一个"看了又忘"的场景

想象你站在火车站候车厅,面前一块大屏滚动着车次信息,你掏出手机拍下来、放大、反复确认,最后还是怕记错。又或者你在会议室里,白板上的架构图画完就擦掉了,之后怎么也想不起细节。OpenGlass 想解决的正是这类时刻——它让"眼前的东西"自动变成"可检索的记录"。

项目的思路很直接:眼镜负责拍照和收音,手机 App 负责接收数据,AI 模型负责理解和回答。测试目录里存了大量真实场景的识别结果,比如下面这张室内测试图,多个 AI 模型都对它输出了结构化的场景描述,而不是简单的"有人、有椅子"。

这套能力听起来不复杂,但真正的难点在于:怎么用最少的硬件把这套流程跑通。

一条从镜腿到模型的数据链

整个系统的数据流可以拆成四步,每一步都对应项目里一个具体的目录:

  1. 采集:摄像头按指令抓拍 JPEG 帧,麦克风以 16kHz 采样录音,这部分逻辑在 firmware/firmware.ino 里
  2. 传输:数据不走 Wi-Fi,而是通过 BLE 蓝牙特征值(characteristic)分包推送到手机,固件里用photoDataCharacteristic每包 200 字节地推照片
  3. 解析:React Native 应用在 sources/app/ 中接收数据,useDevice.ts负责与名为 "OpenGlass" 的蓝牙设备建立连接
  4. 推理:sources/agent/imageDescription.ts 把图片交给视觉模型,生成文字描述,再由 Agent 汇总回答你的提问

有个细节值得留意:固件里音频编码用宏开关切换三种方案,注释写得很清楚——Opus 用于高质量语音、Mu-law 给 Web 应用、PCM 给原生应用。一个 25 元的设备留了三套编码方案,这是典型的"模块化优先"设计,你在 firmware/firmware.ino 顶部就能看到这几行开关:

// 三选一,改宏即换编码方案 // #define CODEC_OPUS // 高质量语音编码 // #define CODEC_MULAW // Web 应用使用 #define CODEC_PCM // 原生应用使用

硬件清单:四样东西,加起来不到 25 元

拆开成本看,这个项目对"够用"的把握相当克制:

组件成本选择理由
Seeed XIAO ESP32 S3 开发板约 15 元双核 240MHz,自带摄像头与麦克风接口、PSRAM
250mAh 锂电池约 3 元体积小,可全天待机、随时更换
3D 打印镜架挂载件约 2 元开源 STL 文件,适配不同镜框
线材与焊接件约 5 元按需裁剪

为什么选 ESP32 S3 而不是更便宜的方案?因为它同时满足三个硬指标:内置 PSRAM 能直接缓存相机帧(固件里CAMERA_FB_IN_PSRAM就是这么用的)、BLE 与 Wi-Fi 双模、且整个生态文档开源。它把"能跑"的门槛降到了最低。

摄像头只选 30 万像素的 OV2640,这并非妥协——AI 识别物体和文字,30 万像素绰绰有余,反而低分辨率意味着更小的 BLE 传输压力和更低的功耗。数字背后的逻辑是:在智能眼镜上,像素不是越高越好,够用且省电才是。

换脑自由:同一个镜头,四种 AI 轮流出场

OpenGlass 最值得玩的一点,是它把"大脑"做成了可插拔的。imageDescription函数接受一个模型参数,默认用moondream:1.8b-v2-fp16,但你完全可以换成llava-llama3llava:34b-v1.6。项目还分别接入了 Groq 和 OpenAI 的接口,加上本地 Ollama,一共四条推理通道:

// sources/agent/imageDescription.ts export async function imageDescription( src: Uint8Array, model: KnownModel = 'moondream:1.8b-v2-fp16' ): Promise<string> { return ollamaInference({ model, messages: [/* 系统提示 + 图片 */] }); }

同样的输入,不同模型输出的风格差别很大:小模型三句话讲完场景,大模型会补上环境细节和人物状态。这意味着你可以按场景挑模型——赶时间用轻量模型秒回,写日记用大模型补全细节。如果想要私有化部署,Ollama 方案支持全程本地推理,数据不出设备。

项目还内置了一个批处理脚本 prompts/generate.ts,能把一批测试图自动喂给多个模型、把结果写进 markdown 文件。想对比模型效果?跑一遍脚本,答案就有了。

三十分钟从零跑通

上手流程比想象中短,分两条线:

  1. 烧固件:Arduino IDE 装好 ESP32 开发板包,打开 firmware/firmware.ino,记得在 Tools 里把 PSRAM 设为 "OPI PSRAM",否则内存不够用
  2. 跑应用:克隆仓库并安装依赖
git clone https://gitcode.com/GitHub_Trending/op/OpenGlass cd OpenGlass npm install

然后在 sources/keys.ts 填入你的 API 密钥(用EXPO_PUBLIC_*环境变量注入),本地 Ollama 则执行ollama pull moondream:1.8b-v2-fp16。最后npm start启动 Expo 开发服务器,浏览器打开后点连接设备,眼镜里的画面就会开始流入 AI 了。

整套东西是 MIT 协议,固件、App、测试脚本全部开放。想在 modules 目录下加一个新 AI 服务商,照葫芦画瓢写一个文件即可。

下一步:你的眼镜由你定义

OpenGlass 现在只能识别场景、记录对话,但它的接口已经把可能性铺开了:给固件加一个传感器、给 App 加一个处理函数、给 Agent 加一个技能,都是顺着现有结构就能完成的改动。社区里已经有人把心率传感器接进来做健康记录,也有人把它改造成扫码巡检工具。

如果你想试试,今晚就能做第一步:把仓库克隆下来,先不碰硬件,跑一遍npm run prompts脚本,看看它如何用四个模型描述同一批图片。等你看懂了这条数据链,再下单那 25 元的零件也不迟。技术民主化的下一步,往往就从一次动手开始。

【免费下载链接】OpenGlassTurn any glasses into AI-powered smart glasses项目地址: https://gitcode.com/GitHub_Trending/op/OpenGlass

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4085217.html

相关文章:

  • 用JSON定义游戏界面:FlatUI序列化功能完整上手教程
  • 开发效率提升300%:这套SpringBoot3+Vue3脚手架让你的项目快速启动
  • BilibiliDown使用指南:收藏夹300条内容一键落地的离线视频备份方案
  • Python进阶 - sys模块 退出程序与异常信息获取
  • 用 relly 学 Rust 系统编程:零拷贝与安全内存操作实战
  • lainTSX 是什么:在浏览器中游玩《Serial Experiments Lain》PSX 游戏的完整指南
  • 认识 LightningJS:第三方JavaScript嵌入方案如何同时做到安全、快速与异步?
  • stdarch测试体系全览:C/Rust随机对拍、反汇编断言与20+架构的CI矩阵
  • 【单片机毕业设计】基于 STM32 或 51 单片机的多传感融合智能学习照明设备设计 基于 STM32 或 51 单片机的带时钟定时功能智能护眼装置设计与实现(021303)
  • Milvus 迁移到 RAG:先守住索引和评测口径
  • 告别录屏几小时,m3u8-downloader 让 M3U8 视频下载一条命令搞定
  • DistroAV(OBS-NDI)插件“Runtime缺失“全场景自救指南:从零上手到进阶调优的完整路线图
  • ManyDepth位姿估计网络解析:PoseCNN如何为多帧深度估计提供关键几何信息
  • 打造 7×24 家庭无线音乐中心:Shairport4w 开机自启与托盘运行实战
  • Blender里一键导出GIF动画,再也不为这事发愁
  • 【Bug已解决】Mustache list sections silently drop falsy items (`0`, `False`, `““`)
  • 有手就行!零基础用AI做数据分析,普通打工人也能玩出高级感
  • osu-droid难度算法实现剖析:Aim、Speed与Reading技能模型深度解析
  • 世毫九信息几何物理学框架下黎曼ζ函数非平凡零点的拓扑不动点本质
  • assert_instr测试机制深度解析:stdarch如何确保内建函数与机器指令一一对应
  • SideWaffle vs 其他VS模板扩展:为什么它是Web开发者的终极选择?
  • DDrawCompat 上手全攻略:让老 DirectX 游戏在现代 Windows 上重获新生
  • GitHub 成就解锁新手指南:零代码审查也能拿到的 Yolo 徽章
  • RTOS延时机制解析:从osDelay到阻塞延时的本质区别与应用
  • lainTSX 收集要素攻略:集齐 Polytan 熊全部 6 个部件的完整路线
  • 告别手忙脚乱:FF14钓鱼计时器“渔人的直感“咬钩识别与幻海流预警实战手册
  • 3步上手免登录微博图片批量下载:weiboPicDownloader从入门到进阶完整指南
  • OBS的NDI插件一装就报Runtime错误?DistroAV安装与排障一篇讲透
  • 炉石传说插件 HsMod 全攻略:8 大实用增强功能与最快上手方法
  • 单片机毕设选题推荐:基于 STM32/51 单片机的三轴姿态感知人体安全监测预警系统设计 基于 STM32/51 单片机的老年人远程跌倒短信报警硬件系统设计(021203)