Audio Isolate Speaker (mtb)
Mute or isolate one voice from a multi-speaker recording
- audio
- whisper_data
- processed_audio
This one's from the newer end of MTB Nodes' sprawling toolbox - melMass's pack has been quietly picking up audio/video utilities alongside its original image and batch tools, and this node is a good example of where that's headed: speaker-aware audio editing, right inside a ComfyUI graph.
What it does
You give it an audio clip plus speaker-diarization data - the output of a Whisper-based transcription node that's already split your audio into per-speaker segments with timestamps (that's what WHISPER_CHUNKS is: a whisper/diarization node upstream that labels who's talking when, using the standard SPEAKER_00, SPEAKER_01… naming you'll recognize from tools like WhisperX or pyannote). Point this node at one of those labels and it either keeps only that speaker's segments and silences everything else (isolate), or does the reverse and silences just that speaker while leaving the rest of the recording intact (mute).
That's genuinely useful for two different jobs: pulling one clean voice out of an interview or podcast recording (say, for voice cloning or lip-sync training data), or scrubbing a specific person out of a group recording without cutting the whole track.
The inputs and output that matter
whisper_data- the diarized transcript from an upstream whisper/transcription node. This is the input that does the real work; without accurate speaker labels the rest of the node has nothing to act on.target_speaker(defaultSPEAKER_00) - which label to isolate or mute. Diarization models number speakers in the order they first detect them, not by anything meaningful, so you'll usually need to preview the transcript first to know whichSPEAKER_NNis the person you actually want.mode-isolatekeeps only the target,mutekeeps everyone but the target.fade_ms(default 100, 0–1000) - a short crossfade applied at each cut boundary so silenced or isolated segments don't produce audible clicks. Bump it up if the diarization timestamps are a little sloppy and you're hearing pops at speaker changes.
The output is a single processed_audio (AUDIO) - wire it straight into a Save Audio node, or back into whatever pipeline is consuming the cleaned track.
Installing it
ComfyUI Manager: search MTB Nodes and install. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/melMass/comfy_mtb
then restart. You'll also need whatever whisper/transcription node pack you're using upstream to produce WHISPER_CHUNKS in the first place - this node consumes that type, it doesn't generate it.
Common issues
The quality ceiling here is set entirely by the diarization step, not by this node. If your whisper node mislabels speakers - merges two people into one SPEAKER_00, or splits one person across two labels because they paused too long - isolating "the wrong speaker" is really a diarization problem showing up downstream. Preview the transcript before you commit to a target_speaker value.
Second, this is a newer addition to a large, actively-changing pack, and MTB is known to silently drop nodes it can't import rather than crash on startup - it logs [comfy_mtb] Some nodes (N) could not be loaded and a pointer to http://127.0.0.1:8188/mtb for details, a real behavior confirmed by other users' install logs in the wild. If this node isn't showing up after install, that startup line (or the /mtb status page) is where to look before assuming something else broke - it's usually a missing audio dependency rather than a failed clone.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| whisper_data | WHISPER_CHUNKS | — | |
| target_speaker | STRING | SPEAKER_00 | — |
| mode | COMBO | isolate | 2 options: isolate, mute |
| fade_ms | FLOAT | 1000–1000 | Fade duration in milliseconds to avoid clicks |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| processed_audio | AUDIO | — |