Repository navigation
Russian speech recognition for Voice input — GigaAM-v3 optional bundle (working prototype, MIT, no new native dependency) #11745
almaziphone
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
TL;DR
I built a community bundle that adds Russian to the experimental Voice input capability:
GigaAM-v3 e2e CTC INT8 (MIT, SaluteDevices/Sber) running on the already shipped
sherpa-onnx-noderuntime. It registers a second provider intoctx.speechToText, so themicrophone UI, preparation cards, cancellation, settings persistence and transcript insertion work
unchanged.
dsh-plugintopic): https://github.com/almaziphone/dsh-speech-to-text-rubash -c "$(curl -fsSL https://raw.githubusercontent.com/almaziphone/dsh-speech-to-text-ru/main/scripts/install.sh)" install.shdsh plugin --profile desktop add github:almaziphone/dsh-speech-to-text-ru, refresh the window.Why this may be worth shipping
auto, zh, en, yue, ja, ko. There is no cloud provider in the experimental composition, soRussian-speaking users cannot use voice input at all.
casing and number normalization (e.g. «в 15:30»), which is exactly what dictation needs.
sherpa-onnx-nodeis already a dependency ofpackages/experimental/speech-to-text-sensevoice. The model is a pinned, on-demand download(321.7 MB model + 2 KB tokens + 1.8 MB Silero VAD), verified by size and SHA-256 exactly like
SenseVoice assets.
host-local, languagesru/auto, preparationstate machine (check → download → verify → load), bounded queue, managed worker process over an
authenticated loopback listener, Silero VAD segmentation, idle reclamation.
redistributed; no new licensing burden for the installation.
Measured on the app's own runtime (sherpa-onnx-node 1.13.8, macOS arm64, reference set)
Two native quirks are guarded in the worker and covered by tests: sherpa-onnx aborts on decodes
shorter than 160 samples, and the literal language
"auto"aborts the Whisper engine (only""means auto-detect).
What a PR would contain (when external PRs are accepted)
CONTRIBUTING.mdsays external pull requests are not accepted at the moment, so I'm posting thishere as the suggested channel instead of opening one. The community package is the working
prototype; porting it to the repository conventions is mechanical and I'm happy to do it:
packages/experimental/speech-to-text-gigaam/mirroringspeech-to-text-sensevoice—TypeScript source (
src/index.tsprovider,src/worker.ts), pinnedruntime/assets.json,locale/{en,zh}.json,README.{md,zh.md}+README.i18n.yaml,tests/,tsconfig.json,tsdown.config.ts.packages/experimental/voice-input-bundle/cordis.patch.yml: insert the provider row(
id: speech-to-text-gigaam,dataRoot: !!js dshHomePath('speech-to-text', 'gigaam')) and keepsensevoice-localas the shipped default — users pick the recognizer in Settings → Voice input.apps/desktop/package.jsonand the runtime dependency list) plusscripts/optional-bundles.spec.ts/ installed-product-isolation expectations.docs/subsystems/voice-input.md(+.zh.md,.i18n.yaml), the experimental packagetable, and
THIRD_PARTY_NOTICES.md(GigaAM attribution).<160-sample guard, WAVvalidation, worker transport — CI-friendly, no downloads.
Open questions: extend the existing voice-input bundle (my preference) or ship a separate Russian
bundle; whether one more CPU-only language model fits the optional-bundle budget; Chinese docs
review (I can draft EN and adapt to your conventions).
Proof
Installed from GitHub into a clean DSH home, the host recomposed with the provider registered
(
gigaam-ru, languagesru/auto), preparation reused a verified cache, and a Russian recordingwas transcribed through the real
speechToTextservice in ~1.8 s wall time with punctuation andnumber normalization. Benchmarks and methodology:
docs/asr-validation.mdin the repo;implementation-ready integration checklist:
docs/upstream.md.AI declaration
The community implementation and this proposal were produced with an AI coding agent under my
direction; all measurements were run on my machine against the app's bundled runtime. If the work
is ported into the repository, I will fill the AI-declaration table per
.agents/skills/dsh-pr-descriptionand handle review feedback.Thanks for reading! — @almaziphone
All reactions