# dsh-voice 使用手册(纯语音输入) > 形态:DeepSeek Harness 的 web UI 输入框左侧出现 🎤 按钮 —— 点击说话, > 识别文本作为普通消息提交(与打字完全同路)。**没有语音朗读输出**, > 与 agent preset/人设完全解耦,任何模式(code/standard/minimal/自定义)下通用。 ## 一、安装(一次性) ```sh # 1. 把插件装进 web profile(包声明 dsh.bundle,会自动进 bundles 层) dsh plugin --profile web add @nn12138/dsh-voice # 本地开发调试可改用源码路径: dsh plugin --profile web add D:/.../dsh-voice # 2. 装原生识别运行时(插件不自动安装;想要离线识别才需要,浏览器在线识别可跳过) dsh plugin --profile web add sherpa-onnx-node # 3. 模型文件(native 识别需要):复用 voxelf 的 assets/models # (asr-zh: encoder.int8.onnx / decoder.onnx / joiner.int8.onnx / tokens.txt; # vad: silero_vad.onnx),把路径填进下面的 modelDir。 ``` ## 二、配置(可选,进 profile 的 cordis.patch.yml) ```yaml - id: voice config: engine: auto # auto(默认,host 判定:有模型 → native) | native(仅离线;模型缺失时回退) | browser(强制 Web Speech) # 行内 config 由 host 半接收;engine 经 /voice.config 同步到浏览器半 modelDir: 'D:/code/voxelf/assets/models' # native 识别模型目录 asrDir: 'asr-zh-en-2025' # ASR 模型子目录: asr-zh(纯中文,默认)| asr-zh-en-2025(中英双语) ``` ## 三、日常使用与快捷键 **全局快捷键(默认 Ctrl+Space)**:页面任意位置(输入框外)按一下 = 开关当前会话的麦克风,再按一次停止并提交。按钮悬浮提示会显示当前快捷键。 配置(可改,避免与系统/输入法冲突): ```yaml - id: voice config: hotkey: 'ctrl+space' # 或 alt+m / ctrl+shift+p 等;输入框聚焦时自动不触发 ``` > `hotkey` 写在行内 config 即可:host 半启动后经 `/voice.config` 把它同步给浏览器半;插件在 RPC 到达前先用默认 `ctrl+space` 兜底。**修改配置后需要重启 `dsh web` 才生效。** > ⚠️ Ctrl+Space 是 Windows 中文输入法的经典切换键。若你的输入法占用:在输入框里打字时插件**不会**拦截(输入框聚焦自动豁免);输入框外若被系统级输入法抢走按键,请换一个组合(如 alt+m)。 ## 四、日常使用 1. `dsh web` 启动。 2. 输入框**左侧 🎤 按钮**。 3. 点击 🎤(浏览器弹麦克风授权,允许)。 4. 说话 → 再点一次(或自动停)停止 → 识别文本作为普通消息提交。 5. 回复照常流式渲染 —— 朗读与否与插件无关,由会话/系统自行决定。 按钮状态:🎤 空闲 / 红底 ■ 正在听。 ## 五、ASR 模型选择 | 模型(asrDir) | 语言 | 特点 | |---|---|---| | `asr-zh`(默认) | 纯中文 | 中文最准;英文词/短语弱 | | `asr-zh-en-2025` | 中英双语 | zipformer2 双语(2025-02);实测英文效果仍差,已弃用,默认回纯中文 | | 备选(需另下模型) | 多语 | SenseVoice-Small(阿里,中英日韩粤 + 自动标点,非流式,需插件加 Offline 后端) | ## 六、引擎选择对照 | 维度 | auto(默认) | native(host) | browser(Web Speech) | |---|---|---|---| | 选择方式 | host 判定生效引擎:`/voice.ping` 下发(有模型 → native,否则 → browser) | 仅离线识别;模型缺失时同样回退 browser | 强制浏览器在线识别 | | 识别 | 视探测结果 | sherpa-onnx zipformer2 + VAD,离线 | 浏览器在线识别,需联网 | | 依赖 | 同探测结果 | sherpa-onnx-node + 模型(~100MB) | 无 | | 适用 | 零配置、开箱即用 | 隐私/离线优先 | 快速体验 | ## 七、常见问题 - **没看到 🎤**:确认 profile 的 bundles 包含 dsh-voice,并重启了 `dsh web`。 - **点击没反应**:检查浏览器麦克风权限;控制台看 `[dsh-voice]` 前缀日志。 - **native 不生效**:`/voice.ping` 下发 `engine: browser` → 检查 modelDir 路径与 sherpa-onnx-node 是否装进同一 profile。 - **说话出不来字**:确保说完后再点一次停止(final 冲刷);浏览器实际采样率 ≠ 16k 时插件会自动重采样。 - **首次识别慢**:Defender 首次扫 onnxruntime.dll,后续正常。 ## 八、开发备忘(插件作者) - 构建顺序:先 `tsc`(host 半 lib/index.js)再 `tsdown --config tsdown.config.ts`(client 半 lib/client.js);tsc 重发会抹掉 client.js,务必按序。`pnpm --ignore-workspace build` 已封装该顺序。 - 独立测试:`pnpm --ignore-workspace test`(含 native ASR 冒烟:真实 wav 出中文)。 - 线协议冒烟(可选):`node tools/asr-smoke.cjs`(对运行中的实例走 /voice.asr 通道)。