Skip to content
dsh.fish
Bundle

dsh-web-speech-input

Microphone speech-to-text input for the DeepSeek Harness Web UI

Source
leozou320-ai
stars
1 stars
License
MIT
Updated
Updated 5 days ago

Readme

# dsh-web-speech-input

English | [简体中文](README.zh-CN.md)

A microphone button for the [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) Web composer. It uses the browser's Web Speech API to turn live speech into editable prompt text, including interim results while you speak.

## Features

- One-click start and stop from the conversation composer.
- Writes interim and final recognition results into the existing draft; it never submits a prompt automatically.
- Uses the page language, then the browser language, with `zh-CN` as the fallback.
- Clear listening, unsupported-browser, permission, microphone, and network states.
- Keyboard focus, ARIA labels, and reduced-motion support.
- Cleans up microphone recognition and injected styles when the plugin unloads.

## Requirements

- DeepSeek Harness Web profile `0.1.0-rc.5` or a compatible developer-preview build.
- A browser implementing `SpeechRecognition` or `webkitSpeechRecognition`.
- Microphone permission for the Harness Web origin.

Browser support and recognition behavior vary. Chromium-based browsers currently provide the broadest compatibility; availability is not guaranteed by this plugin.

## Install

```sh
dsh plugin --profile web add github:leozou320-ai/dsh-web-speech-input
```

Restart `dsh web`, then use the microphone button on the left side of the prompt composer. To remove it:

```sh
dsh plugin --profile web remove dsh-web-speech-input
```

## How it works

1. Click the microphone button.
2. Grant microphone access if the browser asks.
3. Speak; interim text appears in the current draft.
4. Click stop, review or edit the draft, and submit it yourself.

The plugin never clicks Send and never calls a DeepSeek API directly.

## Permissions and privacy

- The plugin requests microphone access only after you click its button.
- Audio is handled by the browser's speech-recognition implementation. Depending on the browser and operating system, recognition may use a remote vendor service and may not work offline.
- The plugin itself has no server component, stores no audio, and sends no network requests.
- Recognized text is inserted into the draft. It reaches the configured model provider only if you submit that prompt.
- Check your browser vendor's speech-recognition privacy terms before using confidential speech.

## Known limitations

- Firefox does not currently expose a compatible API in normal releases.
- Corporate policies, insecure origins, browser settings, or denied permissions can disable microphone recognition.
- Some browsers end continuous recognition after a pause; click the button again to resume.
- Recognition quality, punctuation, supported languages, and whether processing is local depend on the browser/OS service.
- The plugin targets the current Web UI slot API, which may change during the Harness developer preview.

## Troubleshooting

- **Button disabled:** use a browser with Web Speech API support.
- **Permission denied:** allow microphone access for the Harness origin in browser site settings, then reload.
- **Network error:** the browser's recognition service may require internet access even though this plugin has no backend.
- **No text appears:** verify that the active input draft is editable and that the browser detected the intended microphone.

## Development

```sh
node --check host.mjs
node --check client.js
node --test
npm pack --dry-run
```

For a local install test:

```sh
dsh plugin --profile web add ./path/to/dsh-web-speech-input
```

## License

[MIT](LICENSE)

Install

dsh plugin --profile web add github:leozou320-ai/dsh-web-speech-input

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source