DeepSeek Harness Hub
← 返回列表

MonkeyChenLun/dsh-voice-plugin-NKM

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

DeepSeek HarnessDSHWeb 客户端语音对话插件:麦克风 → 语音识别STT → 自动发送 →…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/24 · 已提供中文文档

DeepSeek Harness(DSH)Web 客户端的语音对话插件:麦克风 → 语音识别(STT)→ 自动发送 → 助手回复 → 语音合成(TTS)朗读。零成本,默认无需 API 密钥。

综合分
30.5
GitHub 分
30.5
用户评分
★ Stars
4
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add MonkeyChenLun/dsh-voice-plugin-NKM
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/17(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-voice-plugin-NKM

DeepSeek Harness(DSH)Web 客户端语音对话插件:麦克风 → 语音识别(STT) → 自动发送 → 助手回复 → 语音合成(TTS) 朗读。

功能

- 🎤 语音输入:点击输入行麦克风按钮开始录音,识别文字自动写入 composer 并发送(与打字同一路径)。
- 🔊 语音朗读:助手回复完成后自动朗读(仅「语音模式」下朗读,打字输入不朗读)。
- ⚙️ 语音设置面板(齿轮按钮打开;右键麦克风打开快捷菜单):
- TTS 引擎选择:浏览器语音(默认)/ 本地语音模型(预留)/ 自定义 API;
- 声音、语速、音调、音量;自动朗读开关;打断模式(点击麦克风时 / 检测到新录音时);测试声音。
- 🛑 打断(Barge-in):TTS 朗读中点击麦克风或开始说话立即停止朗读。
- 🧹 TTS 文本过滤:朗读前去除 Emoji 与 Markdown 标记,保留自然语言、数字与普通符号。

运行成本与约束(重要)

本插件本体零成本、零 API Key、默认不调用任何外部服务:

| 引擎 | 成本 | 说明 |
|---|---|---|
| 浏览器语音(STT/TTS,默认) | 免费 | 使用浏览器内置 SpeechRecognition / SpeechSynthesis,无需任何配置或 Key |
| 本地语音模型(GPT-SoVITS / CosyVoice 等,预留) | 免费(自部署) | 接口已预留,模型加载尚未实现,需用户自行部署、本地运行 |
| 自定义 API | 由用户自担 | 用户自行填写地址/Key/模型;支持 4 种协议:JSON-base64(自建/通用)、OpenAI 兼容、ElevenLabs、Azure Speech。允许配置付费服务,但由此产生的一切费用、合规与安全风险由用户自行承担,与本插件无关 |

⚠️ 免责声明:本插件不捆绑、不默认接入任何付费服务;若用户在「自定义 API」中配置了付费或第三方服务,请自行确认其费用与合规性,后果自负。

架构

- TTS 采用 Provider 架构(src/client/tts/):
- types.ts:TtsProvider 接口(speak/cancel/isSpeaking/listVoices/onVoicesChanged);
- engine.ts:TtsEngine 门面——文本预处理、读取设置、选择 Provider,不含任何引擎逻辑;
- providers/BrowserTTSProvider.ts:免费浏览器引擎(默认);
- providers/LocalTTSProvider.ts:本地模型占位(预留);
- providers/ApiTTSProvider.ts:自定义 API(多协议:JSON-base64 / OpenAI 兼容 / ElevenLabs / Azure Speech)。
- STT 使用浏览器原生 SpeechRecognition(src/client/speech/recognition.ts)。
- 回复捕获基于会话快照(useSession 标准 prop 的 chat.nodes),带基线水位防历史误读(assistant-stream.ts)。
- UI 注册于 conversation.input.left 插槽;设置存于 localStorage(键 dsh-voice-settings)。

目录

dsh-voice-plugin-NKM/
├── package.json          # dsh.client 声明 + dsh.bundle(插入 voice-plugin 行)
├── cordis.patch.yml      # bundle patch:插入插件行
├── build.ps1             # esbuild 构建脚本(node half + 浏览器 half)
├── tsconfig.json
└── src/
├── index.ts          # node/host 半边(空 apply)
└── client/
├── index.ts      # 浏览器半边:注册 conversation.input.left 插槽
├── VoiceButton.tsx        # 麦克风按钮 + 打断 + 快捷菜单 + 设置接线
├── VoiceSettings.tsx      # 语音设置面板
├── assistant-stream.ts    # 助手回复快照 diff(纯函数)
├── icons.tsx              # SVG 图标
├── speech/                # STT + 设置 + 文本预处理
│   ├── recognition.ts     # 浏览器 SpeechRecognition 封装
│   ├── settings.ts        # 设置模型 + localStorage
│   └── preprocess.ts      # TTS 文本过滤
└── tts/                   # TTS Provider 架构
├── types.ts
├── engine.ts
└── providers/
├── BrowserTTSProvider.ts
├── LocalTTSProvider.ts
└── ApiTTSProvider.ts

加载方式(DSH 集成)

与部署内其他第三方插件同款(bundle + link:):

1. 构建:pwsh -File build.ps1(产出 lib/index.js 与 lib/client.js);
2. 在 profile 的 package.json 里加依赖
"@deepseek-ai/dsh-voice-plugin-nkm": "link:",
并把包名加入 dsh.profile.bundles;
3. 在 profile 的 node_modules 中建立指向本目录的链接(或 pnpm install);
4. 重启 dsh --profile web。插件行由 cordis.patch.yml 自动插入,
浏览器半边经 dsh.client 声明自动进入 window.__DSH_BOOT__。

构建与验证

- 安装依赖:npm install
- 构建:npm run build(跨平台,产出 lib/index.js 与 lib/client.js);Windows 本机也可 pwsh -File build.ps1
- 类型检查:npm run typecheck(tsc --noEmit)
- 测试要点:硬刷新后点 🎤 说话 → [dsh-voice] final/submitted → 回复后 speak 并朗读;
打字输入不朗读;右键/齿轮打开设置;打断、过滤、引擎切换按面板提示验证。

说明:包名使用 @deepseek-ai/ 前缀仅用于与本机 DSH 集成命名一致,本插件非 DeepSeek 官方包。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群