Nodes/dots.tts · T8star-Aix/dots.tts 语音编辑 · T8star-Aix
ComfyUI Node

dots.tts 语音编辑 · T8star-Aix

Edit — re-record one word, change the emotion, or add a pause, without regenerating the take

By T8mars·Created 23 days ago·Updated 14 days ago· 5
dots.tts 语音编辑 · T8star-Aix
  • model
  • source_audio
  • sampling
  • 编辑后音频
  • 目标转写
  • 编辑信息 JSON
instruction你好,<sub targ="欢迎">很高兴</sub>使用 dots.tts。
use_xvectorauto
seed42
speaker_scale1.50
num_steps10
guidance_scale1.20
source_text
target_text

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.

CategoryT8star-Aix/Audio/dots.tts

Inputs (11)

NameTypeDefaultDescription
modelT8_DOTS_TTS_EDIT_MODEL
source_audioAUDIO
instructionSTRING你好,<sub targ="欢迎">很高兴</sub>使用 dots.tts。
use_xvectorCOMBOauto3 options: auto, on, off
seedINT420–4294967295
speaker_scaleFLOAT1.500–5
num_stepsINT101–64
guidance_scaleFLOAT1.200–10
source_textoptSTRING
target_textoptSTRING
samplingoptT8_DOTS_TTS_SAMPLING

Outputs (3)

NameTypeDescription
编辑后音频AUDIO
目标转写STRING
编辑信息 JSONSTRING