dots.tts 发音词典 · T8star-Aix
Pronunciation — stop TTS from murdering names, numbers and acronyms before it opens its mouth
- 替换后文本
- 替换报告 JSON
Every TTS model has a list of things it will confidently mispronounce: years ("2026" read as twenty-twenty-six in the wrong language), product names, people's names, acronyms. T8_DotsTTS_Pronunciation is the pack's fix - a pure text node that rewrites text according to a dictionary before any synthesis happens. It's dead simple and it saves you from regenerating whole takes over one wrong word.
Here's how it works. You give it text and a dictionary, and it returns the rewritten text plus a report JSON documenting every replacement it made. The dictionary accepts a deliberately forgiving set of formats. The basic line format is the one you'll use 95% of the time:
2026 => 二零二六
张三 => 章三
T8 => T 八
Left side is the source, right side is what should actually be spoken. It also accepts a JSON object, or a rules array with per-rule mode, case_sensitive and priority fields when you need finer control - say, a rule that only applies at word boundaries or that outranks a more general one.
The two outputs are replaced_text (feed this into Generate, LongText, or Project's pronunciation field) and replacement_report, a JSON list of what changed. That report is genuinely useful the first few times - you can eyeball it and catch "oh no, it also rewrote that product name I didn't mean to touch" before committing to a long render.
Why this node matters more here than on other TTS stacks
Because of a Windows quirk in this pack: dots.tts's automatic text normalization can't be installed on Windows (WeTextProcessing depends on pynini, which ships no Windows wheel), so the nodes default to normalization off. That means numbers, units and abbreviations reach the model raw. The Pronunciation node is the intended workaround - you expand the ambiguous stuff yourself, deterministically, with rules you control, instead of hoping a normalizer guesses right. On Linux you can have the automatic normalizer, but the dictionary still wins for anything domain-specific.
Practical tips
- This node is pure text manipulation - no model, no GPU, runs instantly. It's also stateless, so you can wire the same dictionary into every Project and BatchQueue node in a workflow and it'll behave identically.
- Test tricky rules on a one-line
textfirst and read the report. A rule that's too greedy (likeT => Tmatching inside other words) is visible instantly in the JSON. - Case sensitivity and priority only apply in the richer JSON/rule-array formats - the simple
=>lines are best-effort. If a simple rule isn't hitting the way you expect, that's where you graduate to the rule array.
No extra install or model download beyond the pack itself. 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 (2)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | 2026 年,T8 发布。 | — |
| dictionary | STRING | 2026 => 二零二六 T8 => T 八 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| 替换后文本 | STRING | — |
| 替换报告 JSON | STRING | — |