dsh-vmic:在 DeepSeek Harness 聊天框里用麦克风做语音听写

前言

在 DeepSeek Harness(DSH)里和模型对话,输入仍以键盘为主。长段口述、边走边想、或不便打字时,若把语音先转成文字再发送,可以少一层「先开别的 App 听写再粘贴」的打断。DSH 社区里已有客户端类插件扩展界面能力;下面介绍维护者 Calvin451970353 发布的 dsh-vmic——它在聊天输入框旁增加麦克风按钮,录制 16kHz WAV,经可切换的 ASR 供应商转写后填入输入草稿,真正执行对话请求的仍是你在 DSH 里当前选中的主模型,语音识别只承担听写层。

这是什么

dsh-vmic(包名 dsh-vmic,当前资料版本 1.1.0)是 DSH 的语音输入插件:Web 客户端在发送按钮左侧注入麦克风按钮(带录制时 Canvas 实时频谱,主题跟随 harness CSS 变量),点击开始/停止录音,转写结果进入草稿供审阅后回车发送。源码与说明见 GitHub 仓库,社区目录页:SkillHub 插件页。分类为客户端;许可证 MIT。

核心功能

界面与录音

  • 麦克风位于发送按钮左侧:单击开始录音,再次单击停止并触发转写;右键按钮打开配置面板。
  • 浏览器侧录制为 16kHz 单声道 WAV;首次使用需允许麦克风权限。

两种内置 ASR 供应商

在配置面板中切换 selectedProvider(预设端点/模型已内置,用户主要填 API Key):

供应商 实现要点
小米 MiMo openai-compatible,input_audio,模型 mimo-v2.5-asr
火山豆包 SAUC bigmodel WebSocket 二进制帧;模型 bigmodel,资源 volc.bigasr.sauc.duration,支持流式转写(live: true)

可选 LLM 润色

开启后可对转写文本做口语整理、错字与标点修正。默认可复用 DSH credentials 中的 DEEPSEEK_API_KEY,模型 deepseek-chat;也可在面板配置独立润色 Key(VMIC_POLISH_API_KEY)。

安全与自检

  • API Key 只写在 DSH 服务端 credentials(~/.dsh/.credentials.yaml),浏览器仅见「已配置/未配置」;引用名如 VMIC_XIAOMI_MIMO_API_KEY、VMIC_VOLCENGINE_DOUBAO_API_KEY(不带 VMIC_ 前缀的兼容名资料亦支持)。
  • 火山豆包 Key 支持 appkey:accesskey(X-Api-App-Key / X-Api-Access-Key)或单 Key(X-Api-Key)。
  • 内置连通性测试:发送约 0.5s 测试音,返回延迟与识别文本,便于排查网络或鉴权。
  • 界面字符串支持中文 / 英文(locale/zh.json、locale/en.json)。

宿主侧路由(同源代理)

转写、配置、润色经 DSH 宿主路由转发,例如 POST /vmic-asr(一次转写)、POST /vmic-asr-live/start|/chunk|/stop(豆包流式)、GET/POST /vmic-config、POST /vmic-test 等;Key 不回明文到前端(GET /vmic-key 仅本机回环供面板「眼睛」图标使用)。

安装与启用

版本要求:自 1.1.0 起适配 DSH 0.2.1-rc.2 及以上(engines.dsh 与 peer 指向 0.2.x);DSH 0.1.x 应使用插件 1.0.0。

插件通过 package.json 的 dsh.bundle.patch 声明 cordis.patch.yml:启用 bundle 层后宿主会自动插入 vmic 行,一般不必手写 insert。

桌面端:设置 → 插件 → 添加插件 →「安装第三方插件」,填本地目录或包名,装完点「立即启用」。桌面 profile(~/.dsh/profiles/desktop)由应用内插件管理器管理,命令行 dsh plugin --profile desktop 会被拒绝。

Web profile 发布版(README 原文命令):

cd ~/.dsh/profiles/web
pnpm add github:Calvin451970353/dsh-vmic

本地开发可用 link: 指向源码目录,例如:

cd ~/.dsh/profiles/web
pnpm add link:/path/to/dsh-vmic

装好后重启 dsh web 并刷新页面。若未启用 bundle、仅当普通依赖安装时,才需在 cordis.patch.yml 手工追加 insert;启用 bundle 则跳过。配置面板保存时由 configEditor 写回 profile 顶层 - id: vmic 的 config,字段为 .volatile(),改配置通常不需重启;改插件 lib/*.js 仍需重启 dsh web。

若服务端判定插件与当前 DSH 版本不兼容,会打印 disabling profile plugin row "vmic" 并跳过该行,需先核对版本,必要时按 README 使用 dsh plugin --profile web allow-version 等命令。

典型用法

经过上面的安装与 Key 配置,可按 README 流程操作:

  1. 点击麦克风开始录音(允许浏览器麦克风权限)。
  2. 再次点击(或红色停止控件)结束:对完整音频做一次转写(豆包可选流式路径)。
  3. (可选)开启润色后自动调用 LLM 整理文本。
  4. 文字进入输入草稿(保留已有草稿内容),检查后回车发送——由当前选中的 DSH 模型执行后续请求。

右键麦克风打开面板,可设置 language: auto 或如 zh、润色开关与超时 timeoutMs(默认示例为 30000),以及自定义 openai-compatible 供应商(baseUrl / model / Key)。

适用场景与注意

适合:长期在 DSH Web 界面写 prompt、希望同源听写、并已在小米 MiMo 或火山豆包开通 ASR 的开发者或日常用户;需要流式出字时可优先选火山豆包供应商。

注意:

  • 小米 MiMo 对 base64 音频有约 10MB 上限(资料称约 5 分钟,一般语音输入足够)。
  • 插件以当前 dsh 进程权限运行,安装前应自行审阅 源码 与 MIT 许可证;SkillHub 目录为社区站点,与 DeepSeek / 幻方无官方从属关系。
  • 客户端 bundle 改动在 pnpm run dev:web 监听下可热更新;否则需重启服务并刷新页面。

结尾

dsh-vmic 把「录音 → 转写 → 可选润色 → 填入草稿」收进 DSH 聊天框,听写与主模型解耦,Key 留在服务端 credentials。需要细节、配置示例与限制说明时,以仓库 README 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye