Back to catalog

1624318455 /

dsh-plugin-tts

Verified

Edge TTS voice plugin for DeepSeek Harness: read assistant replies aloud, auto-read toggle, voice settings panel (free, no API key)

4 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
READMESource: main@6af92dd6

dsh-plugin-tts

dsh-plugin-tts

license Awesome node tests stars last commit

Links


dsh-plugin-tts — Edge TTS + RVC voice for DeepSeek Harness

A dual-sided (Host + Web UI) DeepSeek Harness plugin that reads assistant replies aloud — Microsoft Edge's free online TTS out of the box, or your own RVC voice models for custom voices. Long replies stream with gapless adaptive chunked playback; voices install one-click from a voice-pack registry; a portable RVC runtime means no RVC WebUI install is needed.

📖 First time? See the user guide (执行手册) — every step covers "what / how / how to tell it worked": read-aloud, RVC voices and voice-pack downloads.

Features

  1. Read-aloud button on every finalized assistant message (in the copy / feedback / branch action row): click to speak that message (the button shows an animated equalizer), click again to stop.
  2. Auto-read toggle in the composer tool row (between the command and the access-mode buttons): when on, every newly completed assistant reply is read aloud automatically (the toggle gets a circular highlight); when off, nothing is auto-read.
  3. Voice settings panel under 设置 → 插件 → 语音:
    • TTS provider: Edge TTS (free, no API key) / custom RVC voice
    • Voice: 22 live-verified Edge TTS voices (default 晓萱 zh-CN-XiaoxuanNeural)
    • Sound tuning: rate / pitch / volume (0 = default)
    • Voice packs: one-click install of voices from a registry
    • Preview: type text and press the play (triangle) button — a spinning loader shows while it is synthesizing/playing (click again to stop), failures show an inline message.
  4. RVC custom voices: read with your own trained RVC models, computed locally (upload base audio, index-free mode, advanced params — see the RVC guide).
  5. Gapless long reads: adaptive chunked progressive playback — probe-calibrated chunk size, play-while-converting, Web Audio sample-accurate joins, no gaps between chunks (see the design doc).

Requirements

  • DeepSeek Harness web profile (dsh web)
  • Node.js >= 22 (the worker uses the native WebSocket)

Install

# published form:
dsh plugin --profile web add "github:1624318455/dsh-plugin-tts#main"
# or local development:
dsh plugin --profile web add "file:/path/to/dsh-plugin-tts"

Restart dsh web; the plugin then loads automatically as a profile bundle.

Voices (live-verified, Edge TTS)

Region Voices
Simplified Chinese Xiaoxuan 晓萱 · Xiaoyi 晓伊 · Yunxi 云希 · Yunyang 云扬 · Xiaoxiao 晓晓 · Yunjian 云健 · Yunxia 云夏 · liaoning-Xiaobei 晓北 · shaanxi-Xiaoni 晓妮
Taiwan HsiaoChen 曉臻 · HsiaoYu 曉雨 · YunJhe 雲哲
Hong Kong HiuGaai 曉佳 · HiuMaan 曉曼 · WanLung 雲龍
English Aria · Jenny · Guy · Sonia (UK)
Other Nanami 七海 (ja-JP) · SunHi (ko-KR) · Denise (fr-FR)

Note: legacy voices such as Xiaohan / Xiaomeng / Xiaorui / Xiaoshuang were removed by the Edge endpoint (1007 Unsupported voice) and are not listed.

Architecture

Layer Location Role
Host lib/index.mjs Registers /dsh-tts-api/speak (synthesis / chunk queue), /dsh-tts-audio/<id> (audio), /dsh-tts-api/rvc-* (RVC inference / files / compact index / voice packs) webServer routes; runs a zero-dependency worker via node -e
Client lib/client.js Hidden <audio> host in shell.overlay + the UI entries (read-aloud button / auto-read toggle / settings panel); talks to the Host through fetch

The TTS worker mirrors node-edge-tts@1.2.10: Sec-MS-GEC query params (ticks rounded to the 5-minute boundary), Sec-MS-GEC-Version=1-143.0.3650.75, Path:audio binary framing, xml:lang derived from the voice locale, one retry on abnormal (1006) closures. Audio is audio-24khz-48kbitrate-mono-mp3.

Edge cases handled

  • Clicking the read button of the message being auto-read stops it; another message's button switches to manual reading.
  • Disabling auto-read never interrupts a manual read; it stops auto reads.
  • A newly completed message (auto on) interrupts the current read; text-less messages are skipped; session switches only stop auto reads.
  • Synthesis / playback failures silently reset the icon state (the preview panel shows an inline error message).

Custom voice (RVC)

Use your locally trained RVC model for voice conversion: switch the TTS provider to "自定义音色(RVC)" in the settings panel. The full story — service startup, panel config, gapless chunked playback, compact index, voice-pack registry install, portable runtime, settings reference and troubleshooting — lives in the RVC Custom Voice Guide.

Public pack registry example: rvc-for-tts (设置 → 语音 → 音色包 → registry URL: https://raw.githubusercontent.com/1624318455/rvc-for-tts/main).

Troubleshooting (Edge TTS)

  • 403 / Sec-MS-GEC rejected: the Edge endpoint protocol or version check changed; update CHROMIUM_FULL_VERSION / TRUSTED_CLIENT_TOKEN inside the worker in lib/index.mjs.
  • 1007 Unsupported voice: the selected voice was removed from the endpoint; pick one from the table above.
  • No sound: check system volume, the browser autoplay policy (interact with the page once), or the synthesis logs ([tts] errors in the dsh web console).

RVC-specific troubleshooting: RVC Guide → Troubleshooting.

Development

node tests/smoke.mjs   # fake-ctx route registration + real Edge TTS synthesis + audio serve assertions

Hot-reload after editing lib/ (on Windows a file: install is a COPY, not a symlink, so the running dsh reads the profile copy):

Copy-Item lib/* $env:USERPROFILE\.dsh\profiles\web\node_modules\@dsh-external\dsh-plugin-tts\lib\ -Recurse -Force
# then refresh the browser (bundles are re-read from disk per request; never use pnpm install --force)

Known limits

  • Voice / auto-read toggle state is in-memory (dynamic settings, no disk persistence); a page refresh resets the defaults. Voice-pack settings (registry URL / proxy / in-flight download) are remembered in localStorage.
  • Synthesized audio is written to the OS temp dir and cleaned by the OS.

License

MIT

/ 5

No ratings yet

Community comments

No comments yet. Be the first to write one.