Skip to content

Seed Speech TTS

Node name
BytePlus Seed Speech TTS
Node ID
BytePlusSeedTTS
Find it
Double-click the canvas and search for “Seed Speech TTS”, or browse BytePlus ModelArk/Speech
Keys needed
Seed Speech API key
Runs when
Its output is used by another node, such as Save Image or Save Video. It is not an output node.

Reads your text aloud with a Seed Speech voice and returns it as ComfyUI audio. Pick a voice from the voice list with seed-tts-2.0, or type a speaker ID in custom_speaker_id to use a TTS 1.0 speaker or a voice you cloned.

The node needs your separate Seed Speech API key (Singapore region only), and every run sends one billed request. It does not save anything itself: connect Save Audio or Preview Audio to keep or hear the result.

The Seed Speech TTS node with model seed-tts-2.0, a short English sentence and the voice en_female_stokie_uranus_bigtts
Default settings with the TTS 2.0 voice list.
InputTypeDefaultWhat it does
modelchoiceseed-tts-2.0seed-tts-2.0 for the voice list; seed-icl-* for cloned voices (custom_speaker_id).Choices: seed-tts-2.0, seed-tts-1.0, seed-icl-2.0, seed-icl-1.0
texttext
voicechoiceen_female_stokie_uranus_bigttsTTS 2.0 voice. Each voice supports specific languages; see the Seed Speech voice list.Choices: en_female_stokie_uranus_bigtts, en_female_dacey_uranus_bigtts, en_male_tim_uranus_bigtts, en_female_nadia_uranus_bigtts, en_male_kevin_uranus_bigtts, en_male_jamie_uranus_bigtts, en_female_hayley_uranus_bigtts, en_female_skye_uranus_bigtts, en_male_bruce_uranus_bigtts, en_male_alex_uranus_bigtts, en_male_yangguangjieshuonan_uranus_bigtts, en_male_ronald_uranus_bigtts … (177 in total)
custom_speaker_idtextOverrides voice: a cloned voice (connect Seed Voice Clone's speaker_id, model seed-icl-2.0) or a TTS 1.0 speaker ID.
context_texttextTTS 2.0 only: style instruction or preceding dialogue, e.g. 'Speak slowly, sounding heartbroken.' Not billed.
emotiontextEmotion for voices that support it, e.g. happy, sad, angry. Empty = neutral.
emotion_scaleinteger4Range: 1–5
speech_rateinteger0100 = 2x speed, -50 = 0.5x.Range: -50–100
loudness_rateinteger0100 = 2x volume, -50 = 0.5x.Range: -50–100
pitchinteger0Pitch shift in semitones.Range: -12–12
sample_ratechoice24000Hz. seed-tts-2.0 supports 24000, 16000 and 8000.Choices: 24000, 16000, 8000, 22050, 32000, 44100, 48000
explicit_languagechoiceautoRead only text in this language. auto handles mixed Chinese and English.Choices: auto, en, zh-cn, ja, ko, id, th, vi, ms, fil, es, es-mx … (22 in total)
silence_durationinteger0Silence added after the last sentence, in ms.Range: 0–30000
filter_markdownon/offoffStrip Markdown syntax so **bold** is read as 'bold'.
enable_subtitleon/offoffReturn timestamps (Chinese and English): subtitles for 2.0 voices, word timestamps for 1.0 voices.
seedinteger0Not sent to the API; change it to synthesize again.Range: 0–18446744073709552000
Advanced inputs (8)
InputTypeDefaultWhat it does
detect_languageon/offoffDetect the text language automatically.
context_languagechoicedefaultReference language for Western European text: default English, id Indonesian, es Mexican Spanish, pt Brazilian Portuguese.Choices: default, id, es, pt
read_emojion/offoffKeep emoji in the text instead of filtering them out.
read_latexon/offoffRead LaTeX formulas aloud (also enables filter_markdown).
read_parentheseson/offoffRead text inside parentheses (filtered out by default).
unsupported_char_rationumber0.3Fail when more than this share of the text is in an unsupported language.Range: 0–1
use_cacheon/offoffReuse audio synthesized for identical text in the last hour (no timestamps from cache).
tone_fidelityon/offoffseed-icl-2.0 only: stay as close as possible to the training audio's voice, emotion and accent (same language only).
  • Models: seed-tts-2.0 uses the voice list. seed-tts-1.0, seed-icl-2.0 and seed-icl-1.0 have no entry in that list: they need a speaker ID in custom_speaker_id. Use seed-icl-2.0 with the speaker_id from Seed Voice Clone.
  • custom_speaker_id wins: when it is filled, voice is ignored. The voice list always has a value, so you can leave it as it is.
  • Style: context_text (TTS 2.0 only) takes an instruction such as “Speak slowly, sounding heartbroken.” emotion and emotion_scale work for voices that support emotions. An empty emotion means neutral.
  • Subtitles: turn on enable_subtitle to fill subtitles_json and srt. The 2.0 models (seed-tts-2.0, seed-icl-2.0) return subtitles, the 1.0 models word timestamps.
  • Language: explicit_language limits reading to one language. auto copes with mixed Chinese and English.
  • seed: it is not sent to the API. Change it to synthesize the same text again.
OutputTypeWhat it holds
audioAUDIO
subtitles_jsontext
srttext
  • audio is decoded from the raw PCM the API streams back, at the sample_rate you chose.
  • srt stays empty and subtitles_json has no segments unless enable_subtitle is on and the service returns timestamps.
  • seed-tts-2.0 accepts only the sample rates 24000, 16000 and 8000. The node stops with an error for the others.
  • context_text works only with seed-tts-2.0, and tone_fidelity only with seed-icl-2.0 (same language as the training audio).
  • Timestamps are available for Chinese and English. Cached audio (use_cache, identical text within the last hour) comes without timestamps.
  • A voice supports specific languages. If the service says the voice is not available, check that the model matches the voice: TTS 2.0 voices need seed-tts-2.0, cloned voices need seed-icl-*.
  • filter_markdown and the advanced read_emoji, read_latex and read_parentheses control how Markdown, emoji, LaTeX and text in parentheses are read. unsupported_char_ratio makes the request fail when too much of the text is in a language the voice cannot read.
  • Interrupting a run stops the node’s wait. The node sends no cancel request, so a request that was already sent may still be billed.
Message What to do
[BytePlus] No Seed Speech API key is set. Add it in Settings > BytePlus … Add the Seed Speech key in Settings → BytePlus. See API keys.
[BytePlus] … needs custom_speaker_id: the voice list only holds TTS 2.0 voices. You picked seed-tts-1.0 or a seed-icl-* model. Fill custom_speaker_id, or switch to seed-tts-2.0.
… The voice is not available for this key or model. Check the speaker ID … Check the speaker ID and that the model fits it. TTS 2.0 voices need seed-tts-2.0, cloned voices seed-icl-*.
[BytePlus] seed-tts-2.0 supports the sample rates 24000, 16000 and 8000 Hz. Set sample_rate to 24000, 16000 or 8000.
… The text is longer than the model accepts. Split the text into shorter parts and run the node once per part.