Nodes/TTS Audio Suite/๐ŸŒŠ Audio Wave Analyzer
ComfyUI Node

๐ŸŒŠ Audio Wave Analyzer

Find the exact timing regions for F5-TTS speech editing

By diodiogodยทCreated 12 months agoยทUpdated 18 days agoยท 1,098
๐ŸŒŠ Audio Wave Analyzer
  • audio
  • options
  • processed_audio
  • timing_data
  • analysis_info
  • segmented_audio
โ—„audio_fileโ–บ
โ—„analysis_methodsilenceโ–บ
โ—„precision_levelmillisecondsโ–บ
โ—„visualization_points2000โ–บ
โ—„manual_regionsโ–บ
โ—„region_labelsโ–บ
โ—„export_formatf5ttsโ–บ

If you've ever wanted to change one word in a spoken clip without regenerating the whole thing, you need to tell the model exactly where that word sits in the audio - the start and end times, down to the millisecond. Eyeballing a waveform is miserable. The Audio Wave Analyzer does it for you: it chops an audio clip into timed regions (by silence, energy, or peaks) and hands you the timing data in the format F5-TTS's speech editor wants.

This is the timing front-end for F5-TTS editing workflows. F5-TTS can do targeted word/speech editing, but only if you can point at the segment. The analyzer is how you point.

How it works

