IndexTTS 2.5 ASR 自动校对 · T8star-Aix
CER/WER, word timestamps, pass/fail in one node
- audio
- 识别文本
- 是否通过
- 相似度
- 词级时间戳 JSON
- 校对报告 JSON
TTS models mispronounce. Names get mangled, polyphones land wrong, and if you're generating dozens of lines you can't listen to all of them. This node is the automated proofreader: it takes any ComfyUI AUDIO plus the text you expected, transcribes the audio locally with Whisper, and tells you how close the two are - with a pass/fail verdict, a similarity score, word-level timestamps, and a full report. It's the "did the model actually say what I wrote" check, run by a machine.
How it works
Whisper (either the openai-whisper package or the faster CTranslate2-backed faster-whisper - pick via backend) transcribes your audio. The comparison is normalized before scoring: NFKC, case, simplified/traditional Chinese, Chinese numerals, and punctuation are unified so "2025年" vs "二〇二五年" doesn't count as an error. Then it scores CER (character error rate) for Chinese and Japanese, WER (word error rate) for English, Spanish, and Arabic - language set to AUTO picks the metric from the text's detected language. Outputs:
- 识别文本 - what Whisper actually heard.
- 是否通过 - boolean verdict against your
threshold(default 0.82). - 相似度 - the score, as a float.
- 词级时间戳 JSON - per-word timing, useful for subtitle work.
- 校对报告 JSON - the full breakdown, including difference details.
The inputs worth tuning
model_name (tiny / base / small / medium / turbo) is the accuracy-vs-speed dial: tiny downloads in seconds and is decent, small/medium are meaningfully better on accented or noisy output, turbo is the big one. device (auto / CUDA / CPU) - Whisper runs fine on CPU for short clips, so don't assume you need GPU. threshold is your acceptance bar: raise it for strict subtitle work, lower it when you just want a gross sanity check.
Installation - this is the one that isn't automatic
ASR is an optional extra in this pack, so the node exists but the backend doesn't come with the base install. With ComfyUI's own Python:
python -m pip install "openai-whisper>=20250625" "opencc-python-reimplemented>=0.1.7"
or for the faster backend:
python -m pip install "faster-whisper>=1.2.0" "opencc-python-reimplemented>=0.1.7"
First run downloads the Whisper weights to ComfyUI/models/TTS/Whisper/. Skip the install and the node errors with "ASR backend not available" - which is a good failure mode: the rest of the pack (generation, timeline editing, subtitle rewriting) keeps working without it. Also note the pack feeds audio to Whisper as waveform directly, so no system FFmpeg dependency.
Honest positioning
This is the most "production pipeline" node in the pack - it's for when wrong words cost you something. For casual use it's overkill; for a 50-line dialogue you want it in the loop, ideally wired into the multi-role generator's built-in per-line ASR so bad lines get flagged at generation time. One caveat: ASR similarity is not pronunciation quality. A homophone that changes meaning (银行 said as xíng vs háng) can pass a similarity check, so treat it as a mispronunciation gate, not a meaning gate.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| expected_text | STRING | — | |
| language | COMBO | AUTO | 6 options: AUTO, ZH, EN, JA, ES, AR |
| backend | COMBO | auto | 3 options: auto, openai_whisper, faster_whisper |
| model_name | COMBO | base | 5 options: tiny, base, small, medium, turbo |
| device | COMBO | auto | 3 options: auto, cuda, cpu |
| threshold | FLOAT | 0.820–1 | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| 识别文本 | STRING | — |
| 是否通过 | BOOLEAN | — |
| 相似度 | FLOAT | — |
| 词级时间戳 JSON | STRING | — |
| 校对报告 JSON | STRING | — |