CoachBate Audio Schedule
Telling LTX which character speaks, when, and with whose voice
- char1_audio
- char2_audio
- char3_audio
- char4_audio
- audio_schedule
LTX-2.3's whole trick is synchronized audio and video - your characters can actually talk. But once you've got two or more characters in one clip, the model needs to know who's speaking, at what second, and whose voice to use. CoachBate Audio Schedule is the node that holds that plan: it maps each character to a voice reference clip and a speaking time window, then hands the whole schedule downstream as one object.
It's part of the pack's LTX-FreeFuse audio pipeline, so it's not a standalone gizmo - its single output is a COACHBATE_AUDIO_SCHEDULE that feeds an audio sampler pass node. Don't expect instant dialogue; expect a clean data structure that makes directed, per-character audio refinement possible.
How it works
Each character gets an entry built from four things: an adapter name, a reference audio clip, a start/end window in seconds, and a voice strength. The name has to match the adapter_name you used in CoachBateLTXLoRALoader - that's the hook that connects a voice to a character identity. The reference clip is the voice actor's sample (~5 seconds of clear speech is what the tooltip asks for); the strength is the voice-identity guidance scale, with 3.0 as the default and higher meaning "hold this voice harder."
The node does real validation rather than just trusting you: an entry with a blank name or no audio is skipped, a window where end <= start is dropped with a warning, and if nothing valid remains it raises an error instead of passing garbage. Overlapping windows are allowed but warned about - overlapping regions blend the two voice references, which is usually not what you want in a conversation.
Inputs that matter
framerate- must match the framerate in your video generation workflow; the schedule stores it for the sampler pass's seconds-to-frames conversion.- Characters 1 and 2 are required - name, audio, start/end seconds, and voice strength for each. Note the defaults (char1: 0–5s, char2: 5–10s) are literally "two characters talking in sequence."
- Characters 3 and 4 are optional; leave the name blank to skip that slot.
The names must match the LoRA loader's adapter names, which is the #1 source of "why is this voice attached to the wrong face" confusion - the schedule is only as good as that string match.
The output
One socket, audio_schedule (type COACHBATE_AUDIO_SCHEDULE), containing the entries plus the framerate. Wire it into the audio sampler pass node of the FreeFuse pipeline. There's no string or image output here - it's pure control data for other nodes in the suite.
A caveat worth knowing
The LTX-FreeFuse family (this node, the LoRA loader, the sampler pass, the LTX Director fork) is unfinished WIP, and in the source these nodes only register when a gitignored marker file is present in the pack root - a clean public clone won't even load the module. So if you've installed the pack and CoachBate Audio Schedule doesn't appear in your node menu, that's expected, not a broken install. The comfy.icu schema exists because the author runs it with the feature enabled; the rest of us may be waiting on the public release.
Common issues
- "No valid entries" error - every character either had a blank name, no audio connected, or an inverted time window. Check all three.
- Voices bleed together - overlapping windows blend references. Keep them non-overlapping for dialogue.
- Wrong voice, right face - the name doesn't match the
adapter_namein the LoRA loader.
Installation
Install via ComfyUI Manager (search "CoachBate") or:
cd ComfyUI/custom_nodes
git clone https://github.com/CoachBate/ComfyUI-CoachBate.git
Restart ComfyUI. No extra Python dependencies - the pack ships bare. Remember the LTX-FreeFuse nodes may not be visible on a stock clone; this one is very much a "built for the author's own pipeline" alpha node, so set expectations accordingly.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| framerate | INT | 241–120 | Must match the framerate used in your video generation workflow. |
| char1_name | STRING | char1 | Must match the adapter_name in CoachBateLTXLoRALoader for character 1. |
| char1_audio | AUDIO | Voice reference clip for character 1 (~5 seconds of clear speech). | |
| char1_start_sec | FLOAT | 0.00–600 | Second in the video where character 1 starts speaking. |
| char1_end_sec | FLOAT | 5.00–600 | Second in the video where character 1 stops speaking. |
| char1_voice_strength | FLOAT | 3.00–10 | Voice identity guidance scale for character 1 (3.0 = default, higher = stronger identity). |
| char2_name | STRING | char2 | Must match the adapter_name in CoachBateLTXLoRALoader for character 2. |
| char2_audio | AUDIO | Voice reference clip for character 2 (~5 seconds of clear speech). | |
| char2_start_sec | FLOAT | 5.00–600 | Second in the video where character 2 starts speaking. |
| char2_end_sec | FLOAT | 10.00–600 | Second in the video where character 2 stops speaking. |
| char2_voice_strength | FLOAT | 3.00–10 | Voice identity guidance scale for character 2 (3.0 = default, higher = stronger identity). |
| char3_nameopt | STRING | Must match the adapter_name in CoachBateLTXLoRALoader for character 3. Leave blank to skip. | |
| char3_audioopt | AUDIO | Voice reference clip for character 3 (~5 seconds of clear speech). | |
| char3_start_secopt | FLOAT | 0.00–600 | Second in the video where character 3 starts speaking. |
| char3_end_secopt | FLOAT | 0.00–600 | Second in the video where character 3 stops speaking. |
| char3_voice_strengthopt | FLOAT | 3.00–10 | Voice identity guidance scale for character 3. |
| char4_nameopt | STRING | Must match the adapter_name in CoachBateLTXLoRALoader for character 4. Leave blank to skip. | |
| char4_audioopt | AUDIO | Voice reference clip for character 4 (~5 seconds of clear speech). | |
| char4_start_secopt | FLOAT | 0.00–600 | Second in the video where character 4 starts speaking. |
| char4_end_secopt | FLOAT | 0.00–600 | Second in the video where character 4 stops speaking. |
| char4_voice_strengthopt | FLOAT | 3.00–10 | Voice identity guidance scale for character 4. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio_schedule | COACHBATE_AUDIO_SCHEDULE | — |