ComfyUI Node

Runware Speech

The Builder That Feeds Every TTS Model

By Runware·Created 2 years ago·Updated about a month ago· 140
Runware Speech
    • speech
    text
    voiceZephyr
    volume0
    speed0
    languageen-US
    pitch0
    advanced_json

    Every text-to-speech node in this pack works the same way: a RunwareBuild_speech node holds the "what to say and in whose voice," and the actual TTS model - Fish Audio S2.1 Pro, Runware Sync 3, PixVerse LipSync, the HeyGen avatar nodes, Seed Audio 1.0 - renders it. The builder is the part you actually write, which is why it gets its own node instead of burying a dozen widgets in every model. It outputs a speech object; the model node turns that into an AUDIO result (or a talking avatar, in the case of the lip-sync and avatar models).

    How it works

    RunwareBuild_speech packages your text, a voice, and some performance tweaks into a RUNWARE_SPEECH object. The model node you wire it into is what makes it say anything - this builder is pure payload, computed nowhere and stored nowhere until the request goes up to Runware's cloud. It's a single (non-stackable) builder, so one speech object per model node; if you want a dialogue, use speaker tags in the text rather than chaining builders.

    The inputs that matter

    • text - what gets spoken, and it's smarter than a plain string. The tooltip documents speaker tags ([Sam] Hello [Bob] Hi there) for dialogue mode, and provider markup like [laughs] and [short pause] for performance. That's the difference between a robot reading and something that feels directed.
    • voice - the voice to use. The schema lists six current voices (una, leo, eve, ara, sal, rex). One honest caveat: Runware rotates its TTS backends, and the voice roster in the live pack can differ from what a snapshot shows - so audition voices by ear, not by name.
    • language - optional language code ((default) plus the usual suspects: en, ar-EG, bn, zh, fr, de, hi, id, it, and more). Set it when the text isn't English or the default auto-detect gets it wrong.
    • speed (0.5–1.5), volume (0–1), pitch (-50 to +50) - the performance knobs. Defaults are neutral, and they're exactly as useful as you'd expect: pitch up for a brighter read, slow down for gravitas.

    There's also an advanced_json escape hatch that merges extra JSON into this speech object (the tooltip mentions voices - handy if you need to pass voice params the widgets don't expose). Leave it empty unless you know the API shape.

    Wiring it in

    Output is speech, which plugs into any model exposing that socket - most usefully Fish Audio S2.1 Pro (which requires it), Sync 3, PixVerse LipSync, and the avatar models. For a voice-cloned character, pair it with RunwareBuild_referenceVoices: speech carries the line, referenceVoices carries whose voice.

    Install and setup

    The standard Runware install - ComfyUI Manager (search "Runware"), install, restart; or git clone into custom_nodes plus pip install -r ComfyUI-Runware/requirements.txt. Dependencies are light (runware-sdk, pillow, soundfile); nothing heavy is downloaded because the TTS model runs on Runware's servers. You'll need an API key - Settings → Runware API key, RUNWARE_API_KEY, or runware auth login - and a funded account. Worth knowing before you commit: Runware's minimum top-up is roughly $20 with a card on file, and the community's been vocal that the pricing isn't the friction - the funding step is.

    Troubleshooting

    • Audio comes back as a path instead of an AUDIO socket - the pack degrades to a saved file when it can't decode the audio; install soundfile (it's in requirements) and restart.
    • Voice sounds wrong - check the language field and the markup. A stray [laughs] in a language that doesn't support it can derail the read.
    • Empty output - the advanced_json route will happily send a broken body if you typo it; empty it and retry before blaming the model.

    It's the node you'll actually type into every time you build a TTS workflow - small, but it's the entire "what to say" side of the pipeline.

    CategoryRunware/Params

    Inputs (7)

    NameTypeDefaultDescription
    textSTRINGText to convert to speech. For dialogue mode, use speaker tags such as [Sam] Hello [Bob] Hi there. Provider markup tags like [laughs] and [short pause] are also supported.
    voiceCOMBOZephyrVoice identifier to use for speech generation.
    volumeoptINT0-50–100Volume level of the generated speech. `100` produces 2.0x volume, `0` leaves volume unchanged, and `-50` produces 0.5x volume.
    speedoptINT0-50–100Playback speed of the generated speech. `100` produces 2.0x speed, `0` is the normal rate, and `-50` produces 0.5x speed.
    languageoptCOMBOen-USLanguage code for speech generation.
    pitchoptINT0-12–12Pitch adjustment for the voice.
    advanced_jsonoptSTRINGExtra JSON merged into this speech: voices

    Outputs (1)

    NameTypeDescription
    speechRUNWARE_SPEECH