前言¶
DSH 的理念是「一切皆插件」,但要在会话里用上音频,常规做法是自己搭一套 ASR 服务再写胶水代码。dsh-voice 把这件事包成一个插件:麦克风实时英文字幕加中文译文、会议记录自动落盘、一键生成结构化中文纪要、导出 Obsidian。识别在本地完成(Qwen3-ASR,MLX 加速),只有英文文本会发给 DeepSeek 做翻译和总结,音频不上传。
插件维护者是 scarf1985566475-cloud,托管在 GitHub scarf1985566475-cloud/dsh-voice,社区目录 SkillHub 收录为「工作流」分类。下面按功能、安装、用法、注意事项介绍。
这是什么¶
一句话定位:给 DeepSeek Harness 加一套耳朵、记性和笔记本,覆盖「录音 → 转写 → 英译中 → 会议记录 → 纪要 → Obsidian」这条链路。
它解决的具体问题:
- 实时英译中同传:讲者还在说,字幕已经在滚动,而不是等整句说完再出结果。
- 会议不丢内容:每次开始收听自动建档,逐句追加落盘,进程被杀也能读回已听到的部分。
- 纪要有结构:输出 JSON 再本地渲染 Markdown,待办是表格,未知信息写「未提及」而不是猜。
- 离线文件同链路:已经录好的录音、通话、视频音轨走同一套处理,产出格式一致。
适用范围明确是 macOS / Apple Silicon。模型、运行时、依赖都围绕这个平台。
核心功能¶
| 能力 | 说明 |
|---|---|
| 录音转写 | 任意 ffmpeg 可读的音频/视频 → 英文文字(含时间轴),可顺带翻译 |
| 同声传译 | 麦克风实时英文字幕 + 中文译文,在 DSH Web GUI 里直接看 |
| 会议记录 | 每次同传会话自动存档:逐句中英文 + 时间轴 + 元数据,落盘可回溯 |
| 会议纪要 | 一键把记录整理成中文纪要:概览 / 关键要点 / 决定事项 / 待办(含负责人)/ 风险 |
| 导出 Obsidian | 纪要 + 全文写成 Obsidian 原生笔记(frontmatter、双链可用、待办是真正的 checkbox) |
识别引擎是 Qwen3-ASR-0.6B-4bit(mlx-community/Qwen3-ASR-0.6B-4bit,Apache-2.0),模型目录 models/qwen3-asr-0.6b-4bit/(约 682MB),在本机 MLX 上推理。旧的 Whisper turbo / distil / small 已移到 models/_retired/,不再参与任何路径。README 给出的同台 M1(8GB)对比数据:Qwen3-ASR 加载 0.6–1.0s,常驻 RSS 约 330MB,首次解码峰值约 1.5GB,中文 TTS CER 3.9%,20s 中文 RTF 0.05–0.1。
同声传译的「同声」关键在提交时机:会话持续重解码一小段滚动窗口,句尾落在音频前沿之后 1 秒以上的句子(重新解码也不会变)就立刻提交并翻译。停止时有握手——客户端发 flush,服务把未提交窗口解码、提交、翻译完,回 flushed 后客户端才关连接,避免最后一句译文丢失。
安装与启用¶
插件包只带 Node 侧面板与守护逻辑,Python 后端必须装一次。从源码或插件包安装都是两步。
第一步,装 Python 后端到独立 venv,与 DSH 自带环境隔离:
python3 -m venv ~/.dsh-voice/venv
~/.dsh-voice/venv/bin/pip install -e /path/to/dsh-voice
~/.dsh-voice/venv/bin/dsh-voice download-model # 约 0.7GB(Qwen3-ASR-0.6B-4bit)
第二步,装 DSH 插件包:
dsh plugin --profile web add dsh-voice-interpreter
装好后让守护进程找到后端。写入 shell 启动文件(GUI 启动时生效):
export DSH_VOICE_PROJECT=/path/to/dsh-voice # 插件安装目录
export DSH_VOICE_PYTHON=$HOME/.dsh-voice/venv/bin/python
也可以不设环境变量,改 profile 的 cordis.patch.yml,在 voice-interpreter 那行的 config 下写 projectDir / python。刷新 DSH 页面后,会话上方出现「同传」标签;点「开始收听」时插件会自动拉起服务(autoStart: false 则只做健康检查,不托管进程)。
典型用法¶
安装目录里已经建好环境时,先自检,再起服务:
.venv-audio/bin/dsh-voice doctor # 自检:ffmpeg / 模型 / 翻译 Key / 会议记录
.venv-audio/bin/dsh-voice serve
# 打开 http://127.0.0.1:8768/ 可以直接测试麦克风
不开麦克风也能验证整条链路:
.venv-audio/bin/dsh-voice selftest --live
在 DSH Web GUI 中,会话上方切到「同传」标签页,有两个模式:实时模式点「开始收听」,边听边出字幕,同时自动记录本次会议;会议记录模式左侧是历史会议列表,选中后看全文或纪要,点「生成纪要」出中文会议纪要。
已经录好的会议走同一条链路:
.venv-audio/bin/dsh-voice ingest ~/Downloads/standup.m4a --title "每日站会"
实时会话默认还会把麦克风音频存成 meetings/<id>/audio.wav(16kHz 单声道,约 115MB/小时),即使关掉实时字幕也会继续录音。停止后可离线重转写:
.venv-audio/bin/dsh-voice retranscribe 20261028-153000-000-abcd
.venv-audio/bin/dsh-voice retranscribe 20261028-153000-000-abcd --no-translate # 只要英文
重转写与实时会话、ingest 走同一个 Qwen3-ASR 模型,只是喂整段离线 WAV(30s 分块、自动语言识别),一般比实时字幕更准。
落盘结构为 meetings/<id>/:meta.json(标题/时长/段数/纪要状态)、transcript.jsonl(逐句追加日志,不重写)、audio.wav(可选)、summary.md / summary.json(会议纪要)。transcript.jsonl 一条一句,译文作为独立一行按 id 折叠回句子;损坏的尾行、找不到句子的孤儿译文会被跳过,而不是让整份记录失败。
服务端提供 HTTP 接口,便于脚本化:
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /meetings?limit=N |
会议列表(标题、时间、时长、段数、纪要状态) |
| GET | /meetings/{id} |
单个会议:元数据 + 逐句记录 + 纪要 |
| GET | /meetings/{id}/transcript?bilingual= |
纯文本全文 |
| POST | /meetings/{id}/summary |
生成纪要({"force":true} 强制重算;已有则直接返回缓存) |
| POST | /meetings/{id}/title |
重命名会议 |
| DELETE | /meetings/{id} |
删除会议 |
| POST | /recordings/summarize |
把已有录音文件变成会议记录 + 纪要 |
另外插件通过 MCP stdio 暴露 11 个工具,覆盖转写/翻译/录音/设备/状态,以及会议列表、读取、生成纪要、处理录音文件、改名。
适用场景与注意¶
适合这两类人:一是想在 DSH 会话里做英文内容的实时中文旁白,二是想把英文会议或讲座自动沉淀为可检索、可导出的中文记录。前提机器是 macOS / Apple Silicon,能跑 MLX。
使用时的注意点:
- 插件以当前 dsh 进程的权限运行,安装前应先检查源码与许可证。本插件
package.json标注 MIT,识别模型为 Apache-2.0,但两者分开,具体以仓库内 LICENSE 文件为准。 - Python 后端是本插件唯一的手工步骤,插件包不代装;不设环境变量时要改
cordis.patch.yml。 - 实时路径每句调用一次翻译,文件路径(
ingest)每 8 句批量一次——延迟预算不同,策略不同。 - 实时面板超过 400 句只保留最近 400 句,列表顶部会提示并提供会议存档入口。
- 麦克风电平持续 3 秒为 0 时,状态会变成「未检测到声音 · 检查麦克风」。
社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系,SkillHub 收录不代表官方背书。
结尾¶
dsh-voice 的价值在于把本地 ASR、实时英译中、崩溃安全的会议记录和结构化纪要整合成一个 DSH 插件,识别不出本机,音频不上传,英文文本才交给 DeepSeek。如果需求正好在这条链路上,可以从上面的两步安装开始。
目录页:https://www.skillhub.cn/plugins/scarf1985566475-cloud/dsh-voice
GitHub:https://github.com/scarf1985566475-cloud/dsh-voice