Nodes/TTS Audio Suite/๐Ÿ”ง F5-TTS Edit Options
ComfyUI Node

๐Ÿ”ง F5-TTS Edit Options

The seam-hiding knobs for F5 speech editing

By diodiogodยทCreated 12 months agoยทUpdated 18 days agoยท 1,098
๐Ÿ”ง F5-TTS Edit Options
    • edit_options
    โ—„crossfade_duration_ms100โ–บ
    โ—„crossfade_curvecosineโ–บ
    โ—„adaptive_crossfadefalseโ–บ
    โ—„enable_cachetrueโ–บ
    โ—„cache_size_limit100โ–บ
    โ—„boundary_volume_matchingtrueโ–บ
    โ—„full_segment_normalizationtrueโ–บ
    โ—„spectral_matchingfalseโ–บ
    โ—„noise_floor_matchingfalseโ–บ
    โ—„dynamic_range_compressiontrueโ–บ
    โ—„post_rms_normalization0.10โ–บ
    โ—„force_cache_clearfalseโ–บ

    F5-TTS has a genuinely cool trick: speech editing. Instead of regenerating a whole take because you flubbed one word, you can regenerate just that word and splice it back into the original audio. The hard part isn't the regeneration - it's making the splice invisible, so the fixed word doesn't sit at a different volume, a different tone, with an audible click where it joins. That's what this node is for. It's a bundle of audio-stitching options you connect to an F5-TTS edit workflow, and its whole job is making edits sound seamless.

    This is an options node, not an engine. It doesn't generate anything on its own. It outputs an F5TTS_EDIT_OPTIONS object that plugs into the F5-TTS speech-editing node to tune how boundaries between original and regenerated audio are handled. Every one of its fields is optional, and the defaults are already tuned for good results - you reach for this node only when a specific edit sounds off.

    How it works

    When you splice regenerated audio into an existing clip, several things can betray the edit: a level jump at the boundary, a tonal mismatch, a hard transition. This node exposes controls for each. There's crossfading at the join (crossfade_duration_ms, crossfade_curve, adaptive_crossfade), level and tone matching across the seam (boundary_volume_matching, full_segment_normalization, post_rms_normalization, dynamic_range_compression), and heavier optional matching for tricky cases (spectral_matching, noise_floor_matching). There's also a small cache (enable_cache, cache_size_limit, force_cache_clear) so repeated edits don't reprocess.

    The inputs and outputs that matter

    You rarely touch more than two or three:

    • crossfade_duration_ms (default 100) - how long the blend at the edit boundary lasts. Hear a click or abrupt cut at the join? Lengthen it. Hear the edit smearing into neighboring words? Shorten it.
    • crossfade_curve - linear, cosine (default), or exponential. Cosine is the natural-sounding default; the others are there for edge cases.
    • boundary_volume_matching (on) and post_rms_normalization (0.1) - keep the regenerated word at the same loudness as its neighbors. If the fixed word is noticeably louder or quieter, these are your levers.
    • spectral_matching and noise_floor_matching (both off) - heavier tone/noise matching. Turn them on only when a splice sounds tonally wrong or the background hiss doesn't match; they cost more and aren't needed for clean edits.

    Output: edit_options (F5TTS_EDIT_OPTIONS) โ†’ into the F5-TTS edit node.

    Installing it

    Comes with the pack (F5-TTS is one of the bundled engines). ComfyUI Manager โ†’ search "TTS Audio Suite" โ†’ install โ†’ restart. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/diodiogod/TTS-Audio-Suite.git
    cd TTS-Audio-Suite
    python install.py
    

    No separate download for this node - it's pure logic. The F5-TTS model itself auto-downloads when you actually run an edit.

    Common issues & troubleshooting

    Audible click or seam at the edit. Raise crossfade_duration_ms so the transition blends over a longer window, and make sure boundary_volume_matching is on. A hard join is almost always too-short a crossfade.

    The fixed word is louder/quieter than the rest. That's a level mismatch - boundary_volume_matching and post_rms_normalization exist for exactly this. If it persists, full_segment_normalization evens the whole segment.

    The edit sounds like a different room. Now you're in tonal/noise-floor territory. Turn on spectral_matching and noise_floor_matching - the heavier options that match the character of the surrounding audio, not just its volume.

    You're overthinking it. The defaults are tuned to work. If an edit already sounds clean, don't touch this node - every field is optional for a reason.

    CategoryTTS Audio Suite/๐Ÿ‘„ F5-TTS

    Inputs (12)

    NameTypeDefaultDescription
    crossfade_duration_msoptINT1000โ€“500Crossfade duration in milliseconds for smooth transitions between segments
    crossfade_curveoptCOMBOcosineCrossfade curve type: linear (constant), cosine (smooth), exponential (sharp)
    adaptive_crossfadeoptBOOLEANfalseAutomatically adjust crossfade duration based on segment size
    enable_cacheoptBOOLEANtrueCache F5-TTS generation to speed up subsequent runs with identical parameters
    cache_size_limitoptINT10010โ€“1000Maximum number of cached audio segments to store in memory
    boundary_volume_matchingoptBOOLEANtrueEXPERIMENTAL: Automatically match volume levels at segment boundaries to reduce clicks/pops
    full_segment_normalizationoptBOOLEANtrueEXPERIMENTAL: Normalize entire generated segments to match surrounding original audio RMS levels
    spectral_matchingoptBOOLEANfalseEXPERIMENTAL: Apply EQ to match spectral characteristics of original audio
    noise_floor_matchingoptBOOLEANfalseEXPERIMENTAL: Add subtle noise to match the background noise level of original audio
    dynamic_range_compressionoptBOOLEANtrueEXPERIMENTAL: Apply gentle compression to reduce volume spikes and make transitions smoother
    post_rms_normalizationoptFLOAT0.100.01โ€“1Post-processing RMS normalization level. Applied after F5-TTS generation to normalize generated segments volume (does not affect original segments).
    force_cache_clearoptBOOLEANfalseForce clear cache for debugging (will regenerate F5-TTS audio)

    Outputs (1)

    NameTypeDescription
    edit_optionsF5TTS_EDIT_OPTIONSโ€”