dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
用本地 GPT-SoVITS 把 DeepSeek Harness 的助手回复读出来,带可拖动的挂件开关与一键部署。需预装 Python 3.10–3.12(安装器只负责定位,不负责安装);建议约 5 GB 磁盘与 GPU。
English | 简体中文
Local GPT-SoVITS text-to-speech for DeepSeek Harness. It reads assistant replies aloud in a fine-tuned voice, controlled by a small draggable mascot hanging at the top of the interface.
Everything runs on your machine — no audio, no text leaves it.
DSH session events (assistant/message + turn/end)
│ take the reply text: inline code → speakable English,
│ code blocks → one short cue, tables and links stripped
▼
Host: clean + merge into ≤90-char segments
│ POST http://127.0.0.1:9880/tts
▼
GPT-SoVITS api_v2.py (local, GPU)
│ wav → cache dir → queue
▼
Browser: poll /dania-voice/next → Web Audio playbackPlayback happens in the browser on purpose: the Host process has no audio device, and the voice should come out of the machine you are actually sitting at.
When cleaning, inline code is not dropped — ops_bash is spoken as ops bash, and long all-caps words are lowercased so the model reads them as words instead of spelling out E X E C U T O R. Code blocks become a single spoken cue ("there's a code block here") instead of being read line by line.
Item · Note DSH · >= 0.1.7-rc.1 Python · 3.10 – 3.12 (the installer looks for it; it does not install Python) GPU · NVIDIA with 8 GB+ VRAM recommended. CPU works but is several times slower. Disk · ~5 GB (PyTorch + base models + voice model)
dsh plugin --profile web add dsh-dania-voiceThen open the mascot panel and click One-click setup. The installer runs as a separate process and reports progress into the same panel:
nvidia-smi is present)It is idempotent — if it fails halfway, click again and completed steps are skipped. That matters because step 5 is a 1.6 GB download.
The default install directory is $DSH_HOME/dania-voice. Override it with installDir if you want it on another drive.
A mascot hangs at the top centre of the window:
Panel controls: volume, speed, temperature (lower = steadier, less breathiness), inter-sentence pause, plus repeat last reply and say a line for testing.
Changing speed/temperature applies to the next synthesis; audio is cached by text + parameters, so repeating with the same settings is instant.
Written to $DSH_HOME/dania-voice/config.json by the panel. The config: block in your profile patch works too and is overridden by the panel.
Key · Default · Meaning enabled · true · Master switch volume / speed / temperature · 1 / 1 / 0.7 · Playback and sampling speakUser · false · Also read your own messages installDir · $DSH_HOME/dania-voice · Where the engine lives pythonPath / root / cacheDir · derived · Only needed for a hand-made install baseUrl · http://127.0.0.1:9880 · GPT-SoVITS endpoint autostart · true · Start the service when needed
Short English tokens sound mushy. A full English sentence comes out fine — transcribing a synthesised sentence back gives an almost exact match. But short identifiers or ones with digits (ops bash, cut2, sha1) come out close to Chinese syllables, as if the voice were mumbling. That is a mismatch between the voice model and English phonemes, not something the plugin can fix. Inline code is still turned into speakable English; longer identifiers fare better than short ones.
A segment is capped at 90 characters. The server's generation loop is hard-coded to 1500 semantic tokens (~30 s); past that it stops silently and truncates. With 147 characters in one unsegmented request, a whole sentence went missing in testing. 90 leaves about 30% headroom, at the cost of more pauses between segments.
URLs and tables are not spoken. A URL reads as a string of letters nobody can follow, and a table reads as a list of numbers; both are dropped. The dropped spot is closed with a full stop so the neighbouring sentences are not glued together.
$DSH_HOME/dania-voice/install.log.The installer downloads it from the original repository; it is not redistributed here.
material under the publisher's third-party usage policy.
This is a fan project. Wuthering Waves and its characters belong to Kuro Games.