Nodes/SunoComfyUI/Suno Create Vox Audio (Ace Data Cloud)
ComfyUI Node

Suno Create Vox Audio (Ace Data Cloud)

Pull the singer out of the mix

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Suno Create Vox Audio (Ace Data Cloud)
    • status
    • task_id
    • media_urls_json
    • first_media_url
    • result_json
    • trace_id
    ◄parameters_json{}►
    ◄audio_id►
    ◄vocal_start►
    ◄vocal_end►
    ◄callback_url►

    Most people meet stem separation when they're trying to reuse a voice: you have a track, the drums and bass are welded to the vocal, and every downstream thing you want to do - clone that voice, build a persona, sing a different song with it - wants the voice on its own. Suno Create Vox Audio (Ace Data Cloud) is the hosted version of that first step, and it's mostly useful because of what it feeds.

    It's an async job, not an instant transform. It takes an existing track and a time range, extracts the vocal from that range, and returns a task you poll like any other.

    Inputs

    Four named fields plus parameters_json:

    • audio_id - an ID of a track that already exists on Ace's side, not a URL. Getting this is the step people skip: it comes out of the result_json of a generation call, not from the filename on your disk.
    • vocal_start and vocal_end - numbers, in seconds, and both are required by the published contract. vocal_start has a floor of 0; vocal_end has to be greater than zero and after the start. The typed-as-string widgets are coerced for you, so 12.5 works and twelve gets you a validation error.
    • callback_url - optional. A webhook the service can call when the job finishes. You almost certainly don't want it: the pack's own retrieve node is the polling mechanism, and an unreachable callback just adds a failure mode. Leave it empty unless you have a service listening.

    The rules from the pack apply: any non-empty named field overrides the same key in parameters_json, empty fields are dropped, and the whole payload is validated against the copied API contract before anything is sent. The client also sets async: true automatically for this endpoint, which is why you get a task rather than a file.

    Outputs

    The six standard tool-node strings: status, task_id, media_urls_json, first_media_url, result_json, trace_id.

    For this node, task_id and result_json are the ones that matter. The vocal file itself arrives as a media URL once the job succeeds - and the ID of the extracted vocal, which is what you feed into vox_audio_id on Suno Create Persona, lands in result_json. media_urls_json keeps every link the response mentions rather than the first one, which is the pack's hedge against responses that return a list of takes instead of a single file.

    How it fits the workflow

    The chain worth knowing is: generate a track → extract the vocal from the good four bars → build a persona on that cleaner reference → generate new songs in that voice. You'll get noticeably better persona results from a stripped vocal than from a full mix, and that's the entire reason this node exists. It's also the answer to "I like this singer but I have six songs' worth of drums in the way."

    If you just want stems for a mix and don't care about personas, note that the pack also exposes stems and all_stems as actions on Suno Generate Audios - but those return all the parts, not a purpose-built vocal excerpt.

    Install

    Ships with SunoComfyUI. Manager → Custom Nodes → search Suno → publisher acedatacloud, package Suno by Ace Data Cloud (Registry ID ace-suno) → install → restart. Source route:

    cd /path/to/ComfyUI/custom_nodes
    git clone https://github.com/AceDataCloud/SunoComfyUI.git
    cd SunoComfyUI
    python -m pip install -r requirements.txt
    

    requests and jsonschema. No models, no GPU, no downloads. The endpoint is /suno/vox, so a strict Ace application needs that path allowed. Key into the ComfyUI process environment, then restart:

    export ACEDATACLOUD_API_KEY='paste-your-key-here'
    python main.py
    

    When it goes wrong

    Validation complaints about vocal_start/vocal_end. They're numbers with real constraints, and an empty string in a required numeric field is not the same as omitting it. Fill both.

    audio_id rejected. You passed a URL or a job ID. The contract wants the track's audio ID.

    does not meet the API's additionalProperties constraint. The tool nodes validate against a strict contract, so any named field you fill that this call has no room for gets rejected. Clear the widgets you aren't using - leftovers from a previous experiment are the usual culprit.

    Ace Data Cloud HTTP 401. Key, path restriction, or service access. Never the task's fault.

    You're waiting on a pending status. That's expected for an extraction job; re-run the query rather than the submission. The client will not retry a billable request on your behalf, and it will happily retry a read-only one three times.

    CategoryAce Data Cloud/Suno

    Inputs (5)

    NameTypeDefaultDescription
    parameters_jsonSTRING{}—
    audio_idSTRING—
    vocal_startSTRING—
    vocal_endSTRING—
    callback_urlSTRING—

    Outputs (6)

    NameTypeDescription
    statusSTRING—
    task_idSTRING—
    media_urls_jsonSTRING—
    first_media_urlSTRING—
    result_jsonSTRING—
    trace_idSTRING—