Introduction

Input fields in DSH Web GUI usually rely on keyboard input. If you need to dictate continuously, edit while speaking, or send after releasing the button, and you don’t want to deploy an extra server or install a local speech recognition engine, you can connect voice input to built-in browser capabilities.

anweat/dsh-voice-webspeech is a browser voice input plugin for DSH Web GUI. It uses the browser’s built-in Web Speech API by default. Hold the microphone button to speak, release it to stop recognition, convert speech to text, and write it into the input field.

What is this

This is a DSH Web GUI plugin maintained by anweat with an MIT license.

It solves the scenario on the DSH Web side where users want to use voice input but don’t want to introduce additional servers, API keys, model downloads, or Python dependencies. By default, the plugin relies on the browser’s built-in Web Speech API for speech-to-text:

  • Zero server
  • Zero API Key
  • Zero model download
  • Zero Python

Audio is handed directly to the browser’s speech service, without passing through the DSH server, without saving to disk, and without telemetry. In Microsoft Edge, this corresponds to Azure Speech; in Google Chrome, it corresponds to Google/Chrome Speech.

Core Features

The following list confirms the available capabilities.

Hold to Speak, Release to Convert

A microphone button will appear on the left side of the input field toolbar. Hold the microphone button to start speaking, release it to stop recognition, and convert speech to text.

Real-time Feedback

While listening, the microphone button turns red and pulses. The recognized text is displayed in real-time above the button.

Write to Input Field by Default

The recognition result is written into the DSH Web input field by default, allowing for further editing before sending. It can also be appended to existing text.

If you don’t want to edit first, you can switch to “Release to Auto Send”.

Multi-language Support

Supports BCP-47 languages such as Mandarin Chinese, Cantonese, Traditional Chinese, English, Japanese, Korean, French, German, Spanish, and Russian.

Local Preference Saving

The settings page mounts a dedicated “Voice Input” tab and does not rely on the host settings namespace. Preferences are saved locally in the browser.

Installation and Activation

Environment Requirements

First, confirm that the current environment meets the following requirements:

  • DSH version: >=0.1.0-rc.3 <0.2.0
  • Node.js: ^22.19.0 || >=24.0.0
  • Browser: Edge or Chrome required; Firefox/Safari not supported

The browser needs microphone permission. Upon first use, it will request authorization in the address bar.

Installing the Plugin

Install from GitHub:

pnpm dsh plugin --profile web add github:anweat/dsh-voice-webspeech

It is recommended to pin to a commit to avoid future changes:

pnpm dsh plugin --profile web add github:anweat/dsh-voice-webspeech#<sha>

If pnpm >=10 prompts for allowBuilds, it is usually triggered by the prepare script. Follow the prompt to write the printed package key into the profile’s pnpm-workspace.yaml, then run the installation command again.

Activating the Plugin

Restart DSH Web after installation:

pnpm dsh web

After activation, a microphone button will appear on the left side of the input field toolbar.

Note on Loading Method

Do not manually inject this plugin into the profile’s cordis.patch.yml, otherwise the same loader id will be duplicated.

`@deepseek-ai/*` is an optional peer dependency, externalized during build, and provided by DSH at runtime.

Typical Usage

The following steps provide a reproducible usage example.

  1. Restart DSH Web:
pnpm dsh web
  1. Open the DSH Web input box and find the microphone button on the left side of the toolbar.

  2. Hold the microphone button to speak and release it to stop recognition.

  3. By default, the recognition result is written into the input box and appended to existing text. You can continue editing and send it manually.

  4. If you want to send directly after releasing, go to:

Settings → Voice Input (Web Speech)

Enable “Release to Auto Send”.

  1. Uninstall the plugin:
pnpm dsh plugin --profile web remove dsh-voice-webspeech

You can also remove it from the profile dependencies and then run:

pnpm install

Applicable Scenarios and Notes

Suitable for DSH Web GUI users who want to use browser-built-in speech recognition for input on Edge or Chrome without installing additional local speech engines.

Notes before use:

  • The plugin loads with the current dsh web process and runs with the current DSH process permissions; it is also controlled by browser microphone permissions.
  • You should check the GitHub source code, MIT license, and dependencies before installing.
  • When the browser does not support the Web Speech API, the plugin cannot work by default.
  • Firefox/Safari do not support the default recognition path.
  • First-time use requires browser microphone authorization.
  • Audio is only handed to the browser’s speech service, without passing through the DSH server, saving to disk, or telemetry.
  • Do not manually modify the profile’s cordis.patch.yml to load this plugin.

Links

Community directory page:

https://www.skillhub.cn/plugins/anweat/dsh-voice-webspeech

GitHub:

https://github.com/anweat/dsh-voice-webspeech