TTS WebUI MMS
One TTS node, 1100+ languages
- audio
- wav_path
- metadata_json
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
languagestring 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, orapi_basepoints 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.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Hello | — |
| api_base | STRING | http://127.0.0.1:7778 | — |
| api_keyopt | STRING | — | |
| languageopt | STRING | eng | — |
| speaking_rateopt | FLOAT | 1.000.25–4 | — |
| noise_scaleopt | FLOAT | 0.670–2 | — |
| noise_scale_durationopt | FLOAT | 0.800–2 | — |
| timeout_secopt | INT | 1201–600 | — |
| channels_firstopt | BOOLEAN | true | — |
| also_save_wavopt | BOOLEAN | false | — |
| save_prefixopt | STRING | tts | — |
| return_metadataopt | BOOLEAN | true | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| wav_path | STRING | — |
| metadata_json | STRING | — |