Doubao Seed Audio 1.0 音频生成
Want a voice that isn't yours? Doubao Seed Audio clones it from a photo
- reference_image
- reference_audio1
- reference_audio2
- reference_audio3
- api_config
- audio
- audio_url
- audio_path
- task_id
- response
The party trick here is that you can hand this node a photo of a person and it will generate audio in that person's voice. Doubao Seed Audio 1.0 is ByteDance's closed audio model (Doubao is ByteDance's consumer AI brand; the Seed line never gets open weights), and this node is how it sneaks into your ComfyUI graph. It's not a text-to-speech toy - you can clone a voice from up to three reference clips, or let the model infer a voice from a single reference image, which is the workflow the pack's own example files are built around.
The name is a bit of a lie: nothing runs on your machine. This is an API-wrapper node from the T8mars/ComfyUI_Seedance pack, which fronts a budget AI gateway (default https://api.seedance.nz). You pay per call with an API key, not with VRAM.
How it works
The node hits the async /v1/audio/generations endpoint (not the sync /v1/audio/speech one - the README is explicit about that, because the model family does have both). Your prompt and any reference material get uploaded, a task ID comes back, the node polls until the job finishes, downloads the result, and decodes it into a ComfyUI AUDIO. Decoding doesn't even need torchaudio - it falls back to SciPy for the default 24 kHz stereo WAV, so a bare requests-only install just works.
The inputs that actually matter
- prompt - 5 to 2048 characters. This drives the content: narration text, singing direction, whatever the scene needs.
- speaker - an optional voice/ID from the API. Fine, but the interesting path is cloning.
- reference_image or reference_audio1..3 - here's the catch: these are mutually exclusive with
speaker, and with each other. Pick one route: an image (the "identify this person" trick), or up to three reference clips (proper voice cloning). The tooltips spell it out, and the node will reject you if you try to mix sources. - output_format -
wavis the default and the README's advice: easiest for ComfyUI to decode. Switch to mp3/pcm/ogg_opus only if you need it downstream. - speech_rate (−50 to 100), loudness_rate (−50 to 100), pitch_rate (−12 to 12) - your fine-control dials. Leave them at 0 to start.
Outputs are audio (the decoded AUDIO, wire it into any save/preview node), plus audio_url, audio_path, task_id and the raw response JSON for debugging.
Installing it
This ships inside T8mars/ComfyUI_Seedance - a small one-person API-wrapper pack. Install from ComfyUI Manager by searching "ComfyUI Seedance", or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/ComfyUI_Seedance.git
cd ../..
python -m pip install -r custom_nodes/ComfyUI_Seedance/requirements.txt
Restart ComfyUI, then get a key from api.seedance.nz/console. Drop a Seedance API Config node in with base_url and api_key, and connect its api_config output here - or set SEEDANCE_API_KEY and skip the node.
Common issues
- "API key empty" - you skipped the config step; connect the Config node or set the env var.
- Weird WAV duration - the upstream sometimes stamps WAVs with a
0xFFFFFFFFstreaming length marker, so strict readers report a wrong duration. The node itself decodes fine; if external software complains, re-save the audio through ComfyUI's audio save node. - Node not in the menu after install - restart ComfyUI; check the plugin lives at
ComfyUI/custom_nodes/ComfyUI_Seedance. - Reference sources rejected - you wired
speakerand a reference image. Pick one.
Remember the whole input leaves your machine for a server you don't control - that's the deal with any closed-model API node, and Seed Audio is ByteDance's model with ByteDance's moderation behind the gateway.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Audio prompt, 5-2048 characters. | 音频提示词,5-2048 字符。 | |
| speaker | STRING | Optional speaker/voice id. Mutually exclusive with reference image/audio. | 可选音色 ID,不能与参考图/参考音频同时使用。 | |
| output_format | COMBO | wav | Audio file format. wav is easiest for ComfyUI decoding. | 输出格式,wav 最容易被 ComfyUI 解码。 |
| sample_rate | COMBO | 24000 | Output sample rate. | 输出采样率。 |
| speech_rate | INT | 0-50–100 | Speech rate adjustment, -50 to 100. | 语速,-50 到 100。 |
| loudness_rate | INT | 0-50–100 | Loudness adjustment, -50 to 100. | 音量,-50 到 100。 |
| pitch_rate | INT | 0-12–12 | Pitch adjustment, -12 to 12. | 音高,-12 到 12。 |
| reference_imageopt | IMAGE | Optional reference image. Cannot be used with speaker or reference audio. | 可选参考图,不能与音色 ID 或参考音频同时使用。 | |
| reference_audio1opt | AUDIO | Optional reference audio 1 of 3. Cannot be used with speaker or reference image. | 可选参考音频 1/3,不能与音色 ID 或参考图同时使用。 | |
| reference_audio2opt | AUDIO | Optional reference audio 2 of 3. Cannot be used with speaker or reference image. | 可选参考音频 2/3,不能与音色 ID 或参考图同时使用。 | |
| reference_audio3opt | AUDIO | Optional reference audio 3 of 3. Cannot be used with speaker or reference image. | 可选参考音频 3/3,不能与音色 ID 或参考图同时使用。 | |
| api_configopt | SEEDANCE_CONFIG | Connect Seedance API Config; otherwise SEEDANCE_API_KEY is used. | |
| skip_erroropt | BOOLEAN | false | On failure return 1 second of silence instead of stopping the workflow. | 失败时输出 1 秒静音。 |
| seedopt | INT | 00–18446744073709550000 | ComfyUI cache seed. Fixed reuses the cached result while all other inputs stay unchanged; randomize/increment/decrement starts a new execution. This value is not sent to models without documented seed support. | ComfyUI 缓存种子;Fixed 在其他输入不变时复用缓存,随机、递增或递减会触发新任务。未声明支持 seed 的模型不会收到此参数。 |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| audio_url | STRING | — |
| audio_path | STRING | — |
| task_id | STRING | — |
| response | STRING | — |