这段文本是一个开源项目(o40/seesay)的详细介绍,旨在为视障人士提供一种低成本的解决方案,通过使用ESP32-CAM摄像头模块、手机和服务器来实时描述用户面前的场景。以下是翻译成中文科普读物风格的内容:
项目简介
我尝试开发一个低成本工具,帮助盲人获取面前场景的实时描述。这个想法是定时拍摄照片,并利用AI模型进行图像描述,然后通过语音合成技术将描述反馈给用户。
为了降低成本(低于30美元),同时学习更多关于Arduino软件开发的知识,我选择了带有内置WiFi功能的ESP32-CAM来捕捉图像。对于图像描述,我选用了gpt-4o-mini模型。虽然没有过多考虑选择哪个模型,但这个模型看起来是个不错的起点。
尽管概念验证方案已经可行,但仍存在一些不足之处:
-
手机需要打开一个网页,才能听到更新后的描述。
-
目前相机和电源需要手持,不方便固定。如果能集成到眼镜上会更好。
-
安全性未被考虑,任何人只要知道URL都可以访问该网页。
替代产品对比
创建此工具的一个动力在于现有替代产品的高昂价格。以下是一些市场上的替代品及其价格:
| 产品名称 | 价格 | 备注 |
| --- | --- | --- |
| Ray-Ban Meta Glasses | $300 | 暂无视觉描述应用,API封闭,可能可以破解 |
| EchoVision Smart Glasses | $599 | 看起来很有趣的产品,但具体工作原理尚不清楚,目前仅接受预订 |
| Envision Glasses | $3200 | 基于Google Glass Enterprise Edition 2硬件 |
| OrCam MyEye | $5900 | 需要附加在眼镜上的笨重设备 |
我的解决方案
我的方案是使用一部开启网络共享功能的手机作为ESP32-CAM的连接点。ESP32-CAM上的软件将图像上传至HTTP服务器,服务器再将图像发送给OpenAI API以获取描述。这些描述会在HTTP服务器页面上更新,手机上的语音助手(如iPhone的VoiceOver)会朗读这些更新的文字。
设置与安装
ESP32-CAM的Arduino IDE编程
ESP32-CAM的源代码位于"esp32"文件夹中,使用Arduino IDE打开并更新WiFi凭据和目标HTTP服务器后即可烧录。设置串口监视器的波特率为115200以查看ESP32-CAM的输出。
运行HTTP服务器
启动Web服务器前,请先设置OpenAI API密钥环境变量,并更新server.py和templates/index.html中的服务器IP地址和端口号。
$Env:API_KEY = "sk-proj-BLABLABLA..."
或
export API_KEY="sk-proj-BLABLABLA..."
然后运行:
python server.py
若只想测试图像描述提示,可使用test.py直接发送保存的图像而不涉及ESP32硬件。
测试结果
初次测试时,每10秒更新一次描述,效果基本符合预期,但描述内容包含了一些无关信息,如天气和地理位置猜测。调整提示词后,描述质量显著提升,但仍有改进空间。由于摄像头质量较低,生成的描述有时显得较为阴暗。整个测试过程中,约25分钟的步行花费了0.23美元API费用,平均每7秒描述一张图片。
下一步计划
我已经达到了学习Arduino开发以及低质量图像结合AI图像描述服务的目的。未来的产品化版本应将摄像头集成到眼镜上,并采用更高品质的摄像头。如果有开放API的眼镜能够持续提供高质量图像,我会继续开发此类解决方案,即使只是为了个人使用而非商业化。
欢迎联系我讨论项目或推荐能满足需求的硬件。