Nodes/PopNow/Seed Speech 2.0 · Text to Speech
ComfyUI Node

Seed Speech 2.0 · Text to Speech

Tell it how to read the line, not just what to say

By popnow-ai·Created 24 days ago·Updated about 20 hours ago· 0
Seed Speech 2.0 · Text to Speech
    • audio
    • task id
    ◄text►
    ◄voice_idstokie_en►
    ◄instructions►
    ◄speed1.00►
    ◄pitch0►
    ◄volume1.00►
    ◄languagemodel default►
    ◄output_formatmp3►
    ◄sample_ratemodel default►

    Most text-to-speech asks you to pick a voice and hope the delivery suits the line. Seed Speech 2.0 gives you a whole second text field - instructions - where you describe how to read it: "warm but tired, slightly rushed, like she's reading a bedtime story at 11pm". That text is not spoken and, per the tooltip, not billed. It's direction, and it's the reason to reach for this node over a local TTS model when the read matters.

    10.8 credits per 1,000 characters, and a minute of speech is roughly 900 characters - so call a minute of narration ten credits. Cheap enough that the interesting question isn't cost, it's whether you'd rather spend an afternoon wiring and debugging a local voice pipeline.

    What it is

    PopNow's node for ByteDance's bytedance/seed-speech-2.0/text-to-speech, running server-side. You get back a ComfyUI AUDIO value - waveform plus sample rate, the same shape ComfyUI's core audio nodes use - so Save Audio writes it out and anything that takes AUDIO just works. No weights, no VRAM, no local TTS stack to debug.

    If you've looked at the local options, this is the same slot Chatterbox, F5-TTS and Kokoro occupy in a local graph. Those win on cost-after-setup and on running offline; this wins on not installing a dozen packages with conflicting sample-rate opinions, and on the instruction field.

    The inputs

    • text - the words, exactly as written. Billed per 1,000 characters, so trimming fluff is literal savings.
    • voice_id - 41 preset voices; default stokie_en. The tooltip's tip is the useful part: the suffix shows the languages the voice is built for, so vivi_mixed_en_zh_ja_es_id is a multilingual voice and magnus_en_zh speaks English and Mandarin. Pick by suffix, not by how the name sounds to you.
    • instructions - tone, emotion, pace, volume, in plain language. Not spoken, not billed. This is where the node earns its keep.
    • speed - 0.5 to 2, where 1 is the voice's own pace. 0.95 is a useful default for narration; much under 0.85 sounds drugged.
    • pitch - −12 to +12 semitones. Blunt instrument; ±2 is usually all you need.
    • volume - 0.5 to 2, 1 is normal. Leave it at 1 and normalize downstream if you care.
    • language - "model default" means auto-detect from the text. Force en, zh, ja, ko, de, fr, it, es-mx, pt-br or id when auto-detection gets it wrong - which happens on short strings and on names.
    • output_format - mp3 (default) or opus (an Ogg Opus file). No wav here; decode to wav in your editor if the next step needs PCM.
    • sample_rate - model default is 24 kHz. Set 44100 or 48000 if you're cutting it into a video timeline.

    Outputs

    audio, and task id. Two practical notes: the audio output can be a batch if the model returns several takes, and Save Audio writes one file per item - check the folder before assuming one file. The task id is your handle for the API console and support.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/popnow-ai/popnow-comfyui
    

    or search PopNow in ComfyUI Manager and Install. Key from popnow.ai/api/console/keys into Settings > PopNow, or set POPNOW_API_KEY, then restart once more so the node list comes from your account's catalog. No pip dependencies - a genuine relief in the audio corner of the ecosystem, where node packs often drag in a pinned Torch.

    Common issues

    • PopNow 40201 - credits. Billed per 1,000 characters, so a long script is a real number; count before you paste.
    • Wrong language on a short line - set language explicitly instead of trusting detection.
    • instructions ignored - keep it concrete and character-based rather than a list of adjectives. "Reading a phone number to someone who's writing it down" works better than "clear".
    • PopNow 400 naming a field - a voice id that doesn't exist, or a sample rate not on the list.
    • Cancelling stops your wait, not the job - it finishes server-side and bills if it succeeds.

    The interesting pairing in this pack is with Seed Audio 1.0, which makes whole scenes with multiple voices and sound design. This node does one voice, done well, with direction. Use this for narration and dialogue lines you'll mix yourself; use the other when you need the scene.

    CategoryPopNow/Audio/ByteDance

    Inputs (9)

    NameTypeDefaultDescription
    textSTRINGThe words to be spoken, exactly as written. Billed per 1,000 characters.
    voice_idCOMBOstokie_enPreset voice. The suffix shows the languages it is built for.
    instructionsSTRINGHow to read the text: tone, emotion, pace or volume. Not spoken and not billed.
    speedFLOAT1.000.5–2Speaking rate; 1 is the voice's normal pace.
    pitchINT0-12–12Pitch shift in semitones; 0 keeps the voice's own pitch.
    volumeFLOAT1.000.5–2Loudness multiplier; 1 is the normal level.
    languageCOMBOmodel defaultForces the reading language. Leave empty to detect it from the text.
    output_formatCOMBOmp3File format of the result; opus is an Ogg Opus file.
    sample_rateCOMBOmodel defaultSample rate in Hz. The model uses 24000 when omitted.

    Outputs (2)

    NameTypeDescription
    audioAUDIOSeveral results come back as a batch; Save Audio writes one file each.
    task idSTRINGThe PopNow task id, for the API console logs or support.