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

俄语语音输入 tayuLuc/dsh-ru-voice-input

DeepSeek Harness
tayuLuc38 天前有提交已提供中文文档扫描:含敏感能力

在编辑器里点麦克风,用俄语说话即可转写为草稿

28.1/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add tayuLuc/dsh-ru-voice-input
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
L4 · 真实安装等级说明 →
数据截至 2026/10/16·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 38 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 16 处,展示前 15 条)
  • 读取本地文件
    lib/gigaam/index.js:242
    if (!existsSync(file)) return [];
  • 读取本地文件
    lib/gigaam/index.js:243
    const parsed = JSON.parse(readFileSync(file, "utf8"));
  • 读取本地文件
    lib/gigaam/index.js:317
    return existsSync(resolveSidecarPython()) ? { ready: true, missing: undefined } : { ready: false, missing: "python" };
  • 读取本地文件
    lib/gigaam/index.js:322
    if (!existsSync(FEATURES_PATH)) throw new Error("gigaam: bundled feature graph is missing from the package");
  • 读取本地文件
    lib/gigaam/index.js:323
    if (!existsSync(VOCAB_PATH)) throw new Error("gigaam: bundled vocabulary is missing from the package");
  • 读取本地文件
    lib/gigaam/index.js:325
    if (!existsSync(activeModelPath)) return { ready: false, missing: activeFileName };
  • 执行外部命令来自配置/变量
    lib/gigaam/index.js:355
    const child = fork(useSidecar ? E2E_WORKER_PATH : useMetal ? METAL_WORKER_PATH : WORKER_PATH, [], {
  • 读取本地文件
    lib/gigaam/model-source.js:32
    await pipeline(createReadStream(path), hash);
  • 读取本地文件
    lib/gigaam/model-source.js:42
    return (await stat(path)).size;
  • 写入本地文件
    lib/gigaam/model-source.js:97
    await mkdir(this.directory, { recursive: true });
  • 发起网络请求
    lib/gigaam/model-source.js:102
    response = await fetch(url, { signal, redirect: "follow" });
  • 写入本地文件
    lib/gigaam/model-source.js:117
    await pipeline(source, createWriteStream(partial), { signal });
  • 删除本地文件
    lib/gigaam/model-source.js:119
    await rm(partial, { force: true });
  • 删除本地文件
    lib/gigaam/model-source.js:124
    await rm(partial, { force: true });
  • 写入本地文件
    lib/gigaam/model-source.js:127
    await rename(partial, target);
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-experimental-api-speech-to-text@deepseek-ai/dsh-experimental-client-ui-voice-input@deepseek-ai/dsh-experimental-speech-to-text@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

俄语优先的 DeepSeek Harness 语音输入:本地 GigaAM v3 带标点,外加语音注册表修复,让识别器切换真正可用

README

由 DeepSeek 最新模型翻译生成
dsh-ru-voice-input 俄语语音输入,给 DeepSeek Harness 用。装一次,编辑器里就多一个麦克风,而且直接听得懂俄语。 为什么需要它 自带的 Voice input 插件是给中文做的:只有一个服务商 SenseVoice,而发布版检查点里根本没有俄语。在 Apple M1 上实测(2026.09.26,28.6 秒俄语语音):SenseVoice int8 返回空转写(0 个词,WER 100 %),还照样占了约 600 MB 内存。 实测环境是 M1 / 8.6 GB,语音用 macOS 的 say -v Milena 合成。这只是冒烟测试,不是基准测试。 安装 dsh plugin --profile web add https://github.com/tayuLuc/dsh-ru-voice-input 重启 Web UI。然后模型和 Send 之间会多一个麦克风按钮:点一下,授权,录音,Stop。转写结果会插进草稿里。 首次使用会下载并校验模型(revision 和 SHA-256 都锁定),放到 ~/.dsh/models/gigaam-v3-ctc/。SenseVoice 不会下载:这个 bundle 里没有它,它也不支持俄语。
展开完整文档(README 剩余 1 节)
dsh-ru-voice-input

俄语语音输入,给 DeepSeek Harness 用。装一次,编辑器里就多一个麦克风,而且直接听得懂俄语。

为什么需要它

自带的 Voice input 插件是给中文做的:只有一个服务商 SenseVoice,而发布版检查点里根本没有俄语。在 Apple M1 上实测(2026.09.26,28.6 秒俄语语音):SenseVoice int8 返回空转写(0 个词,WER 100 %),还照样占了约 600 MB 内存。

实测环境是 M1 / 8.6 GB,语音用 macOS 的 say -v Milena 合成。这只是冒烟测试,不是基准测试。

安装

dsh plugin --profile web add https://github.com/tayuLuc/dsh-ru-voice-input

重启 Web UI。然后模型和 Send 之间会多一个麦克风按钮:点一下,授权,录音,Stop。转写结果会插进草稿里。

首次使用会下载并校验模型(revision 和 SHA-256 都锁定),放到 ~/.dsh/models/gigaam-v3-ctc/。SenseVoice 不会下载:这个 bundle 里没有它,它也不支持俄语。

如果 pnpm 报 ERR_PNPM_IGNORED_BUILDS,在 ~/.dsh/profiles/<profile>/pnpm-workspace.yaml 里放行原生运行时的构建:

allowBuilds:
onnxruntime-node: true
koffi: true

里面有什么

一个包,四层,形式上跟自带 Voice input 的四行一样:

| 层 | 是什么 |
| ./lib/registry.js | speech-to-text 的 fork,修好了 configure() |
| ./lib/gigaam/index.js | GigaAM v3 CTC 服务商,跑在 onnxruntime-node 或 transcribe-cpp 上 |
| @deepseek-ai/dsh-experimental-api-speech-to-text | 浏览器↔宿主桥接,自带 |
| @deepseek-ai/dsh-experimental-client-ui-voice-input | 麦克风按钮,自带 |

默认值:识别器 gigaam-v3-ctc-local,语言 ru。全新配置档开箱即用,不用点任何东西。

第 1、2 层用相对路径说明符指定——加载器会在包内部解析它们。这样 bundle 才能自给自足:从 git 装进来的包,不能依赖自己的子目录。

引擎

引擎由 engine 配置决定。默认 auto:Apple Silicon 上用 mlx,其他一律 onnx-asr。

| engine | 里面是什么 | Mac | Nvidia | CPU | 标点 |
| auto | 自己选 | 有 | 有 | 有 | 有 |
| mlx | gigaam-mlx,纯 MLX | 有 | 无 | 无 | 有 |
| onnx-asr | onnx-asr,走 onnxruntime 的 e2e | 有 | 有,CUDA | 有 | 有 |
| gguf | GGUF Q8_0,走 transcribe-cpp | 有,Metal | 有,CUDA | 有 | 无 |
| onnx | int8,走 onnxruntime-node | 有 | 有 | 有 | 无 |

Apple M1 实测,预热后,俄语语音 5 秒和 28.6 秒:

| 引擎 | RTF 5 秒 | RTF 28.6 秒 |
| mlx (e2e ctc) | 0.027 | 0.017 |
| onnx-asr (e2e ctc) | 0.048 | — |
| gguf (Q8_0) | — | 0.016 |
| onnx (int8) | 0.038 | 0.043 |

只有 e2e 引擎能出标点。 GigaAM 的 CTC 头词表只有 34 个 token:▁、32 个俄文字母和 <blk>。里面压根没有标点符号,所以 gguf 和 onnx 无论怎么配都出不了标点。
同一个位置的两个例子:панель а показывает(CTC)对比 Панель A показывает(e2e)。

量化取决于平台,这一点已经考虑到了:MLX 量化只适用于 Apple Silicon,GGUF 既能通过 Metal 也能通过 CUDA 运行,而 ONNX int8 是通用格式,所有平台都能用。

Python 引擎

需要 Python ≥ 3.10,并且 ffmpeg 在 PATH 中:

uv venv ~/.dsh/venvs/gigaam-mlx --python 3.12
uv pip install --python ~/.dsh/venvs/gigaam-mlx/bin/python \
"gigaam-mlx @ git+https://github.com/aystream/gigaam-mlx.git"
uv pip install --python ~/.dsh/venvs/gigaam-mlx/bin/python onnx-asr onnxruntime

一个 venv 同时服务两个 sidecar;在非 Apple 平台上,只装 onnx-asr 就够了。
路径按这个顺序查找:e2ePythonPath,否则 $GIGAAM_MLX_PYTHON,否则 <dsh home>/venvs/gigaam-mlx/bin/python。权重由引擎自己下载到 Hugging Face 缓存。

首次请求的代价。 在新进程里,引擎要编译流水线:第一次响应约 1.7 秒,而预热后只要 0.13 秒。不建议设置 idleTimeoutMs: 0——worker 必须能撑过两次录音之间的停顿。

词典

识别器个头小,容易把名字念错。所有运行时都不支持 hotword 偏置,所以纠正在识别之后按文本进行。

词典是 ~/.dsh/stt-lexicon.json 里的 JSON 数组:

["Sisyphus", "авто-брайн", "dsh", "GigaAM", "obsidian"]

只有当术语不在文本中,并且找到的词足够相似(lexiconThreshold,默认 0.8)时,才会替换。这个阈值既挡住误报,也挡住 Сизифус → Sisyphus 这类情况:靠字符串度量无法还原重度音译,瞎猜还不如把词原样留下。像 дш → dsh 和 гигаам → GigaAM 这种干净的案例能命中,因为它们可以通过同一套键盘布局归并。

为什么注册表被 fork 了

官方的 configure() 拿当前语言去比对新服务商:

const id = patch.providerId ?? this.config.defaultProvider.get();
this.selectedProvider(id, patch.language ?? this.config.language.get());

这样一来,当保存的语言不在新服务商的列表里时,就没法切换识别器。在设置里表现为「选了又被回滚」,而且无路可走:只有已经支持俄语的服务商才能选俄语。

修复方案:单纯切换服务商时,取新服务商接受的语言——先取保存的语言,否则取它列表里的第一个。显式指定的语言仍然会校验,也仍然会被明确拒绝。

服务契约没有变:名字还是 speechToText,配置结构和所有方法都一样,所以官方 bridge 和 UI 不用改动就能对着 fork 跑。

检查

npm test # 注册表(11 项检查)+ 词典(12 项检查)
node test/provider.mjs <clip.wav> # 服务商:注册、prepare、转写

服务商有负向对照:静音必须产出空文本,否则坏掉的模型会被当成能用的。

引擎实测:

node test/provider.mjs <clip.wav> ~/.dsh/models/gigaam-v3-ctc auto # 或 onnx-asr、mlx、gguf、onnx
node scripts/models.mjs # 磁盘上有什么、哪些可以删
node scripts/selftest.mjs <clip.wav> ~/.dsh/models/gigaam-v3-ctc onnx # 只测 Node 引擎

接下来做什么

在 e2e 引擎里用 RNNT 替换 CTC。 目前默认是 ctc,它更快。rnnt 号称更准(作者在 M2 Max 上约 77× 实时,ctc 约 330×),两条分支都带标点。改配置 e2eModel 就能切换,不用重装。

内存。 默认空闲 120 秒后释放 worker。idleTimeoutMs: 0 会让它一直保持加载状态——在笔记本上最好别这么设。

许可证

MIT。注册表分支衍生自 @deepseek-ai/dsh-experimental-speech-to-text 0.1.7-rc.2。模型权重不随包分发:服务商会按固定修订自行拉取。
预览分享卡片长什么样 ↓tayuLuc/dsh-ru-voice-input
分享 · DeepSeek Harness Hub
tayuLuc/dsh-ru-voice-input

在编辑器里点麦克风,用俄语说话即可转写为草稿

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部