Miyamiz39/dsh-koein0

dsh-koein

Wake-word voice input for DeepSeek Harness: an always-on, low-power keyword spotter wakes the agent, then local ASR turns what you say next into a submitted message. No API key, no cloud, no typing.

包名
dsh-koein
版本
0.1.0
许可证
MIT
最近更新
2026年9月9日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Miyamiz39/dsh-koein

然后配置 modelDir: D:/models


### 2. 装进 profile

```bash
dsh plugin --profile web add 

dsh plugin add 会自动把包加进该 profile 的 dsh.profile.bundles,并套用它自带的 cordis.patch.yml

3. 重启

dsh web

插件是 bundle 行,必须重启才生效。

装好后:发送按钮左边会出现一个麦克风图标,它就是全部的语音控制。

一个按钮,两种说话方式

手势作用
单击开/关「直接说话」——不用唤醒词,点开就直接说
右键单击开/关「唤醒词监听」——说唤醒词即可开口

颜色就是状态,不需要额外的指示条:

颜色含义
停止
绿现在说话就会进输入框(左键单击直接听写,或唤醒词已命中)
正在等唤醒词(右键单击后)
出错,鼠标悬停看原因

识别中时绿色会轻微呼吸,表示确实听到了。连续说几句会追加到输入框(中文之间不加空格,英文自动加),不会覆盖你已经写好的内容。

两种模式共用一条音频流,所以听写开着时唤醒词监听自动让位。识别出来的文字默认只填进输入框,不直接发送——你看一眼再按回车。想让它说完就发,把 autoSend 改成 true

"设置 → 语音唤醒"里能看到模型状态和当前生效的唤醒词。

配置

$DSH_HOME/profiles/web/cordis.patch.yml 里覆盖(patch 是 whole-replace 语义,要写全字段):

- id: koein
  config:
    wakeWords:
      - 你好小鲸
      - 小鲸小鲸
    autoSend: false
    injectMode: composer
字段默认说明
wakeWords['你好小鲸','小鲸小鲸']唤醒词,可任意中文短语
keywordsFile''已有的 sherpa-onnx keywords.txt;非空则忽略 wakeWords
keywordsScore1.0关键词增强分数,漏检多就调大
keywordsThreshold0.25触发阈值,误唤醒多就调大
numTrailingBlanks1关键词后空白帧数,唤醒词含重叠 token 时调大(如 8)
modelDir$DSH_HOME/koein-models模型根目录
numThreads2两个引擎各自的推理线程数
autoSendfalse识别完直接发送;默认 false 只填进输入框,由你确认后发送
injectModecomposercomposer = 走输入框正常提交;agent = 宿主直接以用户消息注入会话(后台标签页也能用)
silenceMs800说完静音多久判定句子结束
onsetTimeoutMs4000唤醒后等开口的最长时间
maxUtteranceMs20000单句最长时长
minUtteranceMs300更短的语音丢弃(多半是噪声)
energyThreshold0.012语音起始能量阈值(RMS),环境噪声大就调大
stayAwakeMs0一句话结束后继续聆听的时长,便于连续追问;0 = 每次都要说唤醒词

调唤醒词

唤醒词质量取决于你的声音、麦克风和房间——这是唯一无法用官方测试音频验证的东西。录一段自己念唤醒词的 16kHz 单声道 WAV,然后:

node tools/probe-wake-word.mjs "你好小鲸" 我的录音.wav

## 配置

在 `$DSH_HOME/profiles/web/cordis.patch.yml` 里覆盖(patch 是 **whole-replace** 语义,要写全字段):

```yaml
- id: koein
  config:
    wakeWords:
      - 你好小鲸
      - 小鲸小鲸
    autoSend: false
    injectMode: composer
字段默认说明
wakeWords['你好小鲸','小鲸小鲸']唤醒词,可任意中文短语
keywordsFile''已有的 sherpa-onnx keywords.txt;非空则忽略 wakeWords
keywordsScore1.0关键词增强分数,漏检多就调大
keywordsThreshold0.25触发阈值,误唤醒多就调大
numTrailingBlanks1关键词后空白帧数,唤醒词含重叠 token 时调大(如 8)
modelDir$DSH_HOME/koein-models模型根目录
numThreads2两个引擎各自的推理线程数
autoSendfalse识别完直接发送;默认 false 只填进输入框,由你确认后发送
injectModecomposercomposer = 走输入框正常提交;agent = 宿主直接以用户消息注入会话(后台标签页也能用)
silenceMs800说完静音多久判定句子结束
onsetTimeoutMs4000唤醒后等开口的最长时间
maxUtteranceMs20000单句最长时长
minUtteranceMs300更短的语音丢弃(多半是噪声)
energyThreshold0.012语音起始能量阈值(RMS),环境噪声大就调大
stayAwakeMs0一句话结束后继续聆听的时长,便于连续追问;0 = 每次都要说唤醒词