Introduction¶
When running agents in DeepSeek Harness (DSH), the assistant often outputs large chunks of Markdown in one go: code blocks, tables, and links mixed together. If you want to “listen while watching logs” or reduce the burden of staring at a screen for long periods, the common approach is to connect to a cloud TTS API, but that means the text and audio leave your local machine, and you have to manage API keys and billing separately.
The following introduces the community plugin dsh-dania-voice (maintainer xcw520, GitHub repository xcw520/dsh-dania-voice): it runs GPT-SoVITS locally to read out the assistant’s final reply, with a small draggable widget at the top of the interface as a switch; both inference and synthesis happen on your machine, and the README states that audio and text do not leave your machine. The plugin is categorized as “model inference” and is suitable for DSH users willing to pay for local GPU and disk space costs.
What Is This¶
dsh-dania-voice is a voice reading plugin for DSH: it listens for assistant message completion events in a session, cleans the body text (removing code blocks, tables, links, etc.), segments it, requests voice synthesis from the local GPT-SoVITS service, and plays the audio through the browser. The Host process itself has no audio device, so playback is intentionally placed on the browser side, with sound coming from the speakers of the machine you are using.
The data flow (consistent with the README) is as follows:
DSH session events (assistant/message + turn/end)
| Take final reply text, strip code blocks / tables / links
▼
Host: clean and merge into segments ≤120 characters
| POST http://127.0.0.1:9880/tts
▼
GPT-SoVITS api_v2.py (local, GPU)
| wav → cache directory → queue
▼
Browser: poll /dania-voice/next → Web Audio playback
On the voice model side, it uses the community-trained Dania voice (related to the Wuthering Waves character; the README notes it as a fan project, with character copyright belonging to Kuro Games). The installer pulls models from the original repository; this repository does not redistribute model files.
Core Features¶
- Read assistant replies: reads assistant-side content by default; you can enable
speakUserin the configuration to also read your own messages. - Draggable widget: hangs centered at the top of the window; click to toggle reading, dragged position is remembered; the widget wobbles slightly while reading. Right-click or Shift+click opens the settings panel.
- Panel parameters: volume, speech rate,
temperature(lower is more stable, less breathiness), inter-sentence pause; also has “Repeat last reply” and “Test read one line” for debugging. - One-click engine installation: One-click setup in the panel starts a separate process to install Python virtual environment, PyTorch (CUDA build when
nvidia-smiis detected), inference dependencies, and downloads GPT-SoVITS source code, pretrained base model, and voice pack; steps are idempotent, and re-running after interruption skips completed steps. - Cache: synthesis results are cached by “text + parameters”; replaying with the same settings hits the cache instantly.
Environment and Requirements¶
| Item | Description |
|---|---|
| DSH | >= 0.1.7-rc.1 (engines in package.json is <0.3.0-0) |
| Python | 3.10 – 3.12 (installer will look for it, won’t install Python for you) |
| GPU | NVIDIA 8 GB+ VRAM recommended; CPU works but is noticeably slower |
| Disk | ~5 GB (PyTorch, base model, voice model) |
Installation and Activation¶
Install the plugin via the official DSH plugin command (use the command as given in the source material; do not construct GitHub paths yourself):
dsh plugin --profile web add dsh-dania-voice
After installing the plugin code, open the widget panel and click One-click setup. The installer roughly:
- Creates a Python venv in the installation directory
- Installs PyTorch (CUDA build when NVIDIA driver is present)
- Installs inference dependencies
- Downloads GPT-SoVITS source (~50 MB)
- Downloads the pretrained base model (~1.6 GB)
- Downloads the voice model and reference audio (~320 MB)
The default installation directory is $DSH_HOME/dania-voice; if you want to place it on another drive, you can set installDir in the configuration.
Progress and failure messages are written back to the same panel; you can also check $DSH_HOME/dania-voice/install.log.
Note: The plugin runs with the current DSH process’s user and permissions; one-click installation downloads several GB of resources and starts a local HTTP service. Before installing, it is recommended to read the source code and the MIT License on GitHub to confirm it meets your security and compliance requirements. The DSH community plugin directory (such as the entry on SkillHub) is an independent site with no official affiliation with DeepSeek / High-Flyer.
Typical Usage¶
- Complete plugin installation and One-click setup, wait for the panel to show ready.
- Click the widget to enable reading; converse normally with the assistant, and after each turn the final reply will be read automatically.
- Adjust volume, speech rate,
temperature, and inter-sentence pause in the settings panel; changes apply to the next synthesis. - When verifying, use “Test read one line” or “Repeat last reply” to check the local pipeline.
If the browser blocks autoplay and the panel shows ready but there is no sound, follow the README hint: click the widget once first to lift the autoplay restriction.
Configuration¶
The panel writes configuration to $DSH_HOME/dania-voice/config.json; you can also write same-named items in the profile’s config: block, but saving from the panel overrides values in the profile.
| Key | Default | Meaning |
|---|---|---|
enabled |
true |
Master switch |
volume / speed / temperature |
1 / 1 / 0.7 |
Playback and sampling |
speakUser |
false |
Whether to read user messages |
installDir |
$DSH_HOME/dania-voice |
Engine installation location |
pythonPath / root / cacheDir |
derived | Only needed for manual installation |
baseUrl |
http://127.0.0.1:9880 |
GPT-SoVITS endpoint |
autostart |
true |
Auto-start the service when needed |
Use Cases and Cautions¶
Suitable for: Users already using DSH Web profile, with a local NVIDIA GPU (or accepting slow CPU), wanting local TTS for assistant replies, and willing to accept a first-load model latency of ~20–40 seconds and ~1–3 seconds per sentence thereafter.
Notes:
- First synthesis is slow, subsequent ones are fast — this is normal as the model loads into VRAM (README Troubleshooting).
- Widget with a red border: the plugin route is not responding, check if the plugin is enabled.
- Shows “Not installed yet”: run one-click installation or check
install.log. - The base and voice model downloads are large; with unstable networks, rely on the installer’s idempotent retries.
Conclusion¶
dsh-dania-voice connects DSH session events, local GPT-SoVITS, and browser playback into a closed loop: assistant replies are turned into audio on your machine, and the widget provides switching and parameter adjustment. If you want to verify versions and issues from the directory page or the repository, refer to:
- Directory page: https://www.skillhub.cn/plugins/xcw520/dsh-dania-voice
- GitHub: https://github.com/xcw520/dsh-dania-voice