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

  1. 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 ok and reports at each step.

  2. If starting from packages or scripts, use train_hunt / train_fetch / train_unpack (or train_acquire) first, then train_scan to view character and duration matching.

  3. After train_build → train_qc yields a trainable dataset, train_preprocess writes to the DDSP data directory, and train_run starts training; use train_status to view logs and checkpoints, and train_stop to stop the process.

  4. For training or existing checkpoints, use train_infer for short phrase auditioning; if satisfied, use train_register to write to the voice bank. For registration layout and cover call examples, see docs/INTEGRATION.md.

  5. 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.