dsh-gigaam-stt:在 DeepSeek Harness 聊天里离线转写俄语语音

前言

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 → 西里尔文文本

环境与依赖

使用前需满足:

  1. DSH 已具备语音输入栈 @deepseek-ai/dsh-experimental-voice-input-bundle(speech 服务、麦克风 UI、Remote API)。没有该 bundle 时,本插件可安装但聊天里没有麦克风可挂载。
  2. Node.js 22+(与 DSH 要求一致);x86-64 或 arm64 的 Linux / macOS / Windows。
  3. 磁盘约 350 MB 留给模型;加载时约 450 MB RAM。
  4. 浏览器需对 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 / 幻方无官方从属关系。

链接

经过上面的步骤,你可以在 DSH 聊天里用本地 GigaAM v3 完成俄语听写,并在 profile 中按需调节线程、分段与数字写法。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