Zura · Attach Audio Take
The three-wire node that makes Zura's auto word selection work
- audio
- edit
- generated_audio
- edit
Looks pointless. Isn't.
Zura · Attach Audio Take is the least glamorous node in the pack, and if you build the audio dialogue graph by hand you'll stare at it and wonder why anyone bothered. Three inputs, two outputs, no widgets. It doesn't process a single sample.
What it does is carry a string across the graph inside another wire.
The LongCat voice node returns two things: the generated audio and a run_report, which is a JSON blob naming the run folder, the saved WAV, and the settings used. Meanwhile the editing nodes pass an edit object around that knows where your source file is and which words you're replacing. The select stage needs both: to find the changed words automatically it diffs the new script in the run report against the source transcript. So somebody has to staple the report onto the edit bundle. That's this node. Its entire implementation parses the report and returns edit with a take key added.
In the pack's template it lives inside the LongCat · Full replacement phrase subgraph next to the voice node, under the title "Keep source edit and generated take together" - which is a better name than the display name, honestly.
Wiring it
Three required inputs, all of which have to come off wires:
audio← the LongCat node'saudiorun_report← the LongCat node'srun_reportedit←ZuraAudioDialogueSource'sedit
Outputs are generated_audio (the same AUDIO, passed through) and edit, now carrying the take. From there it's generated_audio + edit into ZuraAudioDialogueSelect, and then the select node's selected_edit into ZuraAudioDialogueOutput.
Both run_report and edit are forced input types - you cannot type a value into them, which is exactly the point. If you find yourself wanting to, you've skipped a node.
When you can ignore it
If you use the bundled Audio - Replace Speech (LongCat) template from Browse Templates → Zura Nodes, it's already there and wired. If you only ever use Manual IN/OUT selection, the take report is not strictly needed for the splice - but the select node still wants the wire to be well-formed, and auto mode silently degrades without it, so leave it connected.
Install
Nothing extra for this one: it's pure Python in the pack, no models, no subprocess. Install the pack itself:
cd ComfyUI/custom_nodes
git clone https://github.com/ZURAVFX/ComfyUI_zura_nodes
cd ComfyUI_zura_nodes && pip install -r requirements.txt
or search Zura Nodes in ComfyUI Manager and install the ZURAVFX entry, then restart ComfyUI.
If it errors
You get a JSON decode error, and that means run_report isn't actually a report - usually a STRING from somewhere else got wired in because it looked close enough in the search box. Point it back at the voice node's run_report output.
Second possibility: the take was cached and its report file was deleted. The voice node's cache index lives in output/zura_voice/dialogue_cache/; a missing WAV behind a stale index makes the voice node regenerate, but a hand-edited or half-copied index can feed junk downstream. Delete the cache folder if you've been moving files around - the cost is one re-synthesis.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| run_report | STRING | — | |
| edit | ZURA_AUDIO_EDIT | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| generated_audio | AUDIO | — |
| edit | ZURA_AUDIO_EDIT | — |