FireRedAudio 长音频分段转写 · T8star-Aix
Two hours of audio, one transcript, real subtitles out
- model
- audio
- 完整转写
- SRT 字幕
- 时间戳 JSON
- 运行报告
- WebVTT 字幕
- JSONL 分段
The plain ASR node transcribes a clip and hands you words. Point it at a two-hour podcast and you'll get... context overflow, or a transcript that stops at the thirty-minute mark. Long audio needs segmentation, and naive segmentation (just chop every 30 seconds) cuts words in half and gives you a transcript full of "hel…" and "…lo." T8_FireRedAudio_LongASR is the version that does it right: it hunts for silence near the chunk boundary before cutting, transcribes overlapping windows, deduplicates the overlap, and emits SRT, VTT, JSONL, and timestamps.
What it does
You feed it a model, the audio, and the usual transcription prompt (default Transcribe speech to text.). Then:
chunk_seconds(30) - the nominal segment length. Not a hard cut: the node searches nearby silence (silence_search_seconds, 1.5s) and cuts where speech actually pauses, so sentences survive intact.overlap_seconds(1.0) - each chunk overlaps its neighbor by this much. That's how you don't lose the word that fell exactly on a boundary: it appears in both chunks, and the node deduplicates the repeated text when stitching.
Outputs are the whole menu: the complete transcript, SRT, WebVTT, timestamped segments_json, JSONL, and a run report. You can route SRT straight to SaveSubtitle or grab the JSON for downstream use.
The honest caveat about timestamps
The README says it flat out: long-audio subtitles are segment-level approximate timestamps, not word-level forced alignment. The SRT times are as good as the silence-aware segmentation - good enough to read along, not good enough to sync a video frame-exact off. If you need word-perfect alignment, that's a different (and much heavier) tool. Know that going in and this node won't disappoint you.
Inputs that matter
model, audio, chunk_seconds, overlap_seconds, max_new_tokens (per chunk, 300), and the advanced silence_search_seconds. For a first run, the defaults are all fine - 30s chunks, 1s overlap, 1.5s silence search.
Install
Pack install:
cd ComfyUI\custom_nodes
git clone https://github.com/T8mars/comfyui-fireredaudio-T8.git
cd comfyui-fireredaudio-T8
python scripts\setup_runtime.py
Transcription works off the main model alone, so the lite profile suffices - python scripts\download_models.py --profile lite saves you the RedAE decoder download if you're only transcribing. Models live in ComfyUI/models/TTS/FireRedAudio/.
Gotchas
Don't crank chunk_seconds to 300 expecting better context - long chunks slow down and still hit token limits; 30–60 is the pragmatic range for speech. If you see duplicated phrases in the transcript, that's usually a sign the overlap dedup didn't recognize the repeated text (e.g. music or noise in the overlap) - bump overlap a little or clean the audio. And remember ASR here is FireRedAudio's own ear: it's Chinese-first and solid at English, so don't be surprised if heavy accent or music-bed sections come back garbled. For clean speech it's genuinely good, and it means one model does your generation and your verification.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | T8_FIREREDAUDIO_MODEL | — | |
| audio | AUDIO | — | |
| prompt | STRING | Transcribe speech to text. | — |
| chunk_seconds | FLOAT | 305–300 | — |
| overlap_seconds | FLOAT | 1.00–9 | — |
| max_new_tokens | INT | 3001–4096 | — |
| silence_search_seconds | FLOAT | 1.500–5 | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| 完整转写 | STRING | — |
| SRT 字幕 | STRING | — |
| 时间戳 JSON | STRING | — |
| 运行报告 | STRING | — |
| WebVTT 字幕 | STRING | — |
| JSONL 分段 | STRING | — |