dshbase

插件目录 / Developer / dsh-voice-chat

dsh-voice-chat

已验证 · 实测可装 lak321

✓ 持续维护

查看 GitHub ↗ ← 返回插件目录

0Stars
0Forks
0未关闭 issue
—语言
2026-08-17最近推送
跨平台平台

功能简介

DSH Voice Chat: speech-to-text input + auto/manual read-aloud (TTS) plugin, pure client

✅
我们的评价
可用 — 实测通过,早期项目

DSH Voice Chat: speech-to-text input + auto/manual read-aloud (TTS) plugin, pure client 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

DSH Voice Chat — 语音输入 + 朗读回复插件

给 DeepSeek Harness Web 界面增加语音对话能力:

  • 🎤 语音输入:说中文自动识别填入输入框(Web Speech API,零服务端/零密钥)
  • 🔊 朗读回复:每条 AI 回复可朗读(TTS),并支持自动朗读(默认开启)
  • ⚙️ 语音设置:人声选择、语速、语调,识别语言(普通话/粤语/台湾国语/英语)

纯 Client 插件,无服务端、无 API Key、无模型下载(浏览器自带语音引擎)。

功能

  • 🎤 语音输入:点击输入框旁的 🎤,说出内容,识别文字自动填入(实时中间结果 + 可编辑后再发送)
  • 🔊 朗读回复:每条 AI 回复旁有 🔊 按钮,点击朗读该条回复,再点停止
  • 🔁 自动朗读:每条新回复生成后自动朗读(默认开),按会话消息序号判断新旧,历史消息/刷新页面不会重读;⚙️ 面板一键关闭
  • 🗣️ 人声选择:从浏览器全部语音里选(默认中文优先,如 Microsoft Huihui)
  • ⏩ 语速 / 🎼 语调:滑杆实时调节(0.52.0 / 02.0)
  • 🌏 识别语言:普通话 zh-CN / 粤语 zh-HK / 台湾国语 zh-TW / 英语 en-US
  • 🧹 朗读文本清理:自动剥掉 Markdown 标记(粗体、斜体、代码、# 标题、列表、表格、链接等),避免 TTS 读出"星号星号"等噪音
  • 💾 所有设置存 localStorage,刷新后保留

安装

一条命令(git 源,产物已入库,无需构建):

dsh plugin --profile web add "github:lak321/dsh-voice-chat#<commit>&path:/"

<commit> 换成最新提交号(见仓库主页)。或本地目录:cd dsh-voice-chat && dsh plugin --profile web add .

装完重启 DSH(npx -y @deepseek-ai/dsh web),浏览器打开后输入框旁出现 🎤 和 ⚙️ 按钮,每条 AI 回复旁出现 🔊 按钮。

兼容 DSH Profile:web。
旧的手动复制 client/ 并注入 cordis.patch.yml 的方式已废弃,由 bundle 层栈安装替代。

使用

  1. 🎤 语音输入:点 🎤 → 说话 → 文字自动填入输入框 → 编辑/直接发送
  2. 🔊 朗读:点回复旁的 🔊 朗读该条;朗读中再点停止
  3. ⚙️ 设置:自动朗读开关、人声、语速、语调、识别语言

工作原理

  • Client 插件:通过 ctx.slots.inject 注册两个 slot:
    • conversation.input.left(🎤 voice-input order 5、⚙️ voice-settings order 8)
    • conversation.chat.assistant-actions(🔊 voice-speak order 5)
  • 语音输入:SpeechRecognition(zh-CN,interim 实时结果 + maxAlternatives 5),识别结果 inputActions.setDraft()
  • 朗读:speechSynthesis + 中文语音;getVoices() 异步 → 监听 voiceschanged 事件 + 500ms 轮询兜底(3s 上限)
  • 自动朗读去重:localStorage 记录每个会话已朗读到的最大消息 seq,只朗读比它新的回复
  • 文本提取:从会话快照 snapshot.nodes 找 {kind:'assistant', messageId, blocks:[{kind:'text',text}]} 节点

开发要点(踩坑记录)

  • props.useSession 是 React Hook,必须在组件函数体顶层调用,绝不能在 onClick 里调用(否则报 React #321 Invalid hook call,点击无反应)。selector 需返回原语(字符串/数字),避免重渲染风暴。
  • client 插件必须导出 exports.inject(依赖列表,如 ["slots"]),否则 ctx.slots 不可用、apply 静默失效。
  • client.js 是 window.__ModuleLoader__.load({id, factory}) 格式,factory 内 require("react"),导出 exports.apply / exports.inject。
  • 改 client.js 后无需重建 Web 包:HTTP 拉取即新内容,浏览器 Ctrl+F5 刷新生效。

License

MIT

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-voice-chat」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:lak321/dsh-voice-chat

Headless(CLI)profile:

dsh plugin --profile headless add github:lak321/dsh-voice-chat

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Developer 里更多

浏览全部 7819 个插件 →