How it behaves
After the Web UI is refreshed, the plugin adds a microphone icon beside the input box. Use Ctrl+Shift+Space by default to start voice input. The flow is:
microphone → transcription → optional polishing → editable draft → manual send
The draft is not sent automatically. Polishing can remove speech fillers, correct ASR errors, and handle spoken corrections such as “not A, but B” and numbered points. If polishing fails or is cancelled, the original transcription remains.
Transcription backends
| Backend |
Operation |
Required setup |
Web Speech |
Browser performs real-time recognition |
Chromium-based browser; audio may be processed by the browser vendor |
本地 Whisper |
Host runs the local whisper CLI after recording stops |
Pre-installed openai-whisper; download a model in the plugin settings |
Groq |
Host sends the recording to the Groq Whisper API |
Groq API key |
阿里云百炼 |
Host uses DashScope synchronous transcription |
HTTPS origin, API key, model name; 300-second per-request limit |
自定义 OpenAI 兼容 |
Sends a POST request to the configured endpoint |
Endpoint URL, API key and model name; endpoint must provide /audio/transcriptions |
Whisper model weights are not bundled with the plugin. Provider quotas and free allowances are subject to the providers’ current documentation.
Polishing configuration
The polishing model is selected from models already connected in dsh → 设置 → 模型. The plugin stores the provider, model name and prompt, and reuses the LLM key from the existing DSH configuration. An empty prompt selects the built-in default prompt, which can be viewed in the settings page.
Requirements and commands
The documented runtime requirements are DeepSeek Harness 0.1.0-rc.6 or rc.7, and Node.js ^22.19.0 || >=24.0.0. Remove the installed plugin with dsh plugin --profile web remove dsh-ears; refresh the Web UI afterwards. For local development, the repository documents pnpm install, pnpm check, pnpm test, pnpm build, pnpm dev:config, pnpm dev:web, and pnpm dev:watch.
Written from the project's own documentation and kept in sync with it. Where the two disagree, the source is authoritative — read the README on GitHub