Zura · Use Generated Speech in Studio
Getting graph-view audio back into the artist UI
- audio
- AUDIO
Studio's voice step hands you a dropdown of local voice assets. Graph view hands you a graph. This node is the bridge - it writes an AUDIO batch to disk as a Studio asset and tells the interface it exists, so the track you generated in the graph shows up in the picker afterwards.
In the pack's own voice workflows it's the last node in the chain: Load Audio → Zura LongCat Voice → Zura · Use Generated Speech in Studio. You can swap the voice engine for anything that outputs AUDIO - Qwen Voice Design, Chatterbox, whatever you've got - and it still lands in Studio as a selectable track.
Inputs and outputs
Two inputs. audio is the AUDIO payload. asset_id is a string, and here's the bit that matters: it must already be a 32-character lowercase hex id that Studio generated. Type a random string or your own identifier and the node raises "Create this voice track from Zura Studio." The id is the thing that ties the file to a project record, and the node will not invent one for you.
One output, AUDIO, which passes your track straight through so you can keep wiring downstream. It's also an output node, so it always executes when the graph runs, and it publishes a ZURA_AUDIO:<id> marker that the frontend reads to refresh the asset list.
Two side effects, both deliberate. The waveform is written as a 24-bit PCM WAV to ComfyUI/input/genj_studio/<asset_id>/speech.wav, and an asset record is registered in the Studio store with the file's SHA-256, a display name and its duration. The hash is the point - later stages can verify the audio they're conditioning on hasn't been quietly swapped.
When you actually need it
If you're working entirely inside Studio, you don't. The voice step there wires this up itself: when you hit Create a voice track, Studio builds a graph with this node in it and the asset appears in your project automatically, with the same identity that the speech-guide provenance checks expect.
You need it when you go off-script - you edited the exported graph, you're generating a narration pass in Graph view, or you built a voice from a model the Studio wrapper doesn't know about and you want it usable in the next take. Dump it out through this node, return to Studio, and it's in the list.
Install
Nothing extra. It arrives with the pack:
cd ComfyUI/custom_nodes && git clone https://github.com/ZURAVFX/ComfyUI_zura_nodes
pip install -r ComfyUI_zura_nodes/requirements.txt
Manager install: search Zura Nodes, publisher ZURAVFX, restart. The node uses soundfile for the WAV write, and that's in the pack's requirements - if a Manager install skipped requirements, pip install soundfile into the ComfyUI environment fixes it.
Common issues
"Create this voice track from Zura Studio." You're not in a Studio-spawned graph, so there's no id to hand it. Open the project in Studio, kick off a voice creation there once, and copy the id from the generated graph. Hand-crafting assets behind the store's back is exactly what this check stops, and it stops it because a mismatched id produces a broken project record rather than an error you'd notice.
"The speech model returned invalid audio." The upstream node produced silence, NaNs, or more than one channel in a shape this node won't accept. It wants a single batch, and finite values. Check the voice node's own output with Preview Audio before blaming this one.
It saved but Studio doesn't show the track. Refresh the Studio tab. The asset list is a frontend view over the store, and the refresh is driven by that ZURA_AUDIO: marker arriving - if you queued the node from a different client, the browser you're looking at never saw the message.
The file went somewhere unexpected. It's inside ComfyUI/input/, not output/, because that's where Studio looks for project media. Don't move it; the store record stores a relative path and a hash, and moving either one breaks the pairing.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| asset_id | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |