DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

CatOlin-Zhang /

CatOlin-Zhang/dsh-camera-bridge

Verified

DSH camera bridge plugin

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@8700d1c5

摄像头桥

🎥 摄像头桥

让 DSH 会听、会看、会盯着你的锅。

对着电脑说话 → 本机转成文字 → 当成你这一轮的话送进会话 → 它回 → 朗读桥念出来。 摄像头一直开着,YOLO 认画面里有什么;模型拿不准时,自己看一张快照。

名字里的「桥」就是这个意思:麦克风和摄像头在电脑这边,说话和看东西在会话那边,中间靠它接起来。


它由几部分组成

是什么 干什么
① DSH 插件(这个仓库) 住在 DSH 里 右下角小卡片、设置页、四个工具、做饭模块
② 两个 Python worker 本机子进程 asr_worker.py 转写、yolo_worker.py 认物
③ 外部依赖 你自己装的 ffmpeg 抓设备、Python 跑推理、模型文件

「念出来」不是它的事:出声是另一个独立插件 dsh-tts-bridge(朗读桥)。 本项目没有打包它,只在运行时调两个 HTTP 接口问「在不在念 / 停一下」。 不装也能用:听、看、认、做饭都正常,只是不出声。


需要什么

  • DSH(DeepSeek Harness),带 Web 界面
  • ffmpeg:抓麦克风、解视频流(装好加进 PATH,或在面板里填绝对路径)
  • Python 3.10+:跑两个 worker
  • 模型(不随包分发,见下方「装法」第三步)
  • 一块能用的摄像头 / 麦克风

想让它出声的话,再装 dsh-tts-bridge + 它的浏览器扩展。


适配 DSH 版本

这个插件跟着 DSH 走:作者这边跑的是最新版 DSH,最新版插件永远是给最新版 DSH 写的。 遇到「不适配」先升级 DSH 再试。

当前实测:插件 0.9.0-beta.1 ↔ DSH 桌面版 2026-11


装法

第一步:装插件

在 DSH 里(设置 → 插件 → 安装),或者直接说:

帮我装 C:\path\to\dsh-camera-bridge

装完重启一次 DSH,右下角会出现 🎥 摄像头桥 卡片,设置里多一页「摄像头桥」。

第二步:装 Python 依赖

<你的 python> -m pip install -r tools/requirements.txt

只想听、不看画面的话,可以不装 ultralytics(省一大坨 torch)—— 但「眼睛」相关的自动识别会不可用,手动拍快照、你自己看图仍然能用。

第三步:放模型

东西 放哪儿 大小
SenseVoice <DSH_HOME>/camera-bridge/models/sense-voice/(model.int8.onnx + tokens.txt) ~230 MB
YOLO-World <DSH_HOME>/camera-bridge/models/yolov8s-worldv2.pt ~25 MB
CLIP ViT-B/32 首次用开放词表时自动下载到 ~/.cache/clip(需联网) ~338 MB

放完点设置页的「跑一次自检」——它会直接告诉你缺哪一样、该放哪儿。


怎么用

右下角的小卡片

按钮 干什么
📷 开/关画面(面板里实时放 MJPEG)
👁 开/关持续识别(YOLO 一直在跑)
👀 开/关「盯着看」:自己判阶段,出事才开口
开始听 / 停止 麦克风开关(点了才会听)
详情 选会话、看耗时、看日志

卡片整张按住就能拖,位置记得住。

设置 → 摄像头桥

区块 内容
配置 送到哪个会话、麦克风、摄像头、ffmpeg/python 路径
挂载的服务 长在摄像头下面的模块(目前是「做饭」)
自检 缺什么、能不能跑,一眼看清

做饭

在「挂载的服务 → 做饭」里填想做什么菜(比如「番茄炒蛋」),点开始做:

  1. 摄像头开始盯
  2. 菜谱由模型查/编,用 recipe_import 导进状态机
  3. 之后按步骤跟,到点或到状态就开口提醒

也可以纯语音:说「我想做番茄炒蛋」「帮我看着锅」,模型会自己调工具。

四个工具(模型自己用)

工具 作用
look_camera 拍一张,返回 jpg 路径(模型再 read_image 真的去看)
camera_state 一句话摘要:画面里认出了什么
watch_camera 开/关盯着看
recipe_import 导入/查询/清空菜谱

配置

~/.dsh/camera-bridge.json(面板里改也行,改完即时生效):

键 默认 说明
micDevice 空 麦克风;空 = 自动挑(会跳过虚拟声卡)
videoDevice 空 摄像头;空 = 自动挑
ffmpegPath 空 空 = 自动找,找不到用 PATH
pythonPath 空 同上
silenceMs 600 静音多久算说完。调小更快,容易把停顿切成两句(实测 400 时 250ms 词间停顿安全、500ms 会切)
maxSpeechMs 15000 单句上限
halfDuplex true 朗读出声时不听(防自问自答)
ttsBase /dsh-tts-bridge 朗读服务的地址。改它就能换成别的本地 TTS,留空 = 不用
duplexPollMs 200 多久问一次朗读服务在不在念
interruptRms 0.08 抢话门槛
interruptMs 400 抢话要持续多久才算(防回声误打断)
autoSend true 识别完自动送进会话
targetSession 空 送到哪个会话
lookClasses 一串英文 开放词表,改完下次识别就生效
lookHz 2 每秒认几次
cookDish 空 做饭模块里填的菜名

