Back to home

3274375092

dsh-voice

DeepSeek Harness 的语音输入插件:网页里点 🎤(或按Ctrl+空格)说话,识别文本作为普通消息提交进会话。纯输入,与 agent preset/人设完全解耦,任何模式下都只是"另一种输入法"。

Stars
1
Language
TypeScript
Created
Aug 14, 2026
Updated
Aug 14, 2026

Introduction

dsh-voice 🎤

DeepSeek Harness 的语音输入插件:网页里点 🎤(或按快捷键)说话,识别文本作为普通消息提交进会话。纯输入,与 agent preset/人设完全解耦,任何模式下都只是"另一种输入法"。

npm License

特性

  • 🎤 语音输入:麦克风按钮(平台设计系统 UI)+ 全局快捷键(默认 Ctrl+Space,可配)
  • 边说边识别:live-stream 部分识别实时回显,停麦 VAD 定稿提交(尾音补偿 0.6s,句尾不吞音)
  • 🧠 双引擎自适应:host 原生(sherpa-onnx-node zipformer2 + silero VAD,离线、隐私)与浏览器在线(Web Speech,零依赖)自动探测降级
  • 🔌 与 preset 解耦:不碰 persona/系统提示词,code/standard/minimal/自定义 preset 全通用
  • 📦 可选模型:零配置开箱即用;想要原生一条 dsh-voice-models 下载

安装

# 插件本体
dsh plugin --profile web add @nn12138/dsh-voice

# 可选: 离线原生识别(插件本体零依赖,不自动装该运行时)
dsh plugin --profile web add sherpa-onnx-node
dsh-voice-models            # 一键下载模型(~100MB)→ ./dsh-voice-models

# 可选: 配置(编辑 ~/.dsh/profiles/web/cordis.patch.yml)
- id: voice
  config:
    modelDir: './dsh-voice-models'   # 原生识别模型目录
    hotkey: 'ctrl+space'             # 全局快捷键
    vadThreshold: 0.3                # 越低越不吞句首尾
    tailPadSeconds: 0.6              # 尾音补偿时长
dsh web   # 输入框左侧 🎤 或 Ctrl+Space

详见 USAGE.mdINSTALL.md

工作原理

浏览器采麦(自动重采样 16k)
   → PCM base64 分块(256ms)→ /voice RPC 通道(loopback)
   → host: silero VAD + zipformer2 流式解码
   → partial 逐块回传(边说边看)/ final 定稿(VAD 分段 + 0.6s 尾音补偿)
   → conversation 服务提交(与打字同路)

双引擎:客户端 ping /voice 探测 host 原生能力;不可用自动降级浏览器 Web Speech。

开发

pnpm install --ignore-workspace   # 独立依赖(不依赖 DSH monorepo)
pnpm test                         # 单测(含真实模型冒烟)
pnpm typecheck && pnpm build      # 构建(tsc host 半 + tsdown client 半)

真实模型烟测默认指向本机 voxelf assets,模型不存在时自动跳过;可用环境变量指到别处: DSH_VOICE_MODEL_DIR(模型目录)/ DSH_VOICE_TEST_WAV(测试 wav)/ DSH_VOICE_DOWNLOADED_MODELS(下载模型目录)。

结构:src/index.ts(host 半)/ src/client/(浏览器半)/ src/core/(识别核心)/ tools/(线协议冒烟 + 模型下载)。

License

MIT