FireRedAudio 参数化声学编辑 · T8star-Aix
Pitch, speed and volume without writing a single English instruction
- model
- audio
- settings
- 编辑后音频
- 实际指令
- 运行报告
FireRedAudio's speech editing works by you telling the model, in English, what to do to a clip - "make the voice higher and slightly faster." That works great until it doesn't, because natural language is where "raise pitch" becomes "pitch the voice up, no wait, too much, now it sounds like a chipmunk." This node is the safer sibling: it takes three knobs and builds the instruction for you.
What it is
T8_FireRedAudio_AcousticEdit is the "parameterized" version of the pack's semantic speech editor. Instead of a free-text instruction box, you pick an operation (pitch, speed, or volume) and set numbers: pitch_steps from −6 to +6 semitones (0 is rejected - you can't pitch-shift by nothing), speed from 0.5× to 2×, volume from 0.3× to 2×. The node assembles a strict, templated English instruction from those controls and sends it to the worker's edit endpoint.
Why bother? Two reasons. First, determinism: the same knob values produce the same instruction string, and the node hands you that string in the instruction output so you can see exactly what the model was told. Second, guardrails - the validators keep you from asking for something silly like 4× speed or −10 semitones. If you later outgrow the knobs, the pack's SpeechEdit node is the freeform version with the same edit endpoint, so this is a gentler on-ramp to the same machinery.
Inputs and outputs that matter
model- from the FireRedAudio Model Loader.audio- the clip you're editing, from any AUDIO source (Load Audio, or an earlier node in the repair chain).operation+ one numeric control relevant to it. The others keep their defaults and just don't apply.settings(optional) - a GenerationSettings object if you want to control seed and diffusion steps for the edit pass.
You get back the edited audio, the exact instruction that was generated, and a JSON report. This node is a perfect fit for the local-repair workflow: LocalRepairRange cuts a flub, AcousticEdit fixes it, LocalRepairApply crossfades it back into the original.
Install
It ships in the comfyui-fireredaudio-T8 pack, so it's a one-time install for the whole family:
cd ComfyUI\custom_nodes
git clone https://github.com/T8mars/comfyui-fireredaudio-T8.git
cd comfyui-fireredaudio-T8
python scripts\setup_runtime.py
Then get the model into ComfyUI/models/TTS/FireRedAudio/ - python scripts\download_models.py --profile full --variant int8-wo-safe-v1 gets you the full model including the RedAE decoder that generation and editing need. The setup_runtime.py step creates the isolated Python 3.10 / Transformers 5.8 worker the pack runs on; it never installs anything into your ComfyUI Python.
Notes from real use
Expect an edit to take the same kind of time as a short TTS generation - it's the same diffusion machinery under the hood, and the first run on a clip includes model load. If you're chain-editing several clips in one session, reusing the same model handle keeps the worker warm, which is most of the speed difference people notice. And keep the source: this node outputs a new file and never touches your input audio, which is exactly the non-destructive behavior you want before you hand anything to LocalRepairApply.
One honest caveat: "parameterized" keeps you safe but it's also coarser than hand-writing an instruction. If you need "rise in pitch toward the end" - something no single knob expresses - that's what the semantic SpeechEdit node is for. For "the third word came out flat," this is the tool.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | T8_FIREREDAUDIO_MODEL | — | |
| audio | AUDIO | — | |
| operation | COMBO | pitch | 3 options: pitch, speed, volume |
| pitch_steps | INT | 3-6–6 | — |
| speed | FLOAT | 1.20.5–2 | — |
| volume | FLOAT | 1.00.3–2 | — |
| settingsopt | T8_FIREREDAUDIO_SETTINGS | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| 编辑后音频 | AUDIO | — |
| 实际指令 | STRING | — |
| 运行报告 | STRING | — |