Nodes/ComfyUI-BytePlus-ModelArk/BytePlus Create Audio Asset
ComfyUI Node

BytePlus Create Audio Asset

Keep a voice clip where Seedance can find it

By byteplus-sa·Created 8 days ago·Updated about 8 hours ago· 3
BytePlus Create Audio Asset
  • audio
  • asset_id
  • group_id
  • asset_uri
  • info
◄group_id►
◄audio_url►
◄group_nameComfyUI Virtual Portraits►
◄asset_nameComfyUI audio►
◄project_namedefault►
◄wait_until_activetrue►

Seedance 2.5's reference-to-video is multimodal - you can hand it an image, a video and an audio clip, and the audio becomes part of what the generated shot sounds like. Audio goes in as a URL or as an asset, and an asset is what survives between runs. So this node does for sound what its image and video siblings do for pictures: it registers a clip in your BytePlus private asset library and returns an asset_id you can drop into any later workflow.

It's the least-used of the three create nodes, and honestly the most likely one to be overkill. If your audio comes out of a TTS node in the same graph, wiring it straight into the reference-to-video node's reference_audio_N input is fine - the node handles it. Register an asset when the same clip has to show up in ten different runs, or when you're building a library of voice drops you want to reach for by name.

How it works

CreateAsset only accepts an HTTPS URL, so a connected audio input is converted to WAV and uploaded to Comfy.org storage first (Comfy.org login needed), then registered in a group; the node polls until the asset goes Active - up to ten minutes - because Seedance won't take a Processing asset. Re-running with the same clip reuses the same asset instead of spawning duplicates.

BytePlus's rules for an audio asset are narrow: WAV or MP3, 2 to 30 seconds, and no more than 15 MB. That's a sound effect or a line of dialogue, not a music bed.

Inputs and outputs

  • audio (optional) is the clip to register. audio_url is the public-HTTPS route that skips the Comfy.org upload entirely - the one to use if you already have the file hosted somewhere.
  • group_id joins an existing group; leave it empty and group_name finds or creates the virtual-portrait (AIGC) group by exact name. asset_name, project_name and wait_until_active are housekeeping. Leave wait_until_active on unless you enjoy debugging failures from three nodes downstream.
  • Outputs: asset_id, group_id, asset_uri and info (JSON). The asset_id is what you connect to an asset_N input on BytePlus Seedance 2.5 Reference to Video.

Install and keys

cd ComfyUI/custom_nodes
git clone https://github.com/byteplus-sa/ComfyUI-BytePlus-ModelArk
pip install -r ComfyUI-BytePlus-ModelArk/requirements.txt

Restart, or install through Manager by searching BytePlus ModelArk. This node needs the ModelArk API key, IAM AK/SK with asset-library permission, and Dreamina Seedance Advanced Creation Rights. Put them in Settings → BytePlus or user/.env (BYTEPLUS_API_KEY, BYTEPLUS_ACCESS_KEY, BYTEPLUS_SECRET_KEY).

Where people get burned

Two things bite here. First, Comfy.org storage: without a Comfy.org login, a connected clip can't be uploaded, so audio_url becomes your only path. Second, the length limit - people try to register a full song and get rejected at 31 seconds. Audio assets are for short reference material; if you want a 2-minute voiceover to land in a video, that's a Seed Audio or TTS job, not this node.

And the standing warning for the whole asset library: it's for media you're authorized to use. That's why BytePlus gates the feature behind Advanced Creation Rights in the first place.

CategoryBytePlus ModelArk

Inputs (7)

NameTypeDefaultDescription
group_idSTRINGReuse an existing asset group ID to add more assets of the same person: a virtual portrait (AIGC) group, or a verified real person's LivenessFace group. Leave empty to find or create the virtual portrait (AIGC) group named group_name. Real-person verification is a QR-code flow in the ModelArk console (BytePlus has no API for it), so unlike ComfyUI core's node this node does not start it: verify the person in the console, then paste the group ID here.
audio_urlSTRINGPublic HTTPS URL of a .wav or .mp3 file, used instead of the audio input: sent straight to CreateAsset without a Comfy.org upload.
group_nameSTRINGComfyUI Virtual PortraitsUsed when group_id is empty: the virtual portrait (AIGC) group, matched by exact name and created if missing. Use one group per person.
asset_nameSTRINGComfyUI audioName of the new asset.
project_nameSTRINGdefaultModelArk project that holds the asset library.
wait_until_activeBOOLEANtrueWait (up to 10 min) until the asset is Active and can be used in Seedance.
audiooptAUDIOAudio to register as a personal asset (2-30 s). Leave unconnected to use audio_url instead.

Outputs (4)

NameTypeDescription
asset_idSTRING—
group_idSTRING—
asset_uriSTRINGasset://<asset_id>, for inputs that take URIs.
infoSTRINGThe asset as JSON.