dsh-voice-mode 0.7.10 → 0.7.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.en.md CHANGED
@@ -14,6 +14,8 @@ interrupts playback and the running turn. No API key.
14
14
 
15
15
  ![dsh-voice-mode full-duplex voice conversation](https://raw.githubusercontent.com/qishuilalala/dsh-voice-mode/HEAD/assets/hero-banner.png)
16
16
 
17
+ ![Real recording: streaming transcription → auto-send → sentence-by-sentence read-aloud with live captions](https://raw.githubusercontent.com/qishuilalala/dsh-voice-mode/HEAD/plugin/dsh-voice-mode/assets/demo-voice-flow.gif)
18
+
17
19
  > **Version note (v0.7.10, 2026-09-18)**: **Silent-audio causes in the output pipeline fixed** — ① a sentence whose cloud-TTS synthesis fails after 3 retries is no longer dropped silently (the status bar now says one sentence failed and was skipped; previously this showed up as "the reply is occasionally not read" with no way to tell why); ② audio playback no longer goes silent after the browser suspends the AudioContext (background tab / long idle) — the context is resumed on every enqueue and on any click/keypress; ③ dropped incomplete sentences (SSE frame loss) now leave a diagnostic trace. Otherwise as v0.7.9: **Wake-word pipeline overhaul** (Issue #10 + real-machine retest) — a harness driving the real engine pinpointed and fixed five flow defects: ① TTS echo polluting the standby segment while the agent reads (could not wake); ② only above-threshold frames uploaded, so trailing characters never flushed (wake word truncated); ③ discarding the whole segment on a wake hit (saying "wake word + command" in one breath sent only the tail); ④ the command hanging when the hit arrived after you stopped speaking; ⑤ pausing after the wake word closed the command window (command lost). **The wake word may now be said together with your command — it is stripped and never sent**, standby live-shows what it heard, and "wake word … pause … command" works. Otherwise as v0.7.7: Edge cloud TTS by default, local TTS (VITS / Kokoro) optional; silence split defaults to 1500 ms.
18
20
 
19
21
  ---
@@ -27,7 +29,8 @@ interrupts playback and the running turn. No API key.
27
29
  - **Long segments**: continuous listening stitches consecutive segments into one message (internally chunked at 30 s and concatenated across chunks); 1500 ms silence split by default; hold keeps pauses from splitting;
28
30
  - **Hardening**: session-existence check, loopback + Origin guards, per-endpoint rate limits, model SHA256 pinning, download-host allowlist.
29
31
 
30
- > ⚠️ The screenshots above (and `assets/demo.gif`) show the **upstream legacy single-button UI**; the current UI adds a mode-switch button next to the mic.
32
+ > ℹ️ The `demo-voice-flow.gif` at the top is a **real recording of the current UI** (voice mode → live transcription → pause auto-send sentence-by-sentence read-aloud with live captions), produced by driving the real pipeline via `screenshots/scripts/capture-demo.mjs`.
33
+ > ⚠️ `assets/demo.gif` and the older screenshots under the repo-root `assets/` still show the **upstream legacy single-button UI**; the current UI adds a mode-switch button next to the mic.
31
34
 
32
35
  ---
33
36
 
package/README.md CHANGED
@@ -11,7 +11,9 @@ DeepSeek Harness 语音双工对话模式:会话内一键进入 → 边说边
11
11
 
12
12
  ![dsh-voice-mode 全双工语音对话](https://raw.githubusercontent.com/qishuilalala/dsh-voice-mode/HEAD/assets/hero-banner.png)
13
13
 
14
- ![语音模式:实时字幕与状态条](https://raw.githubusercontent.com/qishuilalala/dsh-voice-mode/HEAD/assets/screenshot-voice.png)
14
+ ![语音模式真实录制:流式转写 → 自动发送 → 按句朗读 + 实时字幕](https://raw.githubusercontent.com/qishuilalala/dsh-voice-mode/HEAD/plugin/dsh-voice-mode/assets/demo-voice-flow.gif)
15
+
16
+ ![全双工对话闭环:声音 → 文字 → 声音](https://raw.githubusercontent.com/qishuilalala/dsh-voice-mode/HEAD/plugin/dsh-voice-mode/assets/duplex-banner.png)
15
17
 
16
18
  > **版本说明(v0.7.10,2026-09-18)**:**输出链路静默丢音根治**——① 云端 TTS 单句重试耗尽后不再静默跳句(现在状态条提示「有一句朗读失败,已跳过」,此前表现为「AI 回复偶尔不朗读」且无从判断);② 浏览器挂起 AudioContext 后的「无声播放」(UI 显示朗读中、字幕照走)现在每次入队 + 任意点击/按键自动恢复;③ SSE 丢帧导致的坏句丢弃留诊断痕迹。其余同 v0.7.9:**唤醒词链路全面修复**(Issue #10 + 真机复测)——台架驱动真引擎逐项定位并修掉五处流程缺陷:① 朗读期 TTS 回声污染待机段(喊不醒);② 只上传超门限帧导致尾字不 flush(唤醒词只剩半截);③ 唤醒命中丢整段(连说「唤醒词+命令」只发出去尾部几个字);④ 命中晚于停口时命令悬挂不定稿;⑤ 只喊唤醒词后停顿会关掉命令窗口(命令丢失)。**现在唤醒词可与命令连说、词头自动剥离不进消息**,待机态实时显示「它听到了什么」,支持「唤醒词…停顿…命令」。其余同 v0.7.7:朗读默认 Edge 云端,本地 TTS(VITS / Kokoro)可选;静音断句默认 1500 毫秒。
17
19
 
@@ -32,7 +34,8 @@ DeepSeek Harness 语音双工对话模式:会话内一键进入 → 边说边
32
34
  - **朗读稳定性**:打断即终止在途合成释放 CPU;句间不再有 3-5 秒停顿;长朗读不触发空闲下线;
33
35
  - **安全加固**:会话存在性校验 / 回环+Origin 校验 / 全端点限流 / **ASR+TTS 全模型 SHA256 固定** / 下载域名白名单 / 重定向守卫。
34
36
 
35
- > ⚠️ 上文截图与 `assets/demo.gif` 为**上游旧版界面**(单按钮时期);当前界面在语音按钮旁多一颗「模式切换」按钮。
37
+ > ℹ️ 顶部 `demo-voice-flow.gif` 是**当前界面的真实录制**(语音模式 → 边说边出字 → 停顿自动发送 → 按句朗读 + 实时字幕),由 `screenshots/scripts/capture-demo.mjs` 驱动真实链路产出。
38
+ > ⚠️ 仓库内 `assets/demo.gif` 与根目录 `assets/` 下的旧截图仍为**上游旧版界面**(单按钮时期);当前界面在语音按钮旁多一颗「模式切换」按钮。
36
39
 
37
40
  ---
38
41
 
package/lib/client.js CHANGED
@@ -2825,7 +2825,7 @@ var TELEMETRY_VIEW = [
2825
2825
  { stage: "first-tts-chunk", key: "telFirstChunk" },
2826
2826
  { stage: "first-audio-played", key: "telFirstPlayed" }
2827
2827
  ];
2828
- var BUILD_TAG = "466b0f3";
2828
+ var BUILD_TAG = "6e27638";
2829
2829
  var TELEMETRY_FLAG = "dsh-voice-mode.telemetry";
2830
2830
  var telemetryEnabled = typeof localStorage !== "undefined" && localStorage.getItem(TELEMETRY_FLAG) === "1";
2831
2831
  console.log("[dsh-voice] build=" + BUILD_TAG);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-voice-mode",
3
- "description": "Full-duplex voice plugin for DeepSeek Harness: local zipformer2 streaming ASR (no API key) → editable draft; Edge TTS or local VITS / Kokoro read-aloud with live captions; true barge-in; hardened HTTP surface + model SHA256 pinning; compatible with all dsh releases since 0.1.1-rc.2 (verified 0.1.1 → 0.1.5-rc.2). · DSH 语音双工插件:流式识别入草稿、按句朗读+实时字幕、开口即打断;免 API Key、安全加固、全版本兼容(0.1.1-rc.2 起,含 0.1.5-rc.2 端到端验证)。",
4
- "version": "0.7.10",
3
+ "description": "Full-duplex voice plugin for DeepSeek Harness: local zipformer2 streaming ASR (no API key) → editable draft; Edge TTS or local VITS / Kokoro read-aloud with live captions; true barge-in; hardened HTTP surface + model SHA256 pinning; compatible with all dsh releases since 0.1.1-rc.2 (verified 0.1.1-rc.2 → 0.1.5-rc.2, plus 0.1.6-alpha.2 preview). · DSH 语音双工插件:流式识别入草稿、按句朗读+实时字幕、开口即打断;免 API Key、安全加固、全版本兼容(0.1.1-rc.2 起,含 0.1.5-rc.2 端到端验证 + 0.1.6-alpha.2 预览核验)。",
4
+ "version": "0.7.12",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
7
7
  "repository": {
@@ -54,7 +54,10 @@
54
54
  "check:anchors": "node scripts/check-anchors.mjs",
55
55
  "typecheck:dual": "bash scripts/typecheck-dual.sh",
56
56
  "smoke:runtime": "bash scripts/smoke-runtime.sh",
57
- "verify:dual": "bash scripts/verify-dual.sh"
57
+ "verify:dual": "bash scripts/verify-dual.sh",
58
+ "check:dsh-version": "bash scripts/check-dsh-version.sh",
59
+ "e2e:full": "bash scripts/full-e2e.sh",
60
+ "release": "bash scripts/release.sh"
58
61
  },
59
62
  "dsh": {
60
63
  "bundle": {
@@ -100,13 +103,32 @@
100
103
  "keywords": [
101
104
  "dsh",
102
105
  "dsh-plugin",
106
+ "deepseek-harness",
103
107
  "voice",
108
+ "voice-mode",
104
109
  "speech",
105
110
  "asr",
106
111
  "tts",
112
+ "speech-to-text",
113
+ "text-to-speech",
114
+ "speech-recognition",
115
+ "full-duplex",
107
116
  "duplex",
117
+ "barge-in",
118
+ "captions",
119
+ "wake-word",
120
+ "local-asr",
121
+ "on-device",
108
122
  "zipformer2",
109
- "msedge-tts"
123
+ "sensevoice",
124
+ "kokoro",
125
+ "msedge-tts",
126
+ "chinese",
127
+ "语音",
128
+ "字幕",
129
+ "打断",
130
+ "中文",
131
+ "本地识别"
110
132
  ],
111
133
  "publishConfig": {
112
134
  "access": "public"