- Home
- Plugins
- Vision, Voice & Multimodal
- dsh-voice-enhance
dsh-voice-enhance
chrono-rigger/dsh-voice-enhance
Hold Alt (default; rebindable in the plugin page) to dictate and insert a cleaned-up transcript, plus a sparkle button that rewrites the composer draft into a clearer prompt. Dictation requires the Harness Voice Input plugin with its SenseVoice model enabled.
Install
dsh plugin --profile web add github:chrono-rigger/dsh-voice-enhanceREADME
dsh-voice-enhance
Voice dictation and prompt enhancement for DeepSeek Harness (dsh) — two controls added to the message composer.
What it does
Hold Alt to dictate. Press and hold Alt, speak, release. The recording is transcribed on the Host and then cleaned up — typos, homophones, missing characters, punctuation and sentence breaks — and the result is inserted at the cursor. The cleanup is deliberately minimal: it never rewrites, expands, summarises or asks a question, and anything uncertain is left exactly as it came out. A dictated sentence that happens to sound like an instruction is treated as text to be copied, not as a request to follow.
✨ Enhance prompt. The sparkle button at the left of the composer, immediately before the model selector, rewrites the current draft into a brief an assistant can act on without asking follow-up questions: it supplies the background and goal, splits the request into separately checkable task points, states acceptance per point, and fixes the scope, constraints and deliverable format. The result replaces the draft, with an Undo control to get the original back.
Restore draft. Enhancing replaces the whole draft, so only enhancement records draft history; dictation just fixes homophones and punctuation without rewriting what you said, so it never enters the history. Restore either with the "Restore draft" button on the status pill, or by pressing R while the focus is not in a text field (inside the composer, R keeps typing the letter). The history is kept per Session in browser storage, survives a reload and holds up to 12 drafts; a restore is itself undoable, so the text currently in the box is never lost. The pill also keeps the restore affordance visible once a draft is stored — dictating again will not hide it.
A status pill appears below the composer card while either control is working: elapsed seconds, a "send on release" switch, an Insert button when a transcript could not be placed, and an Undo button after an enhancement.
| Key / control | Behaviour |
|---|---|
Alt (press and hold) | Start recording |
release Alt | Stop, transcribe, correct, insert |
Alt + any other key | Treated as a shortcut (Alt+Tab is caught by the OS); the capture is discarded |
Esc while recording | Cancel |
| ✨ button | Enhance the draft |
Ctrl+. | Restore the previous draft |
Requirements
- The recording is transcribed by the Harness Voice Input plugin (
dsh-experimental-voice-input-bundle), which must be enabled and its SenseVoice model prepared. Without it the plugin reports that the speech service is unavailable. - Correction and prompt enhancement run on the Host through the
llmservice. Correction always uses the composition's default model route; prompt enhancement follows the model picked on the plugin page (default: the current route, freely selectable from every installed model). No API key is configured or read by this plugin. - The browser needs microphone access (HTTPS or
127.0.0.1, plus OS permission).
Install
dsh plugin --profile <profile> add github:Chrono-rigger/dsh-voice-enhance
Or from the Web UI: Settings → Plugins, then install the bundle by package name or from a local directory.
Notes
- Two Remote calls cross the wire, both of them one-shot text rewrites:
promptTools/refinewithmode: "correct"for a transcript,mode: "enhance"for a draft; the enhance request may carry anenhanceRoutepicked on the plugin page. - Nothing is persisted except three browser-local preferences: the "send on release" switch (
dsh-voice-enhance.autoSend), the custom keys (dsh-voice-enhance.keys) and the enhancement model route (dsh-voice-enhance.enhanceRoute). Recordings are discarded after transcription; no audio is written to disk. - The audio pipeline is bounded end to end: microphone permission, recorder flush, decoding, resampling and transcription each have a timeout, so a wedged browser API surfaces as an error message rather than an endless "transcribing" state.
- Two Remote calls cross the wire, both of them one-shot text rewrites:
promptTools/refinewithmode: "correct"for a transcript,mode: "enhance"for a draft. - The cleanup is checked in code, not only asked for in the prompt: an answer that replies to the text, asks a question, expands or shortens it is rejected, one terser retry is made, and failing that the transcript is inserted unchanged. A transcript with a typo still says what was said; a rewritten one does not.
- The custom element styles use the host theme tokens (
--dsw-alias-*), so light and dark themes need no separate artwork.
Licence
MIT — see LICENSE.
Related plugins
dsh-web-ui (dsh-tool-describe-image)
zhu1090093659/dsh-web-ui
modlens
liustack/modlens
ipollowork
devin-axis/ipollowork
dsh-vision-router
ysr666/dsh-vision-router