Comfy-Org/ComfyUI · error · Exception

Seed Audio returned no audio (code={response.code}): {respon

Error message

Seed Audio returned no audio (code={response.code}): {response.message}

What it means

Raised after the Seed Audio API call succeeds at the transport level but the response object contains an empty `audio` field. The message includes the service's numeric response code and message, so the upstream refusal reason (content moderation, invalid reference audio, quota, etc.) is surfaced directly. This is an API-side failure, not a local validation error.

Source

Thrown at comfy_api_nodes/nodes_bytedance.py:3395

        response = await sync_op(
            cls,
            ApiEndpoint(path="/proxy/byteplus/api/v3/tts/create", method="POST"),
            response_model=SeedAudioResponse,
            data=SeedAudioRequest(
                model=model,
                text_prompt=text_prompt,
                references=references,
                audio_config=SeedAudioConfig(
                    sample_rate=int(sample_rate),
                    speech_rate=speech_rate,
                    loudness_rate=loudness_rate,
                    pitch_rate=pitch_rate,
                ),
            ),
        )
        if not response.audio:
            raise Exception(
                f"Seed Audio returned no audio (code={response.code}): {response.message}"
            )
        return IO.NodeOutput(audio_bytes_to_audio_input(base64.b64decode(response.audio)))


class ByteDanceExtension(ComfyExtension):
    @override
    async def get_node_list(self) -> list[type[IO.ComfyNode]]:
        return [
            ByteDanceImageNode,
            ByteDanceSeedreamNode,
            ByteDanceSeedreamNodeV2,
            ByteDanceSeedreamLayerSeparationNode,
            ByteDanceTextToVideoNode,
            ByteDanceImageToVideoNode,
            ByteDanceFirstLastFrameNode,
            ByteDanceImageReferenceNode,
            ByteDance2TextToVideoNode,

View on GitHub (pinned to 1c6d8d45b3)

Solutions

  1. Read the code/message in the error text — it is the upstream service's own reason and dictates the fix.
  2. Rephrase the prompt or swap the reference audio if the code indicates content policy or invalid input.
  3. Verify the ByteDance/Volcengine API credentials and that the account has Seed Audio access.
  4. Retry once after a short wait — transient service failures can return an empty audio payload.
Defensive patterns

Strategy: try-catch

Try / catch

try:
    audio = await seed_audio_node.execute(...)
except Exception as e:
    if "returned no audio" in str(e):
        # inspect code/message embedded in the error text, then retry once or surface to user
        log.warning(f"Seed Audio empty result: {e}")
        raise

Prevention

When it happens

Trigger: A sync_op call to the ByteDance Seed Audio endpoint returns 2xx with response.audio empty and a non-zero response.code — e.g. prompt rejected by content filters, unreadable reference audio, or service-side generation failure.

Common situations: Prompts with disallowed content; corrupted or silent reference audio clips; invalid API credentials hitting a service-level error path; transient upstream incidents; region/account restrictions on the Seed Audio model.

Related errors


AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14). Data as JSON: /api/errors/c8d857b8be3ed5f0. Report an issue: GitHub.