@lucagiftzek/dsh-voice
Read-aloud and dictation for the DSH web UI with 23 TTS and STT provider types configured side by side, per-language routing, in-text language markers, per-sentence language detection, word highlighting and a TTS Reader sidebar tab (the tab requires dsh-better-sidebar; everything else works without
Install
dsh plugin --profile web add @lucagiftzek/dsh-voice
Sandbox test
This plugin has not been tested yet. Submit a test →
README
dsh-voice

Read-aloud, dictation and language-aware speech for the DeepSeek Harness (DSH) web UI.
- A speaker on every finished assistant reply (and a
{ }button that reads the code blocks). - A microphone in the composer, with an optional polish pass that fixes punctuation without translating.
- Several speech providers at once, configured in Settings > Voice, each with a Test button.
- Per-language routing: English, Italian, Greek (and any language you add) each get their own provider, model, voice and speed.
- In-text language markers to switch language mid-text.
- Language detection per sentence, with a DSH model for the unsure ones, and a language badge while reading.
- Highlighting of the sentence and the word being read, and opt-in auto-read of new replies.
- A TTS Reader sidebar tab, push-to-talk dictation at the composer cursor, and keyboard shortcuts.
Status: 2.0.0. 23 provider types, EU vendors first; see [CHANGELOG.md](CHANGELOG.md). Runs on DSH 0.2.x (tested on 0.2.1) and DSH 0.1.5.
Install
Install from npm: dsh plugin --profile web add @lucagiftzek/dsh-voice, or from GitHub: dsh plugin --profile web add github:lucagiftzek/dsh-voice.
dsh plugin --profile web add @lucagiftzek/dsh-voice # or from GitHub: dsh plugin --profile web add github:lucagiftzek/dsh-voice
The package declares dsh.bundle, so dsh plugin add lists it in the profile bundles; restart dsh web to load the host half. lib/ is committed, so no build step is needed. From a checkout instead: git clone https://github.com/lucagiftzek/dsh-voice, then dsh plugin --profile web add link:$PWD/dsh-voice. Then open Settings > Voice, add a provider and press Test.
Providers
Settings > Voice lists providers in three groups, EU first, then Others, then Self-hosted, each with a residency badge (EU, EU region available, outside the EU, self-hosted, on device) and a timing badge (word timings, or estimated). "Add provider" lists every type with a one-line description and a docs link. Several instances of one type are normal (a local server plus a relayed one, two Azure regions). Keys never reach the browser, and a Test button on every row speaks a short phrase and transcribes it back (a speech-to-text-only provider borrows the spoken sample from another provider).
"Word timings" means the provider returns when each word is spoken, so the word highlight is exact; otherwise the highlight is estimated from the audio length (sentence highlight always works). A provider without a language in its list never receives that language through automatic routing. Status marks: (planned) has no public API documentation yet, (unverified) or (partly verified) means some request shapes could not be confirmed against vendor documentation on the date given under "Verification" in docs/PROVIDERS.md.
<!-- providers:begin -->
EU first
Provider · TTS · STT · Word timings · Data residency · Price note · Docs
mistral Mistral · yes · yes · estimated · EU · TTS about $13 per 1M characters; STT $0.0035 to $0.008 per minute · docs
speechmatics Speechmatics (partly verified) · yes · yes · estimated · EU region available · STT from about $0.24 per hour · docs
gladia Gladia (partly verified) · no · yes · n/a · Depends on the endpoint · check the vendor pricing page · docs
acapela Acapela Cloud (partly verified) · yes · no · word · Depends on the endpoint · quote on request · docs
readspeaker ReadSpeaker speechCloud (partly verified) · yes · no · estimated · Depends on the endpoint · credit plans via sales · docs
Others
Provider · TTS · STT · Word timings · Data residency · Price note · Docs
elevenlabs ElevenLabs · yes · yes · word (from characters) · EU region available · credits; flash v2.5 bills 0.5 credit per character · docs
azure Azure AI Speech (partly verified) · yes · yes · word · EU regions selectable · TTS about $15 per 1M characters; STT about $1 per hour real time · docs
google Google Cloud Speech (partly verified) · yes · yes · word · EU regions selectable · check the vendor pricing page (Neural2 and Chirp 3 HD differ) · docs
amazon Amazon Polly and Transcribe (partly verified) · yes · yes · word · EU regions selectable · Polly neural about $16 per 1M characters; Transcribe per second · docs
openai OpenAI · yes · yes · estimated · Outside the EU · per character (TTS) and per minute (STT), see the pricing page · docs
openai-compatible OpenAI-compatible (partly verified) · per preset · per preset · Kokoro-FastAPI captions, else estimated · Depends on the endpoint · depends on the server (free when self-hosted) · docs
fish Fish Audio (partly verified) · yes · yes · estimated · Outside the EU · check the vendor pricing page · docs
cartesia Cartesia (partly verified) · yes · yes · word · Outside the EU · check the vendor pricing page · [docs](https://docs.cartesia.ai/api-refere
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::2,最后更新 2026-11-01