前言¶
DeepSeek Harness(DSH)支持通过语音输入把麦克风录音交给本地或远程的 speechToText 提供者。实验性语音输入 bundle 默认带的 SenseVoice 面向中文、英文等语种,对俄语并不合适。若你希望在 DSH Web 聊天框里用麦克风说俄语、得到带大小写和标点的西里尔文文本,又不想调用云端 API 或配置密钥,就需要一个专门注册为 speechToText 提供者的本地俄语 ASR 插件。
下面介绍社区插件 dsh-gigaam-stt(维护者 OldSchool686,分类:模型推理)。它以 GigaAM v3 的 ONNX int8 模型在 CPU 上通过 sherpa-onnx 推理,首次使用时按需下载约 320 MB 资源,全程离线。
这是什么¶
dsh-gigaam-stt 的定位是:为 DSH 现有语音输入管线提供 仅俄语 的本地听写能力。录音经 16 kHz 单声道 PCM16 WAV 进入该提供者,在 worker 线程中由 sherpa-onnx 解码,输出类似「Привет, как дела?」的文本。
引擎来自 GigaAM v3(220M Conformer,MIT),导出为 e2e_ctc int8 ONNX,由 sherpa-onnx 加载。sherpa-onnx 复用 DSH 安装里已有的依赖,插件本体只依赖 Node 内置模块,无需单独编译或 Python 环境。
核心功能¶
README 中列出的能力如下(均为插件自述,未单独复测):
- 俄语识别与标点:
e2e变体直接输出大小写和标点;资料引用 ai-sage 基准称 GigaAM v3 在俄语 WER 约 8.4%,并对比 T-One、Whisper-large-v3 等(数字来自上游 README,非本文实测)。 - CPU、体积与速度:int8 模型约 320 MB;加载后 RSS 约 420 MB;在四线程上 RTF 约 0.04(资料示例:11 秒语音约 0.45 秒转写)。
- 懒加载与空闲卸载:首次录音时下载并加载(加载约 1 秒);空闲 5 分钟后卸载,无后台常驻任务。
- 长录音:按停顿对齐切分为最长 20 秒的窗口再解码,避免单次过长输入导致 sherpa-onnx 异常;可通过配置调整窗口与上限。
- 数字归一化:默认把俄语数字词转为阿拉伯数字(如「двадцать пять」→「25」);可用
numbers: words关闭。 - 非阻塞:识别在
worker_threads中执行,不阻塞聊天界面。 - 安全下载:资源 URL、大小与 SHA-256 固定;中断下载可从
.part续传。
数据流可概括为:
mic → 16 kHz mono PCM16 WAV → speechToText 提供者 → worker → sherpa-onnx → 西里尔文文本
环境与依赖¶
使用前需满足:
- DSH 已具备语音输入栈
@deepseek-ai/dsh-experimental-voice-input-bundle(speech 服务、麦克风 UI、Remote API)。没有该 bundle 时,本插件可安装但聊天里没有麦克风可挂载。 - Node.js 22+(与 DSH 要求一致);x86-64 或 arm64 的 Linux / macOS / Windows。
- 磁盘约 350 MB 留给模型;加载时约 450 MB RAM。
- 浏览器需对 DSH Web 授予麦克风权限(首次录音时出现提示)。
安装与启用¶
可通过 DSH 智能体安装 bundle,或在 DSH Web 的 Plugin Manager 中安装。安装目标接受与 pnpm 相同的 spec:
| 来源 | 安装目标 |
|---|---|
| npm registry | dsh-gigaam-stt |
| GitHub repository | github:OldSchool686/dsh-gigaam-stt |
| 本地目录 | 绝对路径,例如 /home/me/dsh-gigaam-stt |
| Tarball | 例如 /home/me/dsh-gigaam-stt-1.1.0.tgz |
bundle 的 patch 会:将默认 speech 提供者设为 gigaam-local 且语言为 ru;关闭内置 SenseVoice(避免语种不匹配);并挂载本提供者,dataRoot 指向 dshHomePath('speech-to-text', 'gigaam')。
若 profile 里还没有 voice-input bundle,patch 里前两行覆盖会以警告跳过——需先安装 @deepseek-ai/dsh-experimental-voice-input-bundle,再重新应用本 bundle。
插件以当前 DSH 进程权限运行;安装前建议在 GitHub 阅读源码与 MIT 许可证(package.json 版本 1.1.1),确认符合你的安全与合规要求。
首次运行与模型文件¶
在聊天输入框点击麦克风。准备卡片会显示一次性从 Hugging Face 下载两个文件(合计约 320 MB),经 SHA-256 校验,状态依次为 downloading → loading → ready。
默认存放目录为 ~/.dsh/speech-to-text/gigaam/:
| 文件 | 字节数 | SHA-256 |
|---|---|---|
gigaam_v3_e2e_ctc_int8.onnx |
319869121 | 0aacb41f70f0f5aaac4b45dd430337b9e16b180f22c72af04db8516e7609c3c0 |
gigaam_v3_e2e_ctc_tokens.txt |
2006 | f8eb9b115e2748db9c40a5897cae11dd0678cc0b40fd7e25f8c43b3bf28715e4 |
离线或预置缓存时,可按 README 将同名、同尺寸文件放入该目录;已存在且尺寸正确的文件会直接使用:
mkdir -p ~/.dsh/speech-to-text/gigaam
curl -L -o ~/.dsh/speech-to-text/gigaam/gigaam_v3_e2e_ctc_int8.onnx \
https://huggingface.co/Smirnov75/GigaAM-v3-sherpa-onnx/resolve/main/gigaam_v3_e2e_ctc_int8.onnx
curl -L -o ~/.dsh/speech-to-text/gigaam/gigaam_v3_e2e_ctc_tokens.txt \
https://huggingface.co/Smirnov75/GigaAM-v3-sherpa-onnx/resolve/main/gigaam_v3_e2e_ctc_tokens.txt
modelOrigins 默认先试 https://huggingface.co,再试 https://hf-mirror.com;两者可达时 UI 可选镜像。
配置项¶
在 profile patch 的 speech-to-text-gigaam 行(或插件设置 UI)中可调整:
| 选项 | 默认值 | 含义 |
|---|---|---|
providerId |
gigaam-local |
注册 id;须与 speech-to-text.defaultProvider 一致 |
dataRoot |
必填 | 模型文件绝对目录 |
modelOrigins |
Hugging Face + hf-mirror | 下载镜像顺序 |
threads |
4 |
sherpa-onnx 线程数 |
idleTimeoutMs |
300000 |
空闲多久卸载模型 |
maxAudioSeconds |
600 |
超过则拒绝解码 |
maxSegmentSeconds |
20 |
停顿对齐分段上限(5–180) |
numbers |
digits |
words 保留口语数字 |
progressIntervalMs |
100 |
下载进度上报间隔 |
示例:
- id: speech-to-text-gigaam
config:
dataRoot: !!js dshHomePath('speech-to-text', 'gigaam')
threads: 2
典型用法¶
界面:安装 voice-input bundle 与本插件后,在 DSH Web 聊天 composer 按麦克风,说俄语,等待转写结果填入输入区。
无 UI 自检(在插件目录下,需本机已有 DSH 提供的 sherpa-onnx):
cd dsh-gigaam-stt
node scripts/selftest.mjs
GIGAAM_SAMPLE=/path/to/speech.wav node scripts/selftest.mjs
脚本直接调用 worker.js;sherpa 从 DSH 安装解析,可用环境变量 GIGAAM_SHERPA_PATH 覆盖;模型路径为 ~/.dsh/speech-to-text/gigaam。
适用场景与注意¶
适合:需要在 DSH 对话里 离线、无 API Key 做 俄语 语音输入的开发者或用户;对 CPU 友好、模型体积约 320 MB 的场景。
不适合:中文或其他非俄语主场景(本插件仅俄语);未安装 experimental voice-input bundle 的环境(无麦克风入口)。
若出现找不到 sherpa-onnx-node,README 建议在 DSH 进程环境中设置 GIGAAM_SHERPA_PATH 指向 sherpa-onnx.js 的绝对路径。
DSH 生态强调「一切皆插件」;社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。
链接¶
- 目录页:https://www.skillhub.cn/plugins/OldSchool686/dsh-gigaam-stt
- 源码与完整说明:https://github.com/OldSchool686/dsh-gigaam-stt
经过上面的步骤,你可以在 DSH 聊天里用本地 GigaAM v3 完成俄语听写,并在 profile 中按需调节线程、分段与数字写法。