๐ Audio Wave Analyzer
Find the exact timing regions for F5-TTS speech editing
- audio
- options
- processed_audio
- timing_data
- analysis_info
- segmented_audio
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) oraudio_file(STRING path) - the clip to analyze. Wire in an AUDIO connection, or point at a file path.analysis_method-silence,energy,peaks, ormanual.silenceis the sensible default for speech (it cuts on the quiet bits between phrases).manuallets you define regions by hand via the fields below.precision_level-seconds,milliseconds, orsamples. Milliseconds is the default and the right call for speech editing.export_format-f5tts,json, orcsv. Leave it onf5ttsif 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) - formanualmethod, 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.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_file | STRING | Path 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_method | COMBO | silence | How 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_level | COMBO | milliseconds | How 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_points | INT | 2000500โ10000 | Waveform 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 |
| audioopt | AUDIO | Connect audio from another node instead of using audio_file path. This input takes priority over the file path if connected. | |
| optionsopt | ADV_AUDIO_OPTIONS | Optional 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_regionsopt | STRING | Define 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_labelsopt | STRING | Optional 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_formatopt | COMBO | f5tts | How 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)
| Name | Type | Description |
|---|---|---|
| processed_audio | AUDIO | โ |
| timing_data | STRING | โ |
| analysis_info | STRING | โ |
| segmented_audio | AUDIO | โ |