dots.tts ASR 转写与说话人分离 · T8star-Aix
Transcribe — turn any audio into timestamped subtitles, with optional speaker separation
- audio
- speaker_model
- SRT 字幕
- 时间轴 JSON
- ASR 报告 JSON
The pack's generation side is one thing, but T8_DotsTTS_Transcribe covers the other direction: feed it any AUDIO and it returns an SRT file, a standardized timeline JSON, and a full recognition report. It's ASR with a forced aligner bolted on, so the timestamps are per-word-level accurate rather than the "close enough" you get from plain Whisper-style output. Turn on diarization and it also tells you who said what - which is exactly what you need to take an existing recording and re-dub it per character.
Under the hood it uses fixed, pinned model versions: Qwen3-ASR-0.6B for recognition and Qwen3-ForcedAligner-0.6B for alignment. The dropdowns for asr_model and aligner_model are hard-pinned - you literally can't pick another version, which is deliberate: the pack validates against those exact revisions and changing them would break the verification story. First use downloads ~3.7 GB of weights with per-file size and SHA-256 checks. Also note the runtime split: the ASR side is genuinely optional in the dependency sense - qwen-asr is not in requirements.txt on purpose, so ComfyUI Manager's auto-upgrade of core transformers can't clobber your ComfyUI. If you want in-process ASR you install it manually with the exact pinned versions:
python -m pip install "qwen-asr==0.0.6" "transformers==4.57.6"
The clever part is transport, default auto. If you run the T8 Windows desktop bundle, its local ASR sidecar auto-starts - a separate Python process that loads Qwen3-ASR with a random token bound to loopback only, so your main ComfyUI environment never needs qwen-asr installed at all. auto prefers that sidecar and falls back to in-process (in_process_legacy) when it's not there. Either way, release_after_run (default on) frees the ASR VRAM after transcribing.
Diarization is the feature that makes this node a dubbing input. Flip diarize on and you must also connect a dots.tts model handle to speaker_model - the node only reads the CAM++ speaker_encoder.safetensors from it, so it won't load the full TTS model just for separation. Then tune speaker_count (0 = auto-detect, up to 32) and similarity_threshold (default 0.72) for how aggressive the same-speaker merging is. language covers auto, Chinese, English, Cantonese, Japanese, Korean; device picks cuda:0 or cpu.
Outputs: srt (subtitle text, with the node also pushing it into the UI preview as an output node), timeline_json, and asr_info - the full report including segments, timestamps, confidence and diarization labels. Both the SRT and timeline feed directly into T8_DotsTTS_Timeline if you want to normalize or re-validate them.
Where people get burned
- The Qwen downloads are big and the ASR dependency isn't auto-installed. On a fresh machine, expect a first-run wait, and if
transportcan't find a sidecar you'll get a clear error telling you to install the pinnedqwen-asrversions manually. - Diarization without connecting a model fails validation up front with a helpful message - that's by design, not a bug.
- Version pinning is strict. Don't try to force a newer
transformersinto your ComfyUI to "fix" ASR; the pack's tolerance is narrow, and the README's advice to back up your environment before installing the pinned versions is worth taking.
Installation is the pack (Manager → dots-tts-t8 or clone + pip install -r requirements.txt) plus the optional pinned ASR deps above if you're not using a desktop sidecar.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| language | COMBO | auto | 6 options: auto, Chinese, English, Cantonese, Japanese, Korean |
| diarize | BOOLEAN | false | — |
| speaker_count | INT | 00–32 | — |
| similarity_threshold | FLOAT | 0.720.4–0.95 | — |
| asr_model | COMBO | Qwen/Qwen3-ASR-0.6B-hf | 1 options: Qwen/Qwen3-ASR-0.6B-hf |
| aligner_model | COMBO | Qwen/Qwen3-ForcedAligner-0.6B-hf | 1 options: Qwen/Qwen3-ForcedAligner-0.6B-hf |
| transport | COMBO | auto | auto 优先连接桌面隔离服务;不可用时兼容进程内 ASR。 |
| release_after_run | BOOLEAN | true | — |
| device | COMBO | cuda:0 | 2 options: cuda:0, cpu |
| speaker_modelopt | T8_DOTS_TTS_MODEL | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| SRT 字幕 | STRING | — |
| 时间轴 JSON | STRING | — |
| ASR 报告 JSON | STRING | — |