🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

Zhangbo-cn/dsh-voice-input-plugin

DeepSeek Harnessspec-screened扫描:低风险在 GitHub 查看 ↗
⚠ 装前注意

为 DeepSeek Harness 提供的 Composer 语音控制:在 composer…

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/8/26 · 已提供中文文档

DeepSeek Harness Web 的 Composer 麦克风:轻触即可监听实时转写,按住即可说话,并带有主机 Edge TTS 回复朗读,在模型生成时流式播放,朗读期间暂停回声,轻触即可停止。

综合分
33.8
GitHub 分
33.8
用户评分
—
★ Stars
5
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Zhangbo-cn/dsh-voice-input-plugin
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 4 天前真实安装成功(L4 · 真实安装)
是什么
dsh 原生插件 · tool
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
更新放缓:最近一次提交在 31 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/22
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@zhangbo-cn/dsh-client-ui-voice-input(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/20 18:47:10

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-invariants
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-client-ui-voice-input

为 DeepSeek Harness 提供的 Composer 语音控制:在 composer 工具栏中放置一个极简的线性麦克风按钮,将你的语音转换为文本——支持点击监听模式(连续、实时逐字流式输入、随时发送)和按住说话语音聊天模式(松开即发送,回复朗读)。零 API 密钥:识别通过 Web Speech API 在浏览器中运行;回复朗读使用宿主的 Edge TTS(/api/tts),并以浏览器 speechSynthesis 作为回退。

dsh-plugin · TypeScript · React

功能特性

- 点击监听:点击麦克风,开始说话——文本实时流式输入到草稿中(逐字输入),即使在静默时麦克风也会持续监听,你可以随时发送或继续添加语音。再次点击即可停止。
- 静默自动发送 (可选):配置 autoSendOnSilenceMs 后,点击监听变为免手动操作——当你停止说话达到配置的时间窗口后,消息会自动发送(“点击、说话、走开”)。继续说话会取消待发送。
- 按住说话:按住以录制语音聊天消息,松开即发送;助手的回复会被朗读——优先使用宿主 Edge 神经 TTS(/api/tts),浏览器 speechSynthesis 作为回退。
- 跨静默连续识别:每个识别片段都会自动重启,因此监听永不中断。
- 尊重 composer:语音会追加到草稿中(保留原有内容);发送会干净地清空草稿,不会重新填入旧文本;发送后监听会在新的识别器上继续进行。
- DeepSeek 蓝色监听状态:监听时图标以 DeepSeek 品牌蓝色脉动;无边框线性图标,简洁无杂乱。
- 可配置:识别语言(默认 zh-CN)和临时结果。

安装

该包是一个可安装的 dsh.bundle,已在 npm 上发布为 @zhangbo-cn/dsh-client-ui-voice-input。一条命令:

dsh plugin add @zhangbo-cn/dsh-client-ui-voice-input

需要 0.1.1+ 版本。 0.1.0 将浏览器 bundle 注册在了错误的 ModuleLoader id(@deepseek-ai/...)下,因此 Harness 会失败并报错 loaded without registering "@zhangbo-cn/dsh-client-ui-voice-input"。请升级 / 重新安装,然后强制刷新 Web UI。

(它也可以通过 dsh plugin add github:Zhangbo-cn/dsh-voice-input-plugin 从 GitHub 仓库安装。)

如果你从 DeepSeek Harness 检出进行开发,可以直接将其挂载到 web-app 浏览器名册(packages/bundle/web-app/cordis.patch.yml)中:

- id: ui-voice-input
name: '@zhangbo-cn/dsh-client-ui-voice-input'

为了可靠的回复朗读,还需挂载宿主 Edge TTS 能力(@deepseek-ai/dsh-tts-edge),它会注册 /api/tts:

- id: tts-edge
name: '@deepseek-ai/dsh-tts-edge'
没有它,回复朗读仍然可用,但会回退到浏览器的 speechSynthesis(不够自然,在 Chrome 上闲置一段时间后偶尔会静默)。

然后使用仓库的 tsdown 预设构建客户端包:

pnpm --filter @zhangbo-cn/dsh-client-ui-voice-input run bundle

用法

刷新 Web UI 后,编辑器工具栏会显示一个线性麦克风按钮。

语音输入(点按)

1. 点击麦克风 → 图标变为 DeepSeek 蓝色并脉动(正在聆听)。
2. 说话 → 文本会逐字实时出现在输入框中。
3. 随时使用编辑器的发送按钮发送;继续说话可添加更多内容。
4. 再次点击麦克风以停止监听。
5. 设置 autoSendOnSilenceMs 后,停止说话达到该时长会自动发送消息——麦克风会停止监听,因此你无需额外点按。

语音聊天(长按)

1. 按住麦克风(超过约 250 毫秒)并说话。
2. 松开 → 你的消息即被发送。
3. 助手的回复会自动朗读出来。

任意发送后的回复朗读

在使用麦克风后(5 分钟内)进行的发送——长按或点按监听 + 编辑器发送按钮——会为下一条助手回复启用回复朗读。未在近期使用麦克风的键入式发送不会触发它。

配置

- id: ui-voice-input
name: '@zhangbo-cn/dsh-client-ui-voice-input'
config:
language: 'zh-CN'      # Web Speech recognition language tag
interimResults: true   # stream live interim transcript into the draft
autoSendOnSilenceMs: 0 # auto-submit after this many ms of silence following committed speech (0 = off)

工作原理

MicButton (conversation.input.left)
├─ tap → beginMonitoring()
│     → SpeechRecognition (continuous:false, interimResults)  // reliable results
│     → onresult → TranscriptAccumulator → inputActions.setDraft(base + transcript)
│     → onend (silence) → auto-restart (keep monitoring)      // continuous
│     → onend + committed speech + autoSendOnSilenceMs>0 → silence window → auto-submit
│     → tap again → stop
└─ hold → submitChat()
→ on release: stop + inputActions.setDraft(text) + inputActions.submit()
→ reply streams → complete sentences read aloud WHILE the model
generates (sentence-chunked queue)
→ tail (last incomplete sentence) read on finalize
→ each segment → fetch /api/tts (host Edge neural MP3)
→ play via gesture-unlocked AudioContext (else  element)
→ fallback: browser speechSynthesis

- 识别在指针按下时启动(用户手势——Web Speech API 要求如此);点按还是长按在松开时判定。
- 同一次指针按下手势会解锁回复音频(共享的 AudioContext 被恢复),因此助手的回复——几秒后才到达——不受浏览器自动播放策略的限制,否则该策略会阻止普通的 HTMLMediaElement.play()。
- 回复朗读流:当模型仍在生成时,完整句子就会被朗读出来(采用按句子分块的队列,对于无分隔符的连续文本,约每 30 个字符刷新一次);最后一句不完整的句子在最终确定时朗读。朗读时麦克风图标会呈现深蓝色脉动,点击麦克风即可停止朗读。
- 无扬声器回声:在朗读回复期间,识别会暂停(因为麦克风会物理性地拾取扬声器声音),如果此前处于监听状态,朗读结束后会恢复识别。
- 每个片段设置 continuous: false 是有意为之:Chrome 的 continuous: true 无法触发 onresult,因此通过自动重启片段来实现持续监听。
- 当草稿被外部修改时,追加基准会重置,因此发送操作绝不会让过期的语音文本重新填充输入框。
- 控制台会为每个朗读片段及任何回退方案输出 [dsh-voice] 诊断日志。

兼容性

| 浏览器 | 麦克风(输入,SpeechRecognition) | 回复播放(宿主 /api/tts,回退 speechSynthesis) |
|---------|--------------------------------|--------------------------------------------------------------|
| Chrome / Edge(Windows) | ✅ Web Speech | ✅ 宿主 Edge 神经 MP3;浏览器 speechSynthesis 回退 |
| Safari | ✅ webkitSpeechRecognition(每次手势重新触发) | ✅ 宿主 Edge 神经 MP3(可播放);浏览器回退可用 |
| Firefox | ⚠️ 不支持——浏览器限制(Mozilla 尚未发布 SpeechRecognition;本地设备端识别仍处于早期阶段) | ✅ 宿主 Edge 神经 MP3(可播放);支持 speechSynthesis 回退,但不够自然 |

说明:
- Firefox 麦克风输入:这是真正的浏览器限制,而非插件问题。插件会进行特性检测,并禁用麦克风,同时显示“此浏览器不支持”的提示。跨浏览器回退方案需要 MediaRecorder 加上外部转录服务(对于零后端插件而言超出范围)。
- 回复播放:首选路径是宿主的 /api/tts(Microsoft Edge 神经语音,在服务端合成)——在任何能播放 MP3 的浏览器上都可靠且自然。如果没有 tts-edge 宿主插件,客户端会回退到 speechSynthesis(Chrome 可能在空闲间隔后静默丢弃 speak();语音为操作系统默认)。
- 麦克风输入需要支持 Web Speech 的浏览器;回复播放需要 tts-edge 宿主插件或支持 speechSynthesis 的浏览器。

测试

该插件附带两个可独立运行的测试套件,以及一个需要 Harness monorepo 的注册测试套件。

npm install --legacy-peer-deps   # peers reference monorepo-only @deepseek-ai/* packages
npm test                         # 36 tests: tap monitoring, auto-send on silence, hold submit,
streaming reply reading, tap-send arming, stop-reading, markdown/emoji stripping

- tests/mic-button.client.spec.tsx — 组件行为(点击监听、静音自动发送、按住说话、流式回复朗读)以及 splitStreamSegments / commonPrefixLength 辅助函数。
- tests/speech.client.spec.ts — stripMarkdownForSpeech 和 applyResults。
- tests/apply.client.spec.ts — 插件注册;它绑定真实的 Harness 服务(@deepseek-ai/cordis、-runtime、-locale),这些服务由 DeepSeek Harness monorepo 构建,因此它在那里运行(从本包直接执行 vitest run),而非独立运行。CI 在 Linux 上运行独立测试套件。

许可证

MIT

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

💬 加入社群

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

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群