DSH Plugin MarketA community catalog for DeepSeek Harness plugins

vc-voice-train-skill

Unconfirmed Skills & agents ★ 16 0.0.0

训练 RVC 音色模型:素材体检→切片→特征提取→训练→建索引→验收→部署全流程。修复 RVC 20240604 归一化缺陷。仅用于训练新音色;切换/使用已有音色或 TTS 播放问题无需加载。

What it is

训练 RVC 音色模型:素材体检→切片→特征提取→训练→建索引→验收→部署全流程。修复 RVC 20240604 归一化缺陷。仅用于训练新音色;切换/使用已有音色或 TTS 播放问题无需加载。

How to install

Run this in the DSH web profile, then refresh the page.

$ dsh plugin --profile web add 'git+https://github.com/zabuxie/vc-voice-train-skill.git#b8ec80a8e4a711d5e839fa3822b0e15f6ad4d3cb'

DSH versions accepted

Undeclared

Author and traction

zabuxie · ★ 16 · Updated 2026-10-27

About this plugin

vc-voice-train-skill

Make your AI speak in someone's voice — two routes, pick by need:

  • RVC training — train a model from voice clips; best timbre accuracy, same-language.
  • IndexTTS zero-shot — synthesize straight from a reference clip; the only sane choice for cross-language.

DSH 技能:让 AI 用指定人物的声音说话。两条路线:

  • RVC 训练 —— 用素材训模型,音色准,适合同语种;
  • IndexTTS 零样本 —— 给一段参考音频直接合成,跨语种首选。

Which one? / 怎么选

| Need | Use | Why |

|---|---|---|

| Foreign-language source, want Chinese output | IndexTTS | RVC has no Chinese phonemes → choppy |

| Source language == target language | RVC | trained, more accurate timbre |

| Precise pitch control | RVC | pitch comes from the driver audio |

| No training budget | IndexTTS | one reference clip is enough |

> Measured on the same source (Japanese CV clips, Chinese output):

> RVC = choppy · IndexTTS = natural but ~90 Hz too high (fixable via reference selection).

What's inside / 包含什么

rvc-voice-train/
├── SKILL.md                  # full workflow, selection guide, 16 sections
├── scripts/                  # RVC training + acceptance helpers
│   ├── fix_audio_norm.py     # fix RVC 20240604 audio_norm defect (silent noise output)
│   ├── fix_i18n.py           # add missing i18n module (breaks weight export)
│   ├── probe_accept.py       # output-vs-truth acceptance (harmonic purity, bands)
│   ├── pick_pitch_ref.py     # choose reference clips by pitch (median f0 + P90)
│   ├── diagnose_audio.py     # source material quality check
│   ├── verify_env.py         # pre-flight environment check
│   ├── slice_audio.py        # silence-based slicing, keeps source sample rate
│   ├── make_dataset.py       # preprocess WITHOUT re-slicing (preprocess.py loses 76%)
│   ├── check_dataset.py      # dataset integrity + frame alignment
│   ├── make_config.py        # filelist + config.json (40k/32k)
│   ├── make_index.py         # build faiss index (the step CLI training skips!)
│   ├── probe_quality.py      # flat / harmonics / band report
│   ├── patch_train_workers.py# DataLoader workers=0 patch (WinError 1455)
│   ├── hp5_verify.py         # vocal separation purity check
│   └── hp5_batch.sh          # batched UVR5 separation
├── indextts/                 # IndexTTS deployment
│   ├── adapter.py            # FastAPI adapter: dsh-plugin-tts <-> IndexTTS-2.5
│   ├── 启动IndexTTS.cmd      # one-click launcher (frees GPU, checks memory)
│   └── launch_hidden.vbs     # detached launcher (survives .cmd exit)
├── qq/
│   └── qq_voice.mjs          # send synthesized voice to QQ via NapCat
├── patches-index.mjs.diff    # plugin host patch: lang auto-switch + backend control
└── patches-client.js.diff    # plugin UI patch: one-click RVC <-> IndexTTS switch

Why / 为什么需要这个 skill

Both RVC and IndexTTS fail in ways that look like "the model is just bad", with no error:

RVC 20240604 never normalizes audio (audio_norm = audio, normalization commented out).

16-bit PCM hits spectrogram_torch() ~32768× too large → generator latent space is polluted →

output is broadband noise. The failure is masked by if loss_mel > 75: loss_mel = 75,

so training logs look normal. Detection: loss_disc is 1e8+ instead of 2–6.

IndexTTS has no such defect, but three things bite:

  • Output pitch ≈ reference pitch. Pick a shrill reference and every sentence sounds shrill.

Measured: reference 396 Hz → output 441 Hz; reference 313 Hz → output 320 Hz.

  • Random sampling makes tone contours wobble. The 4th tone (去声) slope measured

−7.7 / −1.8 / −0.2 across runs — the −0.2 case is audibly "flat".

Setting do_sample=False alone does not fix it; you must also pin the RNG seed.

  • On 8 GB cards the built-in low-VRAM chunking splits every 40 characters, which mangles

pauses. Raising the threshold to 90 helps; disabling chunking entirely produces a

12.7-second dead tail on long inputs.

Quick start / 快速开始

RVC

Compare in this category

The five most-starred plugins in the same category.

PluginAuthor StarsVersionUpdated
archify tt-a1i 95.2K 0.0.0 2026-11-10
nuwa-skill alchaincyf 37.9K 2.0.1 2026-11-10
distilly titanwings 26.5K 1.0.0 2026-10-13
learn-harness-engineering walkinglabs 24.1K 0.1.0 2026-10-22
dsh-Go ccch1mneyyy 18.1K 0.0.0 2026-11-10