Introduction¶
In DSH, when performing cover songs or voice replacement, the common bottleneck isn’t “whether inference can be run once,” but rather where the source materials come from, how the dataset is organized, how the DDSP project is integrated, and how the trained model_N.pt and config.yaml enter the voice bank discoverable by the cover plugin. Manually copying directories, modifying data/train/audio, and monitoring checkpoints involves many steps and easily leads to contention for the same data directory with running tasks.
dsh-train-pipeline (maintainer InariNGT-Ofiicial) breaks these steps down into a set of tools that can be called progressively by an agent: local search and download, partial Kirikiri package unpacking, character inventory, dataset construction and quality checks, DDSP Reflow preprocessing and training, short phrase inference, and registration to a voice bank agreed upon with dsh-cover-pipeline. The plugin is currently at version 0.4.1, categorized under SkillHub as Model Inference, with approximately 4 stars on GitHub. The repository source tree does not contain the DDSP project, model weights, game assets, or audio; external environments and compliant materials must be prepared independently.
What is this¶
In short: dsh-train-pipeline is a local voice training plugin for DeepSeek Harness. It uses 19 tools to cover material acquisition, dataset organization, the DDSP-SVC 6.2 Reflow training chain, and training result registration, for use after the cover pipeline is reloaded.
Relationship with the cover plugin: The training side places model_N.pt and config.yaml in an agreed layout; the cover plugin discovers this voice after reloading. The Yoshino demo weights are provided separately in Releases voice-yoshino-20000. For usage and SHA-256, refer to docs/YOSHINO_MODEL.md in the repository. They are not distributed with the npm package or source tree; the MIT license of the plugin code does not automatically apply to the weights.
Core Features¶
Materials and Source Types¶
| Input | Implemented Behavior | Limitations |
|---|---|---|
| Audio in directories by character | Inventory and organization by directory name; calculate duration using frames read by soundfile |
Directory names require spot checks; cannot verify annotation correctness |
JSON / KAG3 .ks scripts |
Heuristic extraction of speaker / voice; report match rates | Unfamiliar formats may be missed |
| Standard XP3, some embedded EXE | External arc_unpacker; checked against disk results |
Does not cover all engines and encryption |
| SenrenCxCrypt series | Static parsing/decryption; requires compatible GARbro Formats.dat |
Verified with trial versions; no guarantee for all games |
| Single character audio directory | Organize WAVs after specifying a character | Does not automatically distinguish BGM or multi-person dialogue |
| Anime / Screen recordings | Adapter interface reserved | Separation, VAD, and voiceprint attribution not implemented |
The script branch still uses the 4.2 seconds/sentence rough estimate and marks it as “not tested”; quality checks and audio directories use actual measured durations.
Toolchain (19 Tools)¶
The recommended order given in the README is as follows. Actual calls require checking the ok status, reports, and artifacts returned by each tool step-by-step; train_plan provides flow rules but does not automatically run all quality gates, nor does it guarantee a single natural language request will run through the entire chain.
train_doctor → train_plan → train_hunt / train_fetch / train_unpack
→ train_scan → train_build → train_qc
→ train_preprocess → train_run → train_status / train_stop
→ train_infer → train_register → Reload Cover Plugin
| Tool | Purpose |
|---|---|
train_sources / train_plan |
Implementation status, workflow, and decision prompts |
train_doctor / train_setup |
Environment checks, configuration suggestions, optional local config writing |
train_hunt |
Search local directories and Steam library (depth and time budget limited) |
train_toolchain |
Check or install unpacking tools from upstream GitHub releases |
train_fetch |
Download given URL, record URL, SHA-256, and timestamp |
train_unpack / train_acquire |
Unpack, optional decompile; acquire chains search with character inventory |
train_scan |
Source identification, character count, audio count, duration, and match reports |
train_build |
Transcode, mono, resample, trim silence, segment overlong audio |
train_qc |
Sample rate, duration, clipping, silence, rough duplication; non-compliant files moved only if apply=true |
train_preprocess |
Backup old DDSP project audio, copy new data, run draw.py / preprocess.py |
train_run / train_status / train_stop |
Background training, logs and checkpoints, stop process |
train_infer |
Select checkpoint for short phrase inference; requires manual listening |
train_register / train_overview |
Register model and config, check workspace and voice bank |
Key points: train_preprocess replaces data/train/audio and data/val/audio in the DDSP project. The original directories are moved to the training workspace backup/ first; a standalone training project should be used. train_run defaults to stopping if checkpoints already exist; it requires confirmOverwrite=true to continue. train_register refuses to overwrite by default; it will fail if the config.yaml for the same experiment is missing or the model is empty; successful registration only indicates files are discoverable, not that audio quality is qualified.
Installation and Enablement¶
Currently primarily for Windows. Requires Node.js 18+, an installed DSH, and a locally available DDSP-SVC 6.2 Reflow project with its Python environment. GPU training relies on the PyTorch/CUDA, pre-trained weights, and configs bundled with that project; this plugin does not install DDSP or download weights.
The installation steps from the official README are as follows. ../AudioWork is just an example; you should prepare your own external audio project root directory first, which can also be configured via train.local.json; for layout and troubleshooting see docs/INSTALL.md, and for external tool lists see materials/README.md.
git clone https://github.com/InariNGT-Ofiicial/dsh-train-pipeline.git
cd dsh-train-pipeline
# Set to your own audio project root directory, or configure train.local.json.
$env:DSH_COVER_ROOT = (Resolve-Path ../AudioWork).Path
node test/live.mjs train_doctor
dsh plugin --profile desktop add .
Reload DSH after installation. train_doctor is used to check if the environment meets the assumptions of subsequent tools.
Typical Usage¶
-
In DSH, describe the target character and material directory (or URL, local game path, etc.). The agent will call tools according to the workflow; verify the returned
okand reports at each step. -
If starting from packages or scripts, use
train_hunt/train_fetch/train_unpack(ortrain_acquire) first, thentrain_scanto view character and duration matching. -
After
train_build→train_qcyields a trainable dataset,train_preprocesswrites to the DDSP data directory, andtrain_runstarts training; usetrain_statusto view logs and checkpoints, andtrain_stopto stop the process. -
For training or existing checkpoints, use
train_inferfor short phrase auditioning; if satisfied, usetrain_registerto write to the voice bank. For registration layout and cover call examples, seedocs/INTEGRATION.md. -
Reload dsh-cover-pipeline (or the associated cover plugin) and use the newly registered voice in the cover workflow.
Demo notes: The repository records that the local machine once used the “SenrenBanhu” trial version unpacking, character directory organization, reading an existing 20000-step checkpoint*, registration, and original cover plugin invocation; this demo did not retrain, nor does it guarantee complete training success on other machines.
Suitable Scenarios and Cautions¶
Suitable for: Users already in the DSH ecosystem doing covers, willing to provide their own DDSP Reflow project and compliant materials; focused on pre-training organization and training orchestration for galgame / Kirikiri audio directories, script references, or single-character WAV directories.
Not suitable for or limitations to know: Expecting the plugin to come with DDSP, pre-trained weights, or game assets; requiring automatic vocal separation and voiceprint attribution for anime/screen recordings (interface not implemented); expecting one-click training of a usable model without a GPU or completed material preparation.
Safety and Compliance: The plugin runs with the current dsh process privileges and can access local directories, launch external unpacking and Python training processes. Before installation, read the source code, MIT license, and THIRD_PARTY_NOTICES.md; the code license does not grant rights to use or redistribute game assets, voices, training data, or models. Only use materials and weights you have the right to use.
Testing aspects: The repository provides CPU-oriented npm test (see requirements-test.txt and DSH_TRAIN_PYTHON in README); real GPU training and download tests require a separate environment, see docs/VALIDATION.md.
Conclusion¶
dsh-train-pipeline connects local materials, DDSP Reflow training, and cover voice registration into a toolchain that can be accepted step-by-step, and interfaces with the directories agreed upon with dsh-cover-pipeline. Directory page: SkillHub - dsh-train-pipeline. Source and docs: GitHub - InariNGT-Ofiicial/dsh-train-pipeline.