ComfyUI Node

TTS WebUI Piper TTS

The no-nonsense, runs-on-anything TTS

By rsxdalv·Created 10 months ago·Updated 10 months ago· 5
TTS WebUI Piper TTS
    • audio
    • wav_path
    • metadata_json
    textHello
    api_basehttp://127.0.0.1:7778
    api_key
    voice_name
    speed1.00
    noise_scale0.67
    noise_w0.80
    sentence_silence0.20
    timeout_sec120
    channels_firsttrue
    also_save_wavfalse
    save_prefixtts
    return_metadatatrue

    Piper is the TTS you install when you don't want to think about TTS. It comes out of the Rhasspy / open-source voice-assistant ecosystem, it's a small VITS-based model that runs happily on CPU, and it's been the go-to "fast, boring, reliable" speech engine for years. This node is the pack's thin client for it. There are no cloning tricks and no fancy style transfer - you pick a voice, type your text, and get clean, consistent speech back almost instantly.

    How it works

    Standard pack shape: the node POSTs an OpenAI-style body to http://127.0.0.1:7778/v1/audio/speech with model: "piper", and the TTS WebUI server does the synthesis. Piper's voices are fixed per model file - each one is a specific trained voice (a lot of them community-built), and the server has whichever ones you've installed. No reference audio, no description conditioning. That's the whole deal.

    The inputs that matter

    • voice_name - which Piper voice to use. This is the important one: Piper has no "random" fallback that makes sense here, so the voice has to exist on the server. Common examples are things like en_US-amy-medium or en_GB-alan-medium.
    • speed - 0.25 to 4.0, default 1.0.
    • noise_scale (default 0.667) - how much randomness/expressiveness the synthesis gets. Lower = flatter and more robotic, higher = more natural but noisier.
    • noise_w (default 0.8) - a second noise term that affects prosody and duration variation. Between this and noise_scale, you've got the two classic VITS knobs.
    • sentence_silence (default 0.2) - seconds of silence inserted between sentences. The setting people actually tweak when the pacing feels rushed.

    Outputs

    audio (AUDIO) into a preview/save node, wav_path (STRING) when also_save_wav is on, and metadata_json (STRING) with the request details.

    Installing it

    ComfyUI Manager → search "TTS WebUI API nodes for ComfyUI", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/rsxdalv/ComfyUI-TTS-Webui
    

    then restart. The pack only needs requests, numpy, torch. Piper voice files are small and live on the TTS WebUI server - if voice_name comes back with an error, that's the thing to install server-side.

    When it breaks

    • Voice not found: the most common failure by far. Piper voices are model files, not just names - the exact voice_name has to match one installed on the server. Check what's available and use that string exactly.
    • Connection refused: server isn't on 127.0.0.1:7778, or api_base points at the wrong host.
    • Output sounds too robotic: drop noise_scale a bit and raise sentence_silence - Piper's strength is consistency, not emotion, and pushing the noise knobs too far just makes it shaky.

    The honest take: Piper is the least impressive-sounding node in this pack and the most dependable. For UI chimes, accessibility narration, or any "it just needs to read text aloud" use case, it's the one you set and forget. For anything that needs to sound human, reach for Kokoro or Chatterbox instead.

    CategoryAudio/TTS

    Inputs (13)

    NameTypeDefaultDescription
    textSTRINGHello
    api_baseSTRINGhttp://127.0.0.1:7778
    api_keyoptSTRING
    voice_nameoptSTRING
    speedoptFLOAT1.000.25–4
    noise_scaleoptFLOAT0.670–2
    noise_woptFLOAT0.800–2
    sentence_silenceoptFLOAT0.200–2
    timeout_secoptINT1201–600
    channels_firstoptBOOLEANtrue
    also_save_wavoptBOOLEANfalse
    save_prefixoptSTRINGtts
    return_metadataoptBOOLEANtrue

    Outputs (3)

    NameTypeDescription
    audioAUDIO
    wav_pathSTRING
    metadata_jsonSTRING