← 返回列表
⚠ 装前注意
为 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