FireRedAudio 音色档案 · T8star-Aix
Stop re-transcribing the reference — VoiceProfile makes a character reusable
- audio
- 音色档案
- 档案 JSON
One reference clip, one transcript, one name - and suddenly that voice is a reusable asset instead of a loose WAV you keep dragging around. FireRedAudio 音色档案 packages a reference audio, its transcript, language and tags into a single VoiceProfile object, the unit every multi-character workflow in this pack is built on.
The node does no inference and needs no model. It's bookkeeping - but it's the bookkeeping that stops you from re-typing a transcript every time you run a batch, and it's what lets the batch-dubbing chain route lines to the right speaker without re-ASR'ing your reference on every sentence.
How it works
Give it an audio clip and a transcript, and it wraps both (plus a name and tags) into a profile object with a couple of nice properties under the hood. The reference audio is tracked by content hash - SHA-256 - so the same clip doesn't get re-processed or re-cached by accident; swap the file and the hash changes, and downstream caching invalidates correctly. The profile also carries the transcript you typed, which is the quiet win: because a transcript is required, you can't build a half-broken profile from a clip you never verified.
Inputs and outputs
- audio - the reference clip. A few seconds to a minute; the pack's own guidance points at 3–15 second segments as the sweet spot.
- name - the character/voice name. Default "旁白" (narrator). Must be unique across a voice bank.
- prompt_text - the transcript of the reference. Required - the node refuses to run with it empty. Paste it once here and every downstream run uses it.
- language -
zh/entoggle. - tags (optional) - comma-separated labels, e.g.
male, deep, podcast.
Outputs: 音色档案 (the T8_FIREREDAUDIO_VOICE_PROFILE object) and 档案 JSON (a STRING serialization - handy for saving a cast to a file and reloading it later).
Where it sits
The chain you'll actually build:
VoiceProfile → VoiceBank → ScriptParser → BatchDubbing
One VoiceProfile per character, all eight bundled into a VoiceBank, then the script parser matches 角色:台词 lines to profiles by name and the batch dubbing node generates everything. Get a profile right once and it's reusable across projects - that's the whole appeal.
Installing it
Same pack, same two commands as every node in comfyui-fireredaudio-T8:
cd ComfyUI\custom_nodes
git clone https://github.com/T8mars/comfyui-fireredaudio-T8.git
cd comfyui-fireredaudio-T8
python scripts\setup_runtime.py
This node itself doesn't need the model - it never runs inference - but the moment its profile reaches a TTS or dubbing node you will, so do the download once while you're here:
python scripts\download_models.py --target "D:\ComfyUI\models\TTS\FireRedAudio" --profile full --variant int8-wo-safe-v1
Gotchas
The transcript is the part people try to skip, and it's the whole point - a blank transcript is a hard error, and pasting garbage ASR text into it means the TTS downstream will "hear" garbage. Verify the reference once (this pack even has an ASR-transcript node for exactly that) and reuse the good text. And remember names must be unique: two "旁白" profiles in one bank will be rejected, because the script router can't tell them apart. Names are the API.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| name | STRING | 旁白 | — |
| prompt_text | STRING | — | |
| language | COMBO | zh | 2 options: zh, en |
| tagsopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| 音色档案 | T8_FIREREDAUDIO_VOICE_PROFILE | — |
| 档案 JSON | STRING | — |