Back to home@promisez322-prog

dsh-vox-input

Voice (speech-to-text) input for the DSH Web composer via Web Speech API — tap, speak, transcript fills the input box. Zero server, zero API keys.

Stars
1
Language
JavaScript
Created
Aug 30, 2026
Updated
Aug 31, 2026
GitHub repo

Introduction

dsh-vox-input

Voice (speech-to-text) input for the DSH Web composer via the browser Web Speech API (Chrome/Edge). Tap the mic, speak, and the transcript fills the input box — editable before send. Zero server, zero API keys, zero model downloads; nothing leaves the machine.

Install

# symlink the package into the web profile (local dev), then add the row:
ln -s <this-dir> "$DSH_HOME/profiles/web/node_modules/dsh-vox-input"
# append to $DSH_HOME/profiles/web/cordis.patch.yml:
#   - insert:
#       - id: dsh-voice-input
#         name: dsh-vox-input
#
# IMPORTANT: the short `id: dsh-voice-input` above is only the host patch-row
# identifier. In client.js, the module registration MUST use the exact package
# name:
#   window.__ModuleLoader__.load({ id: "dsh-vox-input", factory })
# Never replace that client registration with the short row id.
# restart: node <dsh>/lib/bin.js web

Use

A waveform 🎙️ control appears in the composer tool row. Tap to listen (Chinese by default; the tiny chip cycles zh-CN / en-US / auto). Interim text streams in a live caption above the composer; final text is appended into the draft sentence by sentence (pause ~1s between sentences — the session stays open, and auto-ends after ~4s of silence). Non-Chromium browsers show a muted badge.

Notes

  • Client UI (dual-face) plugin: the host half is an empty shell; all logic lives in client.js via window.__ModuleLoader__.load. The registration ID must equal package.json.name exactly (dsh-vox-input). See AGENTS.md.
  • MIT licensed. Conventions follow the ecosystem references (dsh-mic-input, dsh-voice-input-web); implementation is original.