dsh-web-speech-input
leozou320-ai
Voice-to-text for the DeepSeek Harness Web UI — live, editable, never auto-sends. | DeepSeek Harness 网页语音输入
PROJECT TOPICS
PROJECT README
An open-source voice input plugin for DeepSeek Harness. It transcribes speech, makes a narrowly constrained cleanup pass with the model already selected in the current Harness Session, and inserts the result into the composer.
It does two things:
It does not translate or answer dictated content. It has no API-key setting because model routing and credentials remain entirely within Harness.
Current version:
0.3.0, built against the DeepSeek Harness0.1.0-rc.6Host, Client Modules, Slot, and Typert interfaces.
conversation.input.left slot.SpeechRecognition / webkitSpeechRecognition where available.Fn×2 on macOS or Win+H on Windows.Ctrl+Alt+V by default and supports custom modified shortcuts or F1–F24.Browser plugins cannot register OS-wide global shortcuts. The custom shortcut works while the Harness page has focus.
Remove any older or broken build first if it is still present:
dsh plugin --profile <profile> remove dsh-voice-input
Install the latest GitHub version:
dsh plugin --profile <profile> add github:lhenlihai-hub/dsh-voice-input
Then fully quit and restart that Harness profile. Replace <profile> with the profile you use, commonly web.
For local development:
git clone https://github.com/lhenlihai-hub/dsh-voice-input.git
cd dsh-voice-input
npm install
npm test
cd ..
dsh plugin --profile <profile> add ./dsh-voice-input
To install a tarball:
npm run pack:plugin
dsh plugin --profile <profile> add ./dsh-voice-input-0.3.0.tgz
Ctrl+Alt+V.In OS-dictation fallback mode, the composer is focused automatically. Start the OS dictation shortcut and speak; cleanup begins after about 1.2 seconds without a draft change.
Version 0.3.0 replaces the previous prompt instead of layering exceptions onto it. The model receives one exhaustive set of allowed edits:
For example:
Input: 我们现在对软件进行重新的review
Output: 我们现在对软件进行重新的review。
The Host requests a strict {"text":"..."} JSON envelope. Only its validated text field reaches the composer. Empty, malformed, excessively expanded, failed, or tool-call output falls back to the recognized source text.
This behavior is independently implemented. It follows public dictation-product principles such as removing filler, repetition, and explicit self-corrections; it is not affiliated with Typeless.
localStorage.Whether browser recognition sends audio to its vendor depends on that browser's implementation and privacy policy. Use OS dictation fallback if that matters for your environment.
Choose Uninstall plugin in settings and confirm. The Host calls the official fixed command for the current profile, clears this plugin's browser settings, returns success to the page, and then requests a graceful Harness exit. Restart Harness afterward; the plugin is no longer part of that profile.
The button removes the installed profile dependency and bundle registration. It does not delete a separate source checkout you cloned for development or purge pnpm's shared content-addressed cache.
Manual fallback:
dsh plugin --profile <profile> remove dsh-voice-input
VoiceInputService injects the official llm and appExit services.@deepseek-ai/dsh-typert-generator.window.__ModuleLoader__.load(...) wrapper.conversation.input.left Slot.dsh.bundle.patch adds the Host row to the selected profile.The source package lives in packages/dsh-voice-input; the root package is the GitHub installation and build entry point.
Node.js 22 or newer is required.
npm install
npm test
npm pack --dry-run
The test command builds both plugin halves, generates the Typert protocol, checks strict schemas and fixed uninstall arguments, loads the Client factory, and verifies distributable artifacts.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。