dsh-doubao-voice

DeepSeek Harness(DSH)采用插件架构,旨在通过社区贡献扩展基础能力。开发者在构建智能体或交互式应用时,往往需要流式语音输入能力,而原生 DSH 尚未提供此功能。dsh-doubao-voice 插件解决了这个问题。它接入火山引擎流式大模型语音识别(豆包 Seed ASR),通过浏览器采集麦克风音频,经宿主 WebSocket 中继至豆包服务,最终将识别文本流式回填到输入框。

核心功能

  1. 接入豆包 Seed ASR:使用火山引擎流式大模型语音识别服务。
  2. 交互入口:在输入框左侧提供麦克风按钮,支持全局快捷键(默认 Alt+V)唤起。
  3. 状态指示:提供四态指示,包括“正在准备中”(转圈)、“正在听写”(音量动态条)、“收尾中”(转圈)。
  4. 真流式处理:音频格式为 16kHz/16bit/单声道 PCM,按 200ms 分块上传,识别文本边说边上屏。
  5. 编辑与回滚:识别结果不自动发送,支持在输入框内编辑确认。中途取消录音会自动回滚,支持中途修正原位替换,多停顿长录音不堆叠(LCP 合并算法)。
  6. 配置管理:在设置页管理凭据、热词(逗号/分号分隔)、语言(BCP-47,如 zh-CN)、快捷键及最长录音时长(默认 300s)。
  7. 输出与兜底:输出方式跟随光标(默认)或输入框;若写入失败,自动兜底复制到剪贴板并提示。
  8. 本地存储:凭据存储在 ~/.dsh/dsh-doubao-voice.json,ACL 收紧到当前用户,仅本机可读。

安装与启用

在终端中执行以下命令安装插件:

dsh plugin --profile web add dsh-doubao-voice

安装完成后,重启 dsh web 进程并刷新浏览器页面即可启用。

配置方式

安装后需要在设置页或通过环境变量配置火山引擎凭据。

方法一:设置页

进入 DSH 设置页,找到“语音输入(豆包)”配置项:
- App ID / Access Token:从火山引擎控制台获取。
- Resource ID:默认值为 volc.seedasr.sauc.duration。
- 热词:输入逗号或分号分隔的词汇,最多 100 个。
- 语言:设置识别语言,如 zh-CN、en-US、ja-JP 等。

方法二:环境变量

环境变量优先级高于文件配置。在 PowerShell 中设置如下:

$env:ARK_APP_ID="你的AppID"
$env:ARK_ACCESS_TOKEN="你的Token"
$env:ARK_RESOURCE_ID="volc.seedasr.sauc.duration"
$env:ARK_LANGUAGE="zh-CN"
$env:ARK_HOTWORDS="芯片,Buck电路"

技术实现

该插件依赖 ws(WebSocket)库。协议层实现基于 Proma 桌面端 doubao-asr-service.ts 的调研复刻,包含二进制帧协议、参数解析逻辑及确定性测试。

架构流程

浏览器 (lib/client.js)                宿主 (lib/index.js)                 火山引擎
麦克风 → 16kHz PCM ──WS 二进制──► registerUpgrade 中继 ──sauc 协议──► 豆包流式 ASR
   ▲   ◄── transcript 流 ──JSON──◄   DoubaoAsrClient   ◄────────────┘
   流式回填输入框(基线 + 累计文本,幂等写入)

测试

项目包含针对合并算法和写入保险的测试脚本:

node test/merge-test.mjs
node test/writer-guard-test.mjs
node test/relay-test.mjs

适用场景与注意事项

  • 适用场景:需要流式语音转文本能力的 DSH WebUI 用户,适合长文本录入或实时对话场景。
  • 权限与安全:插件以当前 dsh 进程权限运行。安装前建议检查源码与许可证。
  • 免责声明:此为社区项目,非 DeepSeek 或火山引擎官方出品。使用火山引擎服务需遵守其服务条款,Access Token 请妥善保管。该插件收录于 awesome-dsh-plugin 目录,不构成安全背书。

总结

dsh-doubao-voice 为 DeepSeek Harness 提供了完整的流式语音识别解决方案,从采集、传输到回填均有明确的实现。通过简单的安装和配置,开发者可以在 DSH 环境中直接使用豆包 Seed ASR 的能力。

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

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

小夜