DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Ru Voice Input — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
R

dsh-ru-voice-input

Ru Voice Input

以俄语为主的 DeepSeek Harness 语音输入包:编辑器中配备了默认支持俄语的麦克风。默认识别器为本地 GigaAM v3 CTC (int8),默认语言为 ru;同时分叉了语音注册表,使切换识别器真正生效。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:tayuLuc/dsh-ru-voice-input#1db4376b057875a731e35779965bfca74475cd25
README兼容性版本

兼容性与来源证明

Ru Voice Input 以 dsh-ru-voice-input 发布,当前版本为 0.7.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/27

版本

0.7.0stable
2026/9/27
0.5.0stable
2026/9/27
0.3.0stable
2026/9/27
查看其余 2 个版本收起版本
0.2.0stable
2026/9/27
0.1.0stable
2026/9/27

相关插件

正在加载相关插件…

最新版
0.7.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/27
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 vision-media 分类下经过校验的插件。

Modlens@liustack/modlens面向仅支持文本的 LLM 的插件视觉能力,由免费的 Antigravity CLI 提供支持Tool Describe Image@linxin666/dsh-tool-describe-image面向模型的 describe_image 工具,用于 dsh Web GUI:通过在兼容 OpenAI 的端点调用视觉语言模型,为文本模型提供图像理解能力,以描述一张图像(本地路径、http(s) URL 或附件引用)。可热插拔 —Vision Routerdsh-vision-router为仅支持文本的 DeepSeek Harness agents 提供视觉能力:内置免费视觉链路和像素级工具。除非配置为严格仅限本地使用,否则远程视觉提供商(包括默认的免费回退服务)会接收图像内容。Vision Toolkit@anionex/dsh-vision-toolkit面向 Harness 原生集成的 DeepSeek 与 agent-vision-toolkit:图像问答、OCR、定位、UI 还原、像素差异、Artifacts 和 Web UI。

README

dsh-ru-voice-input

Русский Voice input для DeepSeek Harness. Одна установка — и в композере микрофон, который сразу понимает русский.

Зачем он существует

Штатный плагин Voice input заточен под китайский: единственный провайдер — SenseVoice, и в релизном чекпойнте русского нет. Замер на Apple M1 (26.09.2026, 28.6 с русской речи): SenseVoice int8 вернул пустую расшифровку (0 слов, WER 100 %) и всё равно занял ~600 МБ RAM.

Замеры — на M1 / 8.6 ГБ, синтез речи macOS say -v Milena. Это смоук, а не бенчмарк.

Установка

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

Перезапустите Web UI. Дальше — кнопка микрофона между моделью и Send: нажать, разрешить доступ, записать, Stop. Расшифровка вставляется в черновик.

Первое использование скачивает и проверяет модель (ревизия и SHA-256 закреплены) в ~/.dsh/models/gigaam-v3-ctc/. SenseVoice не качается: в этом бандле его нет, у него нет русского.

Если 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 с починенным 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 заданы относительными спецификаторами — загрузчик их резолвит внутри пакета. Так бандл остаётся самодостаточным: пакет, поставленный из git, не может зависеть от собственных подкаталогов.

Движки

Движок выбирается конфигом engine. По умолчанию auto: на Apple Silicon берётся mlx, везде остальное — onnx-asr.

engineЧто внутриMacNvidiaCPUПунктуация
autoвыбирает саместьестьестьесть
mlxgigaam-mlx, чистый MLXестьнетнетесть
onnx-asronnx-asr, e2e через onnxruntimeестьесть, CUDAестьесть
ggufGGUF Q8_0 через transcribe-cppесть, Metalесть, CUDAестьнет
onnxint8 через onnxruntime-nodeестьестьестьнет

Замеры на Apple M1, прогретые, русская речь 5 с и 28.6 с:

движокRTF 5 сRTF 28.6 с
mlx (e2e ctc)0.0270.017
onnx-asr (e2e ctc)0.048—
gguf (Q8_0)—0.016
onnx (int8)0.0380.043

Пунктуацию дают только e2e-движки. Словарь CTC-голов GigaAM — 34 токена: ▁, 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 обслуживает оба сайдкара; на не-Apple достаточно поставить только onnx-asr. Путь ищется так: e2ePythonPath, иначе $GIGAAM_MLX_PYTHON, иначе <dsh home>/venvs/gigaam-mlx/bin/python. Веса движок качает сам в кэш Hugging Face.

Цена первого запроса. В свежем процессе движок компилирует пайплайн: первый ответ ~1.7 с против 0.13 с прогретого. idleTimeoutMs: 0 ставить не стоит — воркер должен переживать паузу между записями.

Словарь

Распознаватели маленькие, и имена они коверкают. Ни один из рантаймов не умеет hotword-биасинг, поэтому коррекция идёт по тексту после распознавания.

Словарь — JSON-массив в ~/.dsh/stt-lexicon.json:

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

Термин подставляется только если его нет в тексте и найденное слово достаточно похоже (lexiconThreshold, по умолчанию 0.8). Порог режет и ложные срабатывания, и случаи вроде Сизифус → Sisyphus: восстановить тяжёлую транслитерацию строковой мерой нельзя, и гадать хуже, чем оставить слово как есть. Чистые случаи вроде дш → dsh и гигаам → GigaAM ловятся, потому что сводятся через одну раскладку букв.

Почему реестр форкнут

Штатный configure() проверяет текущий язык против нового провайдера:

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

Из-за этого смена распознавателя невозможна, когда сохранённый язык не входит в список нового провайдера. В настройках это выглядит как «выбрал — откатило», и выхода нет: выбрать русский можно только у провайдера, который русский уже поддерживает.

Фикс: голое переключение провайдера берёт язык, который новый провайдер принимает, — сначала сохранённый, иначе первый в его списке. Явно заданный язык по-прежнему проверяется и по-прежнему отвергается вслух.

Контракт сервиса не изменён: имя speechToText, схема конфига и все методы те же, поэтому штатные мост и UI работают против форка без изменений.

Проверка

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-движков

Что дальше

RNNT вместо CTC в движке e2e. Сейчас по умолчанию ctc — он быстрее. rnnt заявлен точнее (~77× против ~330× realtime у автора на M2 Max), обе ветки с пунктуацией. Переключается конфигом e2eModel, без переустановки.

Память. По умолчанию воркер освобождается через 120 с простоя. idleTimeoutMs: 0 держит его загруженным постоянно — на ноутбуке этого стоит избегать.

Лицензия

MIT. Форк реестра — производная от @deepseek-ai/dsh-experimental-speech-to-text 0.1.7-rc.2. Веса модели не входят в поставку: провайдер тянет их сам по закреплённой ревизии.