You give it audio and pick an analysis method. It scans the waveform and detects region boundaries - for example, gaps of silence become the cut points between phrases. It draws an interactive waveform (that's what visualization_points controls: more points, more detail, heavier UI) so you can see and refine the regions, then it exports the boundaries as timing data. For fine work you can switch to manual and type the regions yourself.

The inputs and outputs that matter

  • audio (AUDIO, optional) or audio_file (STRING path) - the clip to analyze. Wire in an AUDIO connection, or point at a file path.
  • analysis_method - silence, energy, peaks, or manual. silence is the sensible default for speech (it cuts on the quiet bits between phrases). manual lets you define regions by hand via the fields below.
  • precision_level - seconds, milliseconds, or samples. Milliseconds is the default and the right call for speech editing.
  • export_format - f5tts, json, or csv. Leave it on f5tts if you're feeding an F5-TTS editing workflow; the other two are for when you want the timings elsewhere.
  • options (ADV_AUDIO_OPTIONS, optional) - plug in an Audio Analyzer Options node here to tune the detection thresholds (how quiet counts as silence, how sensitive the peak finder is). Skip it and sane defaults apply.
  • manual_regions / region_labels (optional) - for manual method, the region boundaries and their names.

Outputs: timing_data (STRING) is the one you'll use most - it feeds the F5-TTS editor. You also get processed_audio and segmented_audio (AUDIO) and analysis_info (STRING) for inspection.

How to install it

Ships with TTS Audio Suite. 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

then restart. On Linux, install portaudio19-dev and libsamplerate0-dev first - the suite leans on libsamplerate for resampling audio, and skipping it is a common source of install pain. This node itself doesn't download a model; it's pure signal processing.

Common issues & troubleshooting

The regions are all wrong - too many, too few. That's a threshold problem, not a bug. Add an Audio Analyzer Options node and adjust: raise silence_threshold if quiet speech is being cut mid-phrase, lower it if whole phrases are being merged. energy or peaks methods can behave better than silence on noisy or music-bed audio.

The waveform UI is sluggish. Drop visualization_points. 2000 is the default; on a long clip you don't need 10000 to place a cut.

It cut on breaths and clicks. Speech is full of tiny sounds. Tune silence_min_duration (in the Options node) up so only real pauses count as boundaries, and clean obvious noise out of the clip first.

CategoryTTS Audio Suite/๐ŸŽต Audio Processing

Inputs (9)

NameTypeDefaultDescription
audio_fileSTRINGPath to audio file or drag audio file here. Mouse Controls: โ€ข Left click + drag: Select audio region โ€ข Left click on region: Highlight region (green, persistent) โ€ข Shift + left click: Extend selection โ€ข Alt + click region: Multi-select for deletion (orange, toggle) โ€ข Alt + click empty: Clear all multi-selections โ€ข CTRL + left/right click + drag: Pan waveform โ€ข Middle mouse + drag: Pan waveform โ€ข Right click: Clear selection โ€ข Double click: Seek to position โ€ข Mouse wheel: Zoom in/out โ€ข CTRL key: Shows grab cursor for panning โ€ข Drag amplitude labels (ยฑ0.8): Scale waveform vertically โ€ข Drag loop markers: Move startloop/endloop points Keyboard Shortcuts: โ€ข Space: Play/pause โ€ข Escape: Clear selection โ€ข Enter: Add selected region โ€ข Delete: Delete highlighted/selected regions (Shift+Del: clear all) โ€ข L: Set loop from selection (Shift+L: toggle looping) โ€ข Shift+C: Clear loop markers โ€ข Arrow keys: Move playhead (+ Shift for 10s jumps) โ€ข +/-: Zoom in/out โ€ข 0: Reset zoom and amplitude scale โ€ข Home/End: Go to start/end Region Management: โ€ข Click region โ†’ highlights green (single, persistent) โ€ข Alt+click region โ†’ selects orange (multiple, toggle) โ€ข Delete works on both green highlighted and orange selected โ€ข Regions auto-sort chronologically โ€ข Manual regions text box: bidirectional sync with interface Loop Functionality: โ€ข Select region, then press L or click 'Set Loop' โ€ข Drag purple loop markers to adjust start/end points โ€ข Use Shift+L or 'Loop ON/OFF' to enable/disable looping โ€ข When looping is on, playback repeats between markers UI Buttons: โ€ข Upload Audio: Browse and upload audio files โ€ข Analyze: Process audio with current settings โ€ข Delete Region: Remove highlighted or selected regions โ€ข Add Region: Add current selection as new region โ€ข Clear All: Remove all regions โ€ข Set Loop: Set loop markers from selection โ€ข Loop ON/OFF: Toggle loop playback mode โ€ข Clear Loop: Remove loop markers Note: Click on the waveform to focus it for keyboard shortcuts
analysis_methodCOMBOsilenceHow to automatically detect speech segments: โ€ข silence: Finds pauses between words/sentences (best for clear speech) โ€ข energy: Detects volume changes (good for music or noisy audio) โ€ข peaks: Finds sharp audio spikes (useful for percussion or effects) โ€ข manual: Use only manual regions you define below
precision_levelCOMBOmillisecondsHow precise timing numbers should be in outputs: โ€ข seconds: Rounded to seconds (1.23s) - for rough timing โ€ข milliseconds: Precise to milliseconds (1.234s) - for most uses โ€ข samples: Raw sample numbers (27225 smp) - for exact audio editing
visualization_pointsINT2000500โ€“10000Waveform detail level - how many points to draw: โ€ข 500-1000: Smooth waveform, fast rendering โ€ข 2000-3000: Balanced detail and performance (recommended) โ€ข 5000-10000: Very detailed, slower but precise for fine editing
audiooptAUDIOConnect audio from another node instead of using audio_file path. This input takes priority over the file path if connected.
optionsoptADV_AUDIO_OPTIONSOptional configuration from Audio Analyzer Options node. If connected, uses these advanced settings for analysis. If not connected, uses sensible default values for all analysis methods.
manual_regionsoptSTRINGDefine your own timing regions manually. Format: start,end (one per line) Example: 1.5,3.2 4.0,6.8 8.1,10.5 Bidirectional sync: โ€ข Type/paste here โ†’ syncs to interface when you click back โ€ข Add regions on interface โ†’ automatically updates this text โ€ข Regions auto-sort chronologically by start time Use when analysis_method is 'manual' or to add extra regions.
region_labelsoptSTRINGOptional labels for each region (one per line). Example: Intro Verse 1 Chorus Bidirectional sync: โ€ข Type/paste custom labels here โ†’ syncs to interface โ€ข Interface preserves custom labels when renumbering โ€ข Auto-generated labels (Region 1, Region 2) get renumbered โ€ข Custom labels stay unchanged during chronological sorting Must match the number of manual_regions lines.
export_formatoptCOMBOf5ttsHow to format the timing_data output: โ€ข f5tts: Simple format for F5-TTS (start,end per line) โ€ข json: Full data with confidence, labels, metadata โ€ข csv: Spreadsheet-compatible format for analysis All formats respect the precision_level setting.

Outputs (4)

NameTypeDescription
processed_audioAUDIOโ€”
timing_dataSTRINGโ€”
analysis_infoSTRINGโ€”
segmented_audioAUDIOโ€”