跳到主要内容
返回开发者精选

爷爷的睡前故事:用语音探索照片的 WebXR 故事书

作者:Tyress模型:MiniCPM-o 4.5

WebXR 睡前故事书,语音问答照片里的世界

Grandpa's Bedtime Stories(爷爷的睡前故事)是一本 WebXR 睡前故事书。一位带英国口音的虚拟爷爷会对着你给的一张静态照片讲故事,照片随后变成能在 AR 里探索的 3D 场景。这是 Build Small Hackathon 的参赛作品(Thousand-Token Wood 赛道),核心讲故事模型是 MiniCPM-o 4.5。

玩法​

从相册里挑一张照片,或者上传自己的。然后指着画面里任何东西提问,爷爷会讲他的看法:这个人穿的是什么、画面里在发生什么、他觉得这是哪个国家。问什么全看你。

使用要求​

  • 需要麦克风。你用语音和爷爷说话,他也用语音回答。
  • 建议戴耳机,或者找个安静的地方,免得爷爷的声音从扬声器出来又被麦克风收进去。
  • 麦克风和 WebXR 都需要 HTTPS(localhost 除外)。

添加你自己的照片​

点相册末尾的 + 格,从设备上传一张照片。爷爷会自动写一段说明文字,保存前你可以改。之后照片会被转成完整的 3D Gaussian splat,大概要一两分钟;第一次运行时 Modal 上的引擎需要预热,会更久。照片上限 20 MB / 4000 万像素,说明文字最多 400 个字符。

本地运行​

Bash
pip install -r requirements.txt
# Deploy the Modal GPU endpoints first (only needed once, or after changes):
modal deploy modal_sharp.py
modal deploy modal_minicpmo.py
modal deploy modal_app.py
# Copy .env.example to .env and fill in your Modal API keys and endpoint URLs.
# Then start the Gradio server:
python app.py
# Open http://localhost:7860 in your browser.

操作方式​

桌面与移动浏览器​

输入操作
拖动环绕视角,看看场景四周
滚轮放大 / 缩小
双指捏合放大 / 缩小(触控板 / 触摸屏)
点击快速选中一个区域
双击 + 拖动自己画选框

AR:头显(Meta Quest / Pico)​

输入操作
扳机键手柄对准后按下,画选框
握持键按住并移动,平移画面
双手握持双手捏合缩放
摇杆前推 / 后拉缩放
HUD(左下角)返回 · 清除选区 · 重置视角

也支持手势追踪:捏合代替扳机键,握拳代替握持键。

AR:手机(Android)​

输入操作
单指拖动画选框
点击快速选中一个区域
双指触控捏合缩放 · 滑动平移

和爷爷对话​

点 Start listening,然后大声说出你的问题,爷爷会用语音回答。也可以先点一下或框选画面的一部分,让他把注意力放在那块区域。

AR 能力与支持设备​

AR 需要设备支持 WebXR:Meta Quest 头显上的 Meta Quest Browser、Pico 头显上的 Pico Browser,以及装了 Google Play Services for AR、用 Chrome 打开的 ARCore 兼容 Android 手机。iPhone 和 iPad 的 Safari 不支持 WebXR AR,不过 Mozilla WebXR Viewer 这类实验性浏览器也许能用。用不了 AR 也没关系,同一张照片仍然可以在桌面或手机浏览器的查看器里看。

模型与技术栈​

OpenBMB MiniCPM-o 4.5​

核心讲故事模型是 OpenBMB 的 MiniCPM-o 4.5,一个 9B 参数的全模态模型。整个实时语音循环由它负责:图像和用户语音进去,爷爷的回答以文字和语音出来,中间不需要别的模型或接口(完全离网)。项目还用 MiniCPM-o 做视觉定位,认出画面里的人和物体,作为聚焦对象。MiniCPM-o 对边界框的支持是这个应用的关键,作者最初设想的能力,一个模型就能全部覆盖。

Apple Sharp​

3D 重建用的是 Apple 的 Sharp 模型,约 1B 参数的前馈模型。它把照片生成 .ply Gaussian splat,再构建成 .rad LoD 场景,照片于是变成在桌面和 AR 里都能快速浏览的 3D 空间。

Modal 在这个应用里干两件事:跑所有服务,以及在开发时做多轮模型对比,看哪种方案效果好(仓库里的 unused 文件夹就是这些尝试的记录)。Hugging Face 托管 Gradio/FastAPI 查看器,重活放在 Modal 的 GPU 端点上:MiniCPM-o 跑 A100 级别的后端,负责语音、推理和定位;SHARP 跑轻一些的 GPU 后端,负责照片转 splat。这样 Space 保持响应,同时又能用上浏览器和基础 Space CPU 跑不动的模型。

前端库​

应用主体基于服务端的 Gradio(gr.Serve),视觉部分用 Spark、three.js 和原生 WebXR,语音检测用 vad-web。

相关链接​

项目作者:Tyress。用到了 MiniCPM-o 4.5、Apple Sharp 和 Modal,代码以 Apache-2.0 许可发布。

项目信息

基于模型
MiniCPM-o 4.5
作者
Tyress