换掉朗读桥(用别的本地 TTS)

本项目默认对接朗读桥,但并不绑定它。 插件只用到朗读服务的两件事:

接口 方法 应返回 用途
<base>/status GET {"playing": true, "waiting": 0} 判断「现在在不在念」→ 决定要不要闭麦
<base>/stop POST 任意(200 即可) 抢话时把正在念的停掉

所以要换成任何本地 TTS(edge-tts / piper / Windows SAPI / 自己写的皮),只要:

  1. 起一个本机 HTTP 服务,按上表实现这两个接口
  2. 把配置里的 ttsBase 改成它:
    • 同源路径:/my-tts(挂在 DSH 自己的 webServer 上)
    • 或者完整地址:http://127.0.0.1:9000/tts(独立端口也行)

改完刷新卡片即可,不用改代码。

最省事的办法:把 ttsBase 留空。 这时插件完全不去问朗读服务——听、看、认、做饭全部照常,只是:

  • 不会「它念的时候自动闭麦」(可能把自己的声音听成你说的话)
  • 不会「抢话打断」

想要完整的语音对话体验,还是建议装朗读桥;只想「说话 → 会话」的话,留空就够了。


数据在哪

~/.dsh/camera-bridge/
├── timing.jsonl          每一轮耗时(判停 / 转写 / 送达 / 总)
├── clips/                录音临时文件(转写完即删,不留档)
├── shots/                最近 20 张快照
├── recipes/current.json  当前菜谱
└── models/               SenseVoice / YOLO 权重

常见问题

现象 原因 / 怎么办
自检说缺 ffmpeg / python 装了没加进 PATH。在设置页填绝对路径,或重装并勾选「加入 PATH」
自检说缺模型 看自检里写的路径,把文件放进去;路径在面板上能改
麦克风抓不到 设备是独占的,别的软件占着就用不了。关掉那个软件再点开始听
摄像头黑屏 / 起不来 同上,独占。另外「Windows 设置 → 隐私 → 摄像头」要允许桌面应用访问
说了没反应 看卡片上的「刚才听到」。如果是空白,多半是麦克风选错了
一直「正在听你说…」 环境太吵,VAD 一直判成有声。调大 minSpeechMs 或换个安静点的地方
不出声 那是朗读桥的事:装 dsh-tts-bridge、浏览器扩展、DeepSeek 页面开着
念一半自己停了 可能是回声误触抢话。调大 interruptMs 或 interruptRms
第一次用眼睛很慢 在下载 338MB 的 CLIP,只发生一次
阶段一直不动 画面里没有可判的东西(比如镜头对着墙)。它有意识地不瞎编
换词没生效 词表改完要等下一次识别;如果 vocab 降级成 80 类,说明 CLIP 没准备好

兼容性

平台
Windows ✅ 主支持(dshow 设备枚举最完整)
macOS / Linux ⚠️ 能用,但设备名要手填,自动挑可能不准
有 NVIDIA GPU ✅ 推荐,单帧 16–25ms
只有 CPU ✅ 能跑,慢一些

关于隐私(请读一下)

这个插件会用到你的摄像头和麦克风,所以要说清楚:

  • 说话:音频只在本机转成文字,不上传;转写完录音文件立即删除(clips/ 不留档)
  • 画面:帧只在本机解码 + YOLO 识别,不会自动上传
  • 但:当你(或模型)用 look_camera 拍了一张、再 read_image 去读它时, 那张图片会被送进模型上下文——这一步等于上传给模型服务商,和你手动发图一样
  • 快照存在 ~/.dsh/camera-bridge/shots/,只留最近 20 张,随时可以删
  • 摄像头/麦克风随时可关(卡片上的按钮),不用了就点掉

引用与致谢

本项目默认对接 朗读桥 dsh-tts-bridge(作者 Yuuyuko-uu)。

它负责「把会话里的回复念出来」这一半 —— 具体做的事是:盯着你选的会话,把说完一整轮的文字排进队列, 再通过浏览器扩展,在你自己登录的 DeepSeek 网页里点它的「朗读」按钮,用你自己的账号出声。

说明几点:

  • 朗读桥不在这个仓库里,也不会被 npm 包带上;本项目只是在运行时按 ttsBase 调它的两个接口
  • 它的许可是 「Yuuyuko-uu 插件许可 1.0」(非 OSI 开源许可,要求再分发时注明原作者与仓库)
  • 所以:如果你再分发本项目,请保留这段署名和链接
  • 不想用它?见上面「换掉朗读桥」

另外,本项目的界面风格参考了朗读桥的 README 排版。


许可

本项目按 GNU AGPL v3.0 或更高版本发布 —— 见 LICENSE。

选它是因为运行时依赖 ultralytics(YOLOv8 / YOLO-World),它也是 AGPL-3.0,用同一套许可就没有冲突。 你可以自由使用、修改、再分发,但分发修改版时也要开源。

依赖清单、模型许可、以及为什么放弃 ONNX 方案,见 THIRD-PARTY-NOTICES.md。


本项目与深度求索公司无关,非官方工具。

—/ 5

No ratings yet

Verified DSH bundle

Commit 8700d1c50202

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout