🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

本地语音转写 try-works/dsh-stt

DeepSeek 客户端v0.2.6
try-works26 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

为 DeepSeek Harness Web 输入框提供多模型本地语音识别。

31.5/100
综合分
2
GitHub 星标
116
npm 周下载
—/5
用户评分

数据截至 2026/10/9 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/try-works/dsh-stt.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态插件
可安装,未声明 dsh 能力
装得上吗
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@try-works/dsh-stt @ 0.2.6
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/9 17:36:05

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 15 处,展示前 15 条)
  • 写入本地文件
    src/provider-kit/oneshot.js:16
    await writeFile(path, audio)
  • 执行外部命令来自配置/变量
    src/provider-kit/oneshot.js:27
    const child = spawn(file, args, { cwd, windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'] })
  • 删除本地文件递归
    src/provider-kit/oneshot.js:111
    await rm(staged.directory, { recursive: true, force: true }).catch(() => {})
  • 写入本地文件
    src/providers/whistle/spec.js:319
    writeFileSync(part, canonicalWav(wav.data.subarray(from, to)))
  • 执行外部命令来自配置/变量
    src/provider-kit/worker.js:31
    const child = spawn(process.execPath, [this.entry], {
  • 写入本地文件
    src/provider-kit/worker.js:150
    await writeFile(wavPath, input.audio)
  • 删除本地文件递归
    src/provider-kit/worker.js:173
    await rm(staged, { recursive: true, force: true }).catch(() => {})
  • 读取本地文件
    src/provider-kit/http.js:15
    return (await stat(path)).size
  • 写入本地文件
    src/provider-kit/http.js:62
    await mkdir(dirname(destination), { recursive: true })
  • 发起网络请求
    src/provider-kit/http.js:70
    const response = await fetch(url, {
  • 删除本地文件
    src/provider-kit/http.js:79
    await rm(destination, { force: true })
  • 写入本地文件
    src/provider-kit/http.js:80
    await rename(partial, destination)
  • 写入本地文件
    src/provider-kit/http.js:96
    await pipeline(body, createWriteStream(partial, { flags: resumed ? 'a' : 'w' }))
  • 删除本地文件
    src/provider-kit/http.js:100
    await rm(destination, { force: true })
  • 写入本地文件
    src/provider-kit/http.js:101
    await rename(partial, destination)
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 语音转文字
  • 本地模型识别

为 DeepSeek Harness 提供语音转文字支持,用 Cactus Compute 和 Desert Ant Labs 的本地模型

README

由 DeepSeek 最新模型翻译生成
dsh-stt 为 DeepSeek Harness Web 输入框提供多模型本地语音识别。 麦克风按钮出现在模型选择器和 Send 之间。点一下就能开口说话 —— 你停下说话约一秒后,录音自动结束,转写文本插入草稿供你检查。用哪个端侧模型转写由你决定,你不选就不会下载任何东西。 识别器在你开始录音时加载,而不是结束时,所以等待时间藏在你说话的过程中,而不是说完之后。 模型 | 选择 | 大小 | 语言 | 说明 | | Whistle(Cactus Compute) | 18.4 MB | 7 种,自动检测 | 默认;30 ms 加载,约 116 MB 内存 | | Voz(Desert Ant Labs) | 约 390 MB | 25 种 | 准确率更高;预热时约 1 GB 内存 | | SenseVoice | — | — | 即将推出 —— 只做展示,不下载任何内容 | 两个可用模型都在 Windows 上做了端到端实测,各自正确转写了一段 7.62 s 的音频:Whistle 用时 1.52 s、占用 116 MB,Voz 用时 2.39 s。 安装 本包是随附语音 bundle 的 rider:那个 bundle 提供麦克风 UI 和语音服务,本包负责添加模型。
展开完整文档(README 剩余 1 节)
dsh-stt

为 DeepSeek Harness Web 输入框提供多模型本地语音识别。

麦克风按钮出现在模型选择器和 Send 之间。点一下就能开口说话 —— 你停下说话约一秒后,录音自动结束,转写文本插入草稿供你检查。用哪个端侧模型转写由你决定,你不选就不会下载任何东西。

识别器在你开始录音时加载,而不是结束时,所以等待时间藏在你说话的过程中,而不是说完之后。

模型

| 选择 | 大小 | 语言 | 说明 |
| Whistle(Cactus Compute) | 18.4 MB | 7 种,自动检测 | 默认;30 ms 加载,约 116 MB 内存 |
| Voz(Desert Ant Labs) | 约 390 MB | 25 种 | 准确率更高;预热时约 1 GB 内存 |
| SenseVoice | — | — | 即将推出 —— 只做展示,不下载任何内容 |

两个可用模型都在 Windows 上做了端到端实测,各自正确转写了一段 7.62 s 的音频:Whistle 用时 1.52 s、占用 116 MB,Voz 用时 2.39 s。

安装

本包是随附语音 bundle 的 rider:那个 bundle 提供麦克风 UI 和语音服务,本包负责添加模型。两个都要装,按这个顺序 —— 层按列表顺序生效,同一行 id 由后面的层胜出:

The voice-bundle version MATTERS: plain add resolves the npm latest tag
(0.1.7-alpha.1), which does not match a DSH 0.2.0-rc.2 runtime. Pin yours.
dsh plugin --profile web add @deepseek-ai/dsh-experimental-voice-input-bundle@0.2.0-rc.2
dsh plugin --profile web add @try-works/dsh-stt

从本地检出安装而不是从 registry 安装,方式一样: dsh plugin --profile web add /path/to/dsh-stt。

然后打开 Settings → Plugins → Voice Input,挑一个模型。选择器会列出每个模型及其大小和耗时预估;Download and prepare 只拉取你选中的那一个。

配置

cordis.patch.yml 承载全部配置。每个模型是 providers 下的一个键:

providers:
whistle-local:
enabled: true
voz-local:
enabled: false # keep 390 MB out of the picker entirely
sensevoice-local:
enabled: true # placeholder only

| 字段 | 含义 |
| enabled | 设为 false 会阻止服务商注册 —— 它不会出现在列表里,不会被选中,也不会被下载 |
| modelRoot | 该模型文件的存放位置;默认为 <dataRoot>/<key> |
| id | 覆盖服务商 id(高级用法;选择结果按 id 存储) |
| name | 覆盖选择器中显示的展示名 |

dataRoot 必填,且必须是绝对路径。

录音如何结束

静音门限会监视麦克风电平。在听到 300 ms 语音之前,什么都不会停止,所以一段咳嗽声或关门声不会在你还没开口前就结束录音;开口之后,1.2 秒的安静才会结束录音。Stop 按钮仍然在,按 Escape 或切走会取消并丢弃。

因为需要麦克风电平,插件自带浏览器端那一半,并以低于内置麦克风的优先级注册进 composer 槽位,所以内置麦克风不再渲染。等待消失也是这个原因:录音一开始,同一半就请求宿主加载模型。

架构

src/index.js register every enabled provider
src/config.js schemastery configuration
src/provider-kit/
http.js resumable download (see below)
preparation.js disk inspection + the state the UI renders
oneshot.js one process per recording
worker.js one warm process, idle-reclaimed
src/providers/whistle/ one-shot: needle.exe per recording
src/providers/voz/ warm worker holding the model
src/providers/sensevoice/ placeholder: advertises, never downloads

两种刻意选择的引擎策略

Whistle 每次录音跑一个进程。它的引擎加载 16.9 MB 模型只要约 30 ms,所以每次请求都付这个代价,换来真正的崩溃隔离和自动内存回收。它还顺带满足了引擎那条每种类型只能有一个进程级全局模型的规则。

Voz 跑成常驻 worker,因为它的加载要花 6.2 s、约 1 GB;子进程在多次录音之间保留,闲置五分钟后释放。

为什么模型由我们自己下载

Voz.load() 下载那 384,832,967 字节时,每个文件只发一次 fetch,不重试、不续传、不设超时。在真实网络下,最大那个文件下到 37.5% 就失败了,续传重试又断了三次。所以 preparation 会先用可续传的 Range 下载把 Voz 的缓存填好,之后 Voz.load({ cache: true }) 直接采用这些文件,不再发起网络请求。

限制

- 只插入,不发送。 转写文本落进草稿框,由你按 Enter。绝不会替你发送任何消息。
- 麦克风 UI 用的是内置那套。 本包只提供 provider,因为选择器绑定的是内置语音包的详情页。
- SenseVoice 只是挂了个名,没有真正交付。 它的条目无法下载;见 src/providers/sensevoice/index.js 里的交接说明。
- 录音上限是接缝的默认值:每次录音 4 MB、120 s。Whistle 的引擎每次调用只接受 30 s,所以更长的录音会在附近最安静的时刻切开,分段转写后按顺序拼接。无需配置;45 s 语音大约花 12 s 推理。
- 本地指的是宿主机器,它可能离你的浏览器很远。
预览分享卡片长什么样 ↓try-works/dsh-stt
分享 · DeepSeek Harness Hub
try-works/dsh-stt

为 DeepSeek Harness Web 输入框提供多模型本地语音识别。

这是你的仓库?认领条目

回到顶部