Comfy-Org/ComfyUI · error · ValueError

'{MODE_SPEAKER}' mode uses a single voice, so @Audio{max_tag

Error message

'{MODE_SPEAKER}' mode uses a single voice, so @Audio{max_tag} is out of range. Remove the @AudioN tags — the whole prompt is read in the selected voice.

What it means

Thrown by the ByteDance Seed Audio node in 'preset voice' mode when the prompt contains an @AudioN tag with N > 1. Preset-voice mode uses exactly one voice for the entire prompt, so only @Audio1 (if any) is meaningful; higher indices have no corresponding audio input. The node asks you to remove the tags entirely.

Source

Thrown at comfy_api_nodes/nodes_bytedance.py:3190

            )
        if max_tag > len(audio_indices):
            raise ValueError(
                f"The prompt references @Audio{max_tag}, but only {len(audio_indices)} "
                f"reference audio(s) are connected."
            )
    elif mode == MODE_IMAGE:
        if not has_image:
            raise ValueError(f"Reference mode '{MODE_IMAGE}' requires a reference_image input.")
        if max_tag:
            raise ValueError(
                f"@AudioN tags are not used in '{MODE_IMAGE}' mode; the prompt should contain "
                f"only the text to synthesize."
            )
    elif mode == MODE_SPEAKER:
        if not preset_voice or preset_voice not in SEED_AUDIO_VOICE_MAP:
            raise ValueError(f"Reference mode '{MODE_SPEAKER}' requires selecting a preset voice.")
        if max_tag > 1:
            raise ValueError(
                f"'{MODE_SPEAKER}' mode uses a single voice, so @Audio{max_tag} is out of range. "
                f"Remove the @AudioN tags — the whole prompt is read in the selected voice."
            )
    else:
        raise ValueError(f"Unknown reference mode: {mode!r}")


class ByteDanceSeedAudioNode(IO.ComfyNode):

    @classmethod
    def define_schema(cls) -> IO.Schema:
        return IO.Schema(
            node_id="ByteDanceSeedAudio",
            display_name="ByteDance Seed Audio 1.0",
            category="partner/audio/ByteDance",
            description=(
                "Generate speech, music, sound effects and multi-speaker dialogue from a single prompt "
                "with ByteDance Seed Audio 1.0. Describe the voice(s), emotion, ambience, background music "

View on GitHub (pinned to 1c6d8d45b3)

Solutions

  1. Remove all @AudioN tags from the prompt; in preset voice mode the whole text is read in the selected voice.
  2. If you genuinely need multiple distinct voices, switch reference_mode to 'audio reference' and connect one reference audio per speaker tag.

Example fix

// before: prompt = "<@Audio1>Hi<@Audio2>Hey" (mode: preset voice)
// after:  prompt = "Hi. Hey." (mode: preset voice)
Defensive patterns

Strategy: validation

Validate before calling

import re

def check_speaker_mode_prompt(prompt: str) -> None:
    tags = [int(n) for n in re.findall(r"@Audio(\d+)", prompt)]
    if tags and max(tags) > 1:
        raise ValueError("preset voice mode supports at most @Audio1; remove speaker tags")

Prevention

When it happens

Trigger: reference_mode == 'preset voice', a valid preset_voice IS selected, but max_tag parsed from the prompt is greater than 1.

Common situations: Dialogue prompt with <@Audio1>/<@Audio2> speaker tags reused after switching from 'audio reference' mode to 'preset voice'; template prompts that always wrap lines in speaker tags.

Related errors


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