Nodes/dots.tts · T8star-Aix/dots.tts 语音生成 · T8star-Aix
ComfyUI Node

dots.tts 语音生成 · T8star-Aix

Dots.tts Generate — turn text into 48 kHz audio in ComfyUI, with or without a reference voice

By T8mars·Created 23 days ago·Updated 14 days ago· 5
dots.tts 语音生成 · T8star-Aix
  • model
  • voice
  • sampling
  • 生成音频
  • 生成信息 JSON
text欢迎使用 dots.tts,来自 T8star-Aix。
languageinherit
seed42

This is the node you're here for. T8_DotsTTS_Generate takes text, a dots.tts model handle, and - optionally - a reference voice, and hands back a standard ComfyUI AUDIO tensor at 48 kHz. No API keys, no cloud, no per-character pricing; the whole thing runs on your GPU. For the state of open TTS in ComfyUI, that's a bigger deal than it sounds - most of the ecosystem's voice work still funnels through a handful of node packs bolted onto the side (see the audio-generation overview in the knowledge base), and dots.tts is one of the strongest open models you can run fully local.

Here's the mental model: a text-only generation and a voice clone are the same node. If you don't connect a voice, you get dots.tts's default prosody on whatever text you typed. Connect a T8_DotsTTS_VOICE (from the VoicePrompt node) and it clones - either a continuation clone when you also supply the reference transcript, or an x-vector-only clone when you don't. The model input comes from T8_DotsTTS_ModelLoader, and which checkpoint you loaded decides whether you're in quality mode (SOAR, tunable sampling) or speed mode (MF 2-Steps, locked parameters).

The inputs that matter:

  • text - what gets spoken. Multiline, and it honors dynamic prompts. Empty text is rejected before anything runs.
  • language - inherit by default (follows the model), or pick explicitly from a list that includes ZH, EN, YUE, JA, KO and a long tail of others. Set it when the model guesses wrong.
  • seed - a standard ComfyUI seed with control-after-generate, so you can lock or randomize per run.
  • voice (optional) - wire in a VoicePrompt output to clone.
  • sampling (optional) - a T8_DotsTTS_Sampling output. Skip it and the node uses each model's default contract.

Outputs are audio (the AUDIO tensor - preview it, save it, feed it to a video node) and generation_info, a JSON string with the details of what ran. Wire that to a text preview if you want to see the model, seed and sampling actually used.

How a typical workflow looks

Model loader → Generate → a Save Audio node (or straight into a video's audio track). To clone a voice, add VoicePrompt fed by your reference clip. That's the whole thing.

Installing

Install the pack via ComfyUI Manager (search dots-tts-t8), or clone into custom_nodes and pip install -r requirements.txt. The dependency list is deliberately light - ComfyUI owns torch/transformers - but the weights aren't bundled, so you must download them once:

python scripts\download_models.py --model soar --comfyui-root D:\ComfyUI

…or drop the checkpoint folders into ComfyUI/models/TTS/dots.tts/ yourself. The loader will refuse to run with missing weights, which trips up a lot of first-timers.

Where people get burned

Text normalization is the sneaky one. On Windows the pack can't auto-install WeTextProcessing (its pynini dependency has no Windows wheel), so normalization defaults off - "2026" may come out as raw digits. Expand numbers and units yourself before feeding text in, or use the Pronunciation node to rewrite them. Also, on Python 3.13 nothing here runs; the pack supports 3.10–3.12. And if your first generation feels slow, that's the lazy model load plus maybe torch.compile if you flipped optimize on - both are one-time costs.

CategoryT8star-Aix/Audio/dots.tts

Inputs (6)

NameTypeDefaultDescription
modelT8_DOTS_TTS_MODEL
textSTRING欢迎使用 dots.tts,来自 T8star-Aix。
languageCOMBOinherit27 options: inherit, auto_detect, none, ZH, EN, YUE, +21
seedINT420–4294967295
voiceoptT8_DOTS_TTS_VOICE
samplingoptT8_DOTS_TTS_SAMPLING

Outputs (2)

NameTypeDescription
生成音频AUDIO
生成信息 JSONSTRING