{"record":{"id":"9f4fd32e7bbdfcdb","repo":"Comfy-Org/ComfyUI","slug":"reference-mode-mode-speaker-requires-selecting","errorCode":null,"errorMessage":"Reference mode '{MODE_SPEAKER}' requires selecting a preset voice.","messagePattern":"Reference mode '(.+?)' requires selecting a preset voice\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"comfy_api_nodes/nodes_bytedance.py","lineNumber":3188,"sourceCode":"            raise ValueError(\n                \"Connect reference_audio inputs in order without gaps: reference_audio_1, then _2, then _3.\"\n            )\n        if max_tag > len(audio_indices):\n            raise ValueError(\n                f\"The prompt references @Audio{max_tag}, but only {len(audio_indices)} \"\n                f\"reference audio(s) are connected.\"\n            )\n    elif mode == MODE_IMAGE:\n        if not has_image:\n            raise ValueError(f\"Reference mode '{MODE_IMAGE}' requires a reference_image input.\")\n        if max_tag:\n            raise ValueError(\n                f\"@AudioN tags are not used in '{MODE_IMAGE}' mode; the prompt should contain \"\n                f\"only the text to synthesize.\"\n            )\n    elif mode == MODE_SPEAKER:\n        if not preset_voice or preset_voice not in SEED_AUDIO_VOICE_MAP:\n            raise ValueError(f\"Reference mode '{MODE_SPEAKER}' requires selecting a preset voice.\")\n        if max_tag > 1:\n            raise ValueError(\n                f\"'{MODE_SPEAKER}' mode uses a single voice, so @Audio{max_tag} is out of range. \"\n                f\"Remove the @AudioN tags — the whole prompt is read in the selected voice.\"\n            )\n    else:\n        raise ValueError(f\"Unknown reference mode: {mode!r}\")\n\n\nclass ByteDanceSeedAudioNode(IO.ComfyNode):\n\n    @classmethod\n    def define_schema(cls) -> IO.Schema:\n        return IO.Schema(\n            node_id=\"ByteDanceSeedAudio\",\n            display_name=\"ByteDance Seed Audio 1.0\",\n            category=\"partner/audio/ByteDance\",\n            description=(","sourceCodeStart":3170,"sourceCodeEnd":3206,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy_api_nodes/nodes_bytedance.py#L3170-L3206","documentation":"Thrown by the ByteDance Seed Audio node when reference_mode is 'preset voice' but the preset_voice selection is empty or not a key in SEED_AUDIO_VOICE_MAP (the map of preset voice labels to speaker ids built from SEED_AUDIO_PRESET_VOICES). Preset-voice mode requires one of the built-in voices; the whole prompt is read in that voice.","triggerScenarios":"reference_mode == 'preset voice' and preset_voice is falsy or not present in SEED_AUDIO_VOICE_MAP.","commonSituations":"Workflow loaded from JSON where the combo value for preset_voice is missing or from an older/newer version whose voice list differs; user typed a custom voice name into a combo that expects one of the fixed labels; locale change renamed the voice label.","solutions":["Open the node and pick one of the offered preset voices from the preset_voice dropdown (do not type a custom value).","If the workflow JSON carries a stale voice string, re-select the voice and re-save the workflow.","If you want to use your own audio clip as the voice, switch reference_mode to 'audio reference' and connect reference_audio inputs."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"valid_modes = {\"text only\", \"audio reference\", \"image reference\", \"preset voice\"}\n\n# before queueing, ensure the preset_voice combo value is one of the offered labels\nassert preset_voice in offered_preset_voices, f\"preset_voice {preset_voice!r} is not in the dropdown list\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always select preset voices from the dropdown rather than typing or hand-editing JSON values.","After loading a shared workflow, re-confirm combo selections on ByteDance nodes before running."],"tags":["comfyui","bytedance","seed-audio","validation","enum"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}