dots.tts 语音编辑 · T8star-Aix
Edit — re-record one word, change the emotion, or add a pause, without regenerating the take
- model
- source_audio
- sampling
- 编辑后音频
- 目标转写
- 编辑信息 JSON
The standard TTS workflow is all-or-nothing: one wrong word in the middle of a take and you regenerate the whole thing, crossing your fingers that the delivery matches. T8_DotsTTS_Edit is the fix. It uses the dedicated dots.tts.edit model to surgically rewrite local segments of an existing recording - replace a word, insert a phrase, delete a stumble, change the emotion, shift pitch or pace, insert a pause, even lay in background audio. You keep the take you liked and fix the two seconds that were wrong.
The mechanism is instruction-driven. The node takes your source_audio plus an instruction string written in the model's tag syntax, which references the original transcript and says what to do. The default shows the shape of it:
你好,<sub targ="欢迎">很高兴</sub>使用 dots.tts。
Here <sub targ="欢迎">很高兴</sub> means "the word 很高兴, currently spoken as such, should become 欢迎" - a targeted substitution. The same syntax family drives insertions, deletions, prosody tweaks and background edits; the model understands the official tag set, and the pack validates your instruction by rendering both the source and target transcripts from it before anything runs. If your instruction implies an empty transcript on either side, it errors out immediately with a helpful message instead of failing mid-run.
You feed it from the T8_DotsTTS_EditModelLoader (a different model handle than the TTS loader - that distinction is easy to miss, and the wrong loader rejects the edit model), and optionally give it source_text / target_text overrides for the original and desired wording. On the voice side, use_xvector (auto/on/off) decides whether to condition on the original speaker embedding, and speaker_scale (default 1.5) sets how hard the edit clings to that original voice - the knob you'll actually turn when the edited word sounds like a different person. num_steps (10) and guidance_scale (1.2) work like the TTS sampler, and a connected sampling node overrides those two if you have a preset.
Outputs are audio (the edited 48 kHz AUDIO), target_text (the transcript the edit implies - handy for subtitle sync), and edit_info JSON with the full record of what changed.
Notes and gotchas
- This model is a separate download (~5 GB) from the TTS checkpoints, and it's only for editing - it doesn't do text-to-speech. Download it with
python scripts\download_models.py --model edit --comfyui-root D:\ComfyUI. - The Edit model loader has an
optimize(torch.compile) toggle that defaults off; first compile is slow and it can fail, which is exactly why the tooltip tells you to turn it off if it does. - Quality of edits still depends on the source take being clean. A clipped or noisy reference means edits that don't match.
- Licensing note from the pack README applies here double: you're literally altering someone's recording, so make sure you're authorized to process the audio at all.
Installation is the pack install plus the edit checkpoint. ComfyUI Manager search dots-tts-t8, or git clone https://github.com/T8mars/comfyui-dots-tts-T8 into custom_nodes and pip install -r requirements.txt.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | T8_DOTS_TTS_EDIT_MODEL | — | |
| source_audio | AUDIO | — | |
| instruction | STRING | 你好,<sub targ="欢迎">很高兴</sub>使用 dots.tts。 | — |
| use_xvector | COMBO | auto | 3 options: auto, on, off |
| seed | INT | 420–4294967295 | — |
| speaker_scale | FLOAT | 1.500–5 | — |
| num_steps | INT | 101–64 | — |
| guidance_scale | FLOAT | 1.200–10 | — |
| source_textopt | STRING | — | |
| target_textopt | STRING | — | |
| samplingopt | T8_DOTS_TTS_SAMPLING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| 编辑后音频 | AUDIO | — |
| 目标转写 | STRING | — |
| 编辑信息 JSON | STRING | — |