🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

语音输入 KotDath/dsh-voice

DeepSeek Harness
KotDath38 天前有提交已提供中文文档扫描:含敏感能力

点麦克风说话,自动转写并填入或发送消息

29.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add KotDath/dsh-voice
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]—
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
数据截至 2026/10/02·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 38 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 2 处,展示前 2 条)
  • 读取本地文件
    lib/index.js:694
    const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
  • 发起网络请求
    lib/client.js:65
    res = await fetch(path, {
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-fs@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-invariants@deepseek-ai/dsh-shell
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 点击麦克风语音输入
  • 自动转写文字
  • 填入或发送消息

DSH 插件,用来做语音输入

README

由 DeepSeek 最新模型翻译生成
dsh-voice DeepSeek Harness Web GUI 的语音输入——作为官方插件包。 麦克风按钮(SVG 图标)位于输入框发送按钮旁边。 点击它会在输入框上方弹出 ChatGPT 风格的录音“胶囊”: [ ✕ 取消 ] [ 波形 ] [ ⏹ 停止 ] [ ↑ 发送 ] - ✕ —— 取消录音; - ⏹ —— 停止、转写并将文本插入输入框(不发送); - ↑ —— 停止、转写并立即发送到聊天。 波形是一排竖条:新信号从右侧进入,历史向左淡出,变成一条暗淡的虚线基线(类似 ChatGPT 的语音模式)。 安装 要求 - 一个正在运行的、带 Web GUI 的 DeepSeek Harness(Node.js 快速启动: npx @deepseek-ai/dsh web,默认 http://127.0.0.1:3080)。 - 在主机上:bash、curl(引擎/模型下载)、ffmpeg(音频转换)。transcribe.cpp 引擎会根据操作系统/架构自动从本仓库的 Releases 下载——或者如果已存在 transcribe-cli 二进制文件,则从 PATH / 同级 .engine/ 目录采用。 - 一个可通过 HTTPS 或 localhost 访问麦克风的浏览器。
展开完整文档(README 剩余 1 节)
dsh-voice

DeepSeek Harness Web GUI 的语音输入——作为官方插件包。

麦克风按钮(SVG 图标)位于输入框发送按钮旁边。
点击它会在输入框上方弹出 ChatGPT 风格的录音“胶囊”:

[ ✕ 取消 ] [ 波形 ] [ ⏹ 停止 ] [ ↑ 发送 ]

- ✕ —— 取消录音;
- ⏹ —— 停止、转写并将文本插入输入框(不发送);
- ↑ —— 停止、转写并立即发送到聊天。

波形是一排竖条:新信号从右侧进入,历史向左淡出,变成一条暗淡的虚线基线(类似 ChatGPT 的语音模式)。

安装

要求

- 一个正在运行的、带 Web GUI 的 DeepSeek Harness(Node.js 快速启动:
npx @deepseek-ai/dsh web,默认 http://127.0.0.1:3080)。
- 在主机上:bash、curl(引擎/模型下载)、ffmpeg(音频转换)。transcribe.cpp 引擎会根据操作系统/架构自动从本仓库的 Releases 下载——或者如果已存在 transcribe-cli 二进制文件,则从 PATH / 同级 .engine/ 目录采用。
- 一个可通过 HTTPS 或 localhost 访问麦克风的浏览器。

安装到某个 profile(所有会话)

dsh plugin --profile web add github:KotDath/dsh-voice

如果改用本地测试构建:

npm install && npm run build
dsh plugin --profile web add file:/path/to/dsh-voice

然后重启 web 进程(dsh web)——新的插件行会在启动时被加载。
之后该插件在该 profile 的每个会话中都处于活动状态:无需按会话执行 cordis_define,也无需修改源码。

该包声明了 dsh.bundle.patch(→ cordis.patch.yml,一行 id: voice, name: dsh-voice)和 dsh.client(→ 浏览器端 lib/client.js)。dsh plugin 会用 pnpm 将其安装到 profile 中,并自动协调 dsh.profile.bundles。

卸载:

dsh plugin --profile web remove dsh-voice

首次运行流程(面向最终用户)

1. 打开 Settings → Voice —— 引擎要么显示 ✓ installed,要么可通过一键点击下载(“Download engine”,由 CI 构建的 releases)。
2. 从目录中选择一个模型,如果它未标记为 ✓,则按 Download。
3. 使用输入框发送按钮旁边的麦克风按钮。
4. 录音 → ✕ 取消 / ⏹ 插入 / ↑ 发送。

架构

[客户端:浏览器] [主机:Node]
┌─────────────────────────────────┐ fetch ┌────────────────────────────────┐
│ slot conversation.input.right │ ──────────► │ /api/voice/transcribe │
│ • MediaRecorder (webm/opus) │ base64+meta │ • base64 -d → file │
│ • AnalyserNode → waveform │ │ • ffmpeg → 16 kHz mono wav │
│ • timers, states │ ◄─────────── │ • provider: │
│ inputActions.setDraft + submit │ { text } │ tcpp: transcribe-cli │
└─────────────────────────────────┘ │ local: whisper-cli -oj │
│ api:curl 多部分表单 │ │ codex:ChatGPT 后端 │ │ ($CODEX_HOME auth.json) │ │ • 临时文件清理 │ └────────────────────────────────┘

与早期的动态插件版本不同,这两部分不使用 harness.handle/host.call 桥接:Node 部分在 harness webserver 上注册普通的 HTTP 端点(/api/voice/),浏览器部分则通过 fetch 调用它们。这正是其他静态 bundle 插件(例如 dsh-track)所使用的模式。

转录提供方

可在 设置 → 语音 中切换(状态保存在内存中,这符合插件 bundle 的预期行为)。

| 提供方 | 工作方式 | 要求 |
| tcpp(默认) | transcribe.cpp 引擎(与 Handy 内部使用的是同一个)——一个静态的 transcribe-cli 二进制文件(约 5 MB)。包含 67 个模型的目录(GigaAM v3 CTC/RNN-T/E2E、Voxtral Mini 3B/4B/24B、Whisper tiny…large-v3(+turbo)、Qwen3-ASR、Parakeet、Canary、Moonshine、Nemotron、Granite、SenseVoice、Fun-ASR、Cohere、MedASR……)。模型选择下拉框,一键从 Hugging Face 下载并显示进度 | 引擎(在 Win/macOS/Linux 上自行下载) |
| codex | 本地 Codex CLI 登录背后的 ChatGPT 订阅:录音会使用 $CODEX_HOME/auth.json 中的 OAuth 令牌发送到 ChatGPT 后端语音转文本端点 | 主机上已执行 codex login;无需 API 密钥,无需下载模型 |
| local | whisper.cpp(whisper-cli)+ 一个 GGML 模型 | 二进制文件和模型的路径;离线 |
| api | OpenAI 兼容的 POST /v1/audio/transcriptions(多部分表单) | URL、API 密钥、模型名称(gpt-4o-transcribe、whisper-1、Groq、本地 faster-whisper 服务器等) |

Codex / ChatGPT 订阅

如果主机已使用 ChatGPT 套餐登录 Codex CLI,那么该订阅就可以转录语音输入——无需下载任何内容,也无需 API 密钥:

1. 在主机上执行 codex login(一次),然后进入 设置 → 语音 → 转录提供方 → Codex。面板会显示账户、套餐和令牌到期时间,而 测试 会通过真实路径发送一秒静音,一键验证登录、端点和 ffmpeg。
2. 照常录音。整段录音(最多 5 分钟上限)会作为单个 16 kHz WAV 请求发送——与本地模型不同,该端点会在数分钟内保持上下文,因此长听写不再需要 tcpp 所用的 20 秒分块。

其行为方式如下:

- 凭据:主机会读取 $CODEX_HOME/auth.json(默认 ~/.codex/auth.json),并通过 DSHVOICE_CODEX_TOKEN 环境变量将访问令牌传递给 curl——绝不出现在 argv 中,令牌也绝不会到达页面(设置中只能看到账户、套餐和过期)。该文件可以在高级中指向其他位置。
- 它永远不会被写入。 插件不会刷新或重写登录信息:ChatGPT 刷新令牌会轮换,而第二个写入者会使 Codex CLI 自身所依赖的登录失效。如果令牌过期,面板会提示——运行任意 codex 命令(或 codex login)即可刷新它。
- 语言:该端点接受具体的语言代码(对于 ru/en/uk/de,会转发 Language 设置)。Auto 在那里不是有效值,会被直接省略,这正是自动检测能够生效的原因。
- 错误会被解码,而不是原样抛出:登录过期会报告 401 以及修复方法,Cloudflare 拦截会报告 403,速率限制会报告 429。
- API 密钥模式下的 auth.json 会按此情况报告——该模式无法使用订阅端点。

在本机实测:一段 5 分钟的俄语听写在一个请求中约 68 秒完成转写,一段 50 秒的约 13 秒完成。

transcribe-cli 引擎:开箱即用,无需 Handy 应用

- 该插件不依赖 Handy 应用程序:ASR 引擎是开源库 handy-computer/transcribe.cpp。
- 该二进制文件通过“Download engine”按钮从本仓库针对当前操作系统/架构的 GitHub Releases 下载(transcribe-cli-{platform}-{arch},Windows 上为 .exe)。
- 如果 PATH 中或配置的引擎路径旁边已经存在 transcribe-cli,插件会采用它(将其复制到自己的目录中)——无需下载。发现是显式的;不会扫描文件系统。
- 当发布了 .sha256 附属文件时,下载内容会据此校验(尽力而为的完整性检查)。
- 插件数据(引擎、模型、临时文件)位于 DSH 进程启动目录(.engine/、.models/、.tmp/)——沙箱只允许在那里写入。路径会在设置中显示。
- 发布二进制文件由 CI 构建(.github/workflows/build-engine.yml):Linux x86_64/arm64、macOS arm64/x86_64、Windows x86_64。
- 模型是来自 Hugging Face(handy-computer)的 GGUF 文件;目录内嵌在插件中(大小决定进度条)。Handy 已下载到 HF 缓存中的模型会被自动识别——无需重新下载。
- 长录音:许多模型有约 25 秒的窗口(例如 GigaAM),会静默丢失长录音的其余部分。插件会将超过 22 秒的音频拆分为 20 秒的片段,并在一次批处理运行中转写它们(单次模型加载,全文拼接)。

在本机验证:GigaAM v3 E2E-RNN-T——30 倍实时,Voxtral Mini 4B Realtime——1.7 倍实时(20 秒俄语音频),质量极佳。

API 密钥与 Codex 凭据处理

OpenAI 兼容的 API 密钥是仅限主机端的:它通过自己的端点(POST /api/voice/api-key)设置,绝不会回显到页面(设置中只显示是否已设置密钥),并通过 DSHVOICE_API_KEY 环境变量——绝不出现在 argv 中。

Codex 提供程序对 ChatGPT 登录应用相同的规则:宿主读取 $CODEX_HOME/auth.json,将访问令牌作为 DSHVOICE_CODEX_TOKEN 传递(同样绝不出现在 argv 中),仅向页面暴露账户、套餐和到期时间,并且从不写入该文件。

开发

npm install # dev deps (uses .npm-cache/ if ~/.npm is read-only)
npm run build # gen-catalog → tsc → tsdown (lib/index.js + lib/client.js)
npm test # both Node suites (plain Node, no browser)

npm test 运行 test/run.mjs(bundle/catalog 契约)和 test/codex.mjs
(Codex 提供程序,挂载在伪造的 Cordis 上下文上——默认离线)。
添加 DSH_VOICE_LIVE=1 还可使用本宿主的 Codex 登录驱动真实的 ChatGPT 后端:

DSH_VOICE_LIVE=1 node test/codex.mjs

可安装的产物是位于仓库根目录的 npm 包。完整代理说明(布局、端点、安全规则、故障排除)见 AGENTS.md。

仓库布局

src/plugin/ — Node half (index.ts, HTTP /api/voice/) + browser half (client/: state, recorder, waveform, components, settings, voice.module.css) + generated catalog scripts/gen-catalog.mjs — injects models.json into generated-catalog.ts tsdown.config.ts — node ESM bundle + browser CJS-closure bundle cordis.patch.yml — the bundle's composition patch (one row: id voice) package.json — dsh.bundle.patch + dsh.client declarations models.json — model catalog (source of truth) test/ — Node suites: run.mjs (bundle contract) + codex.mjs (Codex provider; DSH_VOICE_LIVE=1 adds real API calls) .github/workflows/build-engine.yml — CI: plugin tests + 5-platform engine builds AGENTS.md — agent install/update instructions README.md — this document

已发布的版本通过 git 标签固定(v0.4.0、……)。

v1 限制

- 录音使用浏览器的 MediaRecorder(需要 HTTPS 或 localhost)。
- 转录为批处理(录音结束后);流式部分结果已在计划中。
- 上游 whisper.cpp 不支持 Handy 的 Qwen3-ASR GGUF(需要 transcribe-cpp 引擎);标准 ggml 模型(tiny…large-v3)可正常工作。
预览分享卡片长什么样 ↓KotDath/dsh-voice
分享 · DeepSeek Harness Hub
KotDath/dsh-voice

点麦克风说话,自动转写并填入或发送消息

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部