- 홈
- 플러그인
- 비전, 음성 및 멀티모달
- dsh-dania-voice
dsh-dania-voice
xcw520/dsh-dania-voice
로컬 GPT-SoVITS TTS로 DeepSeek Harness 어시스턴트 답변을 읽어 줍니다. 드래그 가능한 마스코트 토글과 원클릭 설치 프로그램을 제공합니다. Python 3.10–3.12가 미리 설치되어야 합니다(설치 프로그램은 Python을 설치하지 않고 위치만 찾음). 디스크 약 5GB와 GPU는 권장 사항입니다.
설치
dsh plugin --profile web add github:xcw520/dsh-dania-voiceREADME
dsh-dania-voice
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.
How it works
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 playback
Playback 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.
Requirements
| 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) |
Install
dsh plugin --profile web add dsh-dania-voice
Then open the mascot panel and click One-click setup. The installer runs as a separate process and reports progress into the same panel:
- creates a Python venv under the install directory
- installs PyTorch (CUDA build when
nvidia-smiis present) - installs the inference dependencies
- downloads GPT-SoVITS source (~50 MB)
- downloads the pretrained base models (~1.6 GB)
- downloads the voice model and its reference audio (~320 MB)
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.
Usage
A mascot hangs at the top centre of the window:
- Click — toggle reading on/off
- Drag — move it anywhere; the position is remembered
- Right-click / Shift+click — open the settings panel
- While reading, the mascot gently bobs
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.
Configuration
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 |
Known limitations
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.
Troubleshooting
- Mascot shows a red border — the plugin's routes are not answering; check that the plugin is enabled.
- "Not installed yet" — click one-click setup, or check
$DSH_HOME/dania-voice/install.log. - No sound but the panel says ready — the browser blocked autoplay; click the mascot once.
- Slow first line — the model takes 20–40 s to load into VRAM; later lines take 1–3 s.
Credits
- GPT-SoVITS by RVC-Boss — MIT.
- Dania voice model by villia on ModelScope. The installer downloads it from the original repository; it is not redistributed here.
- Mascot artwork © 夜游人 (this project's author). Background art uses official promotional material under the publisher's third-party usage policy.
This is a fan project. Wuthering Waves and its characters belong to Kuro Games.