dsh-voice:DSH 上的本地英译中同传、会议记录与纪要

前言

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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