# @motong/dsh-voice

[![npm](https://img.shields.io/npm/v/@motong/dsh-voice?style=flat-square&label=npm)](https://www.npmjs.com/package/@motong/dsh-voice)
[![DeepSeek Harness plugin](https://img.shields.io/badge/DeepSeek%20Harness-DSH_plugin-4a90d9?style=flat-square)](https://github.com/topics/dsh-plugin)
[![license](https://img.shields.io/npm/l/@motong/dsh-voice?style=flat-square)](LICENSE)

A **DeepSeek Harness (DSH)** community plugin that adds voice to the chat UI — **no API key required**:

1. **Voice input** 🎤: a mic button in the composer; speech is transcribed into the input box.
2. **Voice-input hotkey**: default `Ctrl+Shift+Space`, configurable in **Settings → Voice** (single keys and multi-key combos supported).
3. **Voice-input mode**: "click to toggle" or "hold to talk (release to stop)".
4. **Read aloud** ▶: an Edge neural voice reads assistant replies aloud; switch voices / preview in **Settings → Voice**.

## Install

```bash
dsh plugin --profile web add @motong/dsh-voice
```

Then restart DSH and refresh the page.

## Usage

- **Voice input** — click the 🎤 in the composer, or press your hotkey. Speak, and the transcript is inserted into the draft.
- **Hold to talk** — in **Settings → Voice**, switch the mode to "hold to talk", then press-and-hold the 🎤 (or the hotkey) to talk, release to stop.
- **Read aloud** — click ▶ under an assistant reply; click ■ to stop.
- **Voices** — 晓晓 / 晓伊 / 云希 / 云健 / 云扬 / Jenny / Guy (Edge neural voices).

## How it works

- **Speech-to-text**: browser-native `SpeechRecognition` (Chrome/Edge).
- **Text-to-speech**: the plugin exposes `/_dsh/voice/tts` and synthesizes audio through Microsoft Edge's neural voice service (the [edge-tts](https://github.com/rany2/edge-tts) protocol). No API key required.
- Settings live in DSH's `voice` namespace (`settings.yaml`).

## Notes

- Voice input works best in Chrome/Edge; grant microphone permission on first use.
- Read-aloud needs network access to `speech.platform.bing.com`.

## License

[MIT](LICENSE)
