ComfyUI Node

TTS WebUI MMS

One TTS node, 1100+ languages

By rsxdalv·Created 12 months ago·Updated 11 months ago· 5
TTS WebUI MMS
    • audio
    • wav_path
    • metadata_json
    ◄textHello►
    ◄api_basehttp://127.0.0.1:7778►
    ◄api_key►
    ◄languageeng►
    ◄speaking_rate1.00►
    ◄noise_scale0.67►
    ◄noise_scale_duration0.80►
    ◄timeout_sec120►
    ◄channels_firsttrue►
    ◄also_save_wavfalse►
    ◄save_prefixtts►
    ◄return_metadatatrue►

    Every other node in this pack is about which model you use. MMS is the node about which language you use. Meta's Massively Multilingual Speech project trained VITS models for over 1,100 languages, and this node is the thin client for driving them through the TTS WebUI server. If you need TTS in a language that's barely supported anywhere else, this is probably the node in the pack that actually does it.

    How it works

    Same pack plumbing: the node POSTs an OpenAI-style body to http://127.0.0.1:7778/v1/audio/speech with model: "mms", and the server synthesizes. The server picks the right language model based on the language code you give it, so this is also the node where a wrong string produces the most confusing failures - there are no random voices to fall back on.

    The inputs that matter

    • language - the language code, default eng. This is the input that makes or breaks the node. It uses the ISO-style codes MMS knows (eng, spa, fra, deu, and a very long tail of rarer ones). Use exactly what the server expects - a name like "English" won't match the code the model lookup needs.
    • speaking_rate - 0.25 to 4.0, default 1.0.
    • noise_scale (default 0.667) and noise_scale_duration (default 0.8) - the two classic VITS synthesis knobs. The first controls randomness in the speech itself; the second controls variation in phoneme duration. If the output sounds dead, nudge these up a little; if it sounds warbly, nudge them down.

    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. MMS language models are small and live on the TTS WebUI server - the first request may pull one down.

    When it breaks

    • "Language not found"-style errors: your language string doesn't match a code the server recognizes. Check the server's language list; it's codes, not display names.
    • Connection refused: server not running on 127.0.0.1:7778, or api_base points at the wrong host.
    • First call slow: model download server-side. Raise timeout_sec (max 600).

    The honest framing: MMS is a niche-slayer, not a quality champion. Its voices are functional VITS output - think Piper-grade - and the English default is nothing special when Kokoro is sitting right there. But for a language with almost no open TTS options, "functional and in 1,100+ languages" is a superpower. That's what you're buying this node for.

    CategoryAudio/TTS

    Inputs (12)

    NameTypeDefaultDescription
    textSTRINGHello—
    api_baseSTRINGhttp://127.0.0.1:7778—
    api_keyoptSTRING—
    languageoptSTRINGeng—
    speaking_rateoptFLOAT1.000.25–4—
    noise_scaleoptFLOAT0.670–2—
    noise_scale_durationoptFLOAT0.800–2—
    timeout_secoptINT1201–600—
    channels_firstoptBOOLEANtrue—
    also_save_wavoptBOOLEANfalse—
    save_prefixoptSTRINGtts—
    return_metadataoptBOOLEANtrue—

    Outputs (3)

    NameTypeDescription
    audioAUDIO—
    wav_pathSTRING—
    metadata_jsonSTRING—