Nodes/ComfyUI Kaola MOSS-TTS/Run MOSS-TTSD Generation
ComfyUI Node

Run MOSS-TTSD Generation

Generating full conversations, not just speech

By kana112233·Created 6 months ago·Updated 6 months ago· 3
Run MOSS-TTSD Generation
  • moss_model
  • moss_codec
  • reference_audio_s1
  • reference_audio_s2
  • reference_audio_s3
  • reference_audio_s4
  • reference_audio_s5
  • audio
text[S1] Hello world.
modevoice_clone
audio_temperature1.1
audio_top_p0.90
audio_top_k50
audio_repetition_penalty1.1
text_temperature1.1
max_new_tokens2000
text_normalizetrue
sample_rate_normalizetrue
reference_text_s1
reference_text_s2
reference_text_s3
reference_text_s4
reference_text_s5

This is the node people actually search this pack for. While most ComfyUI TTS setups give you one flat voice reading a script, MossTTSDGenerate runs the MOSS-TTSD dialogue model (from OpenMOSS, the lab behind the MOSS family) and can spit out a full multi-party conversation - up to five speakers bickering, laughing, and taking turns, all in a single pass. It's the difference between "text-to-speech" and "script-to-conversation," and for podcast-style audio it's the whole reason to install this pack.

How it works

MOSS-TTSD is a generative audio model, not a vocoder pipeline. Your text (and any reference audio) gets tokenized into audio tokens by the shared MOSS-Audio-Tokenizer codec, the model autoregressively samples those tokens conditioned on your prompt, and the codec decodes the tokens back into a waveform. All of that happens inside this node, which is why you always feed it two model objects: a moss_model from MossTTSDLoadModel and a moss_codec from MossAudioCodecLoadModel.

You switch speakers inline with tags, right in the text field:

[S1] Hey, did you watch the game last night? [S2] Are you kidding, I recorded it. [S1] And the final call, man...

The inputs that actually matter

  • mode - four modes, and this is where beginners burn their first hour:
    • generation - pure text-to-speech with an internal voice, no reference needed.
    • voice_clone - clones the timbre of your reference audio. This is the default for a reason.
    • continuation - treats your reference audio + text as the prompt and keeps talking after it. Good for emotion and context.
    • voice_clone_and_continuation - does both; best for mimicking one specific speaker.
  • audio_temperature - default 1.1, range 0.1–2.0. Higher sounds more dynamic and emotional; if you're getting warbly or unstable output, drop it toward 0.8.
  • max_new_tokens - cap on generation length (default 2000). This is what you raise for long scripts.
  • reference_audio_s1 through reference_audio_s5 (optional) - one reference clip per speaker, plus matching reference_text_s* fields. Give each of your five speakers a distinct clip and the model holds their identities across the conversation.

One gotcha baked into the code: if you pick voice_clone but forget to wire in any reference audio, the node silently falls back to plain generation instead of erroring. Same for the continuation modes - no reference text means it quietly downgrades to voice_clone. You get a warning in the console, but if your output voice sounds wrong, check that your references are actually connected.

Output and wiring

The single output is a ComfyUI AUDIO tensor, which you wire into the built-in SaveAudio node (or VHS if you're syncing to video). Nothing fancy downstream.

Install and the heavy lift

Install via ComfyUI Manager (search ComfyUI Kaola MOSS-TTS) or:

cd ComfyUI/custom_nodes
git clone https://github.com/kana112233/ComfyUI-kaola-moss-tts.git
cd ComfyUI-kaola-moss-tts
pip install -r requirements.txt

The model (~7GB) auto-downloads to ComfyUI/models/moss_ttsd/ on first run. Two things will bite you: the pack needs transformers>=5.0.0 (README explicitly warns, and that version pin collides with a lot of other audio packs), and a fresh Python 3.12 environment plus pip install flash-attn --no-build-isolation is the recommended path for GPU speed. If VRAM is tight, load the TTSD model with 4-bit or 8-bit quantization in its loader node.

Where people get burned: running this alongside a VoiceGenerator or TTS graph in one workflow, because two MOSS models in memory at once is a lot of VRAM. And be honest about expectations - MOSS-TTSD is new and barely discussed in the community yet (the Reddit TTS conversation is still Chatterbox and VibeVoice territory), so treat this as a frontier model with rough edges, not a boringly reliable one.

CategoryKaola/MOSS-TTSD

Inputs (22)

NameTypeDefaultDescription
moss_modelMOSS_TTSD_MODELLoaded MOSS-TTSD model.
moss_codecMOSS_AUDIO_CODECLoaded MOSS Audio Tokenizer/Codec.
textSTRING[S1] Hello world.Text to generate speech from. Use [S1]-[S5] tags for specific speakers.
modeCOMBOvoice_cloneGeneration mode. 'voice_clone' is recommended for reference audio.
audio_temperatureFLOAT1.10.1–2Audio sampling temperature. Higher = more random/emotional.
audio_top_pFLOAT0.900.1–1Nucleus sampling probability for audio.
audio_top_kINT501–200Top-K sampling for audio.
audio_repetition_penaltyFLOAT1.11–2Penalty for repeating audio tokens.
text_temperatureFLOAT1.10.1–2Temperature for text generation (if applicable).
max_new_tokensINT2000100–10000Maximum number of tokens to generate.
text_normalizeBOOLEANtrueNormalize text (clean punctuation, merge tags) before generation.
sample_rate_normalizeBOOLEANtrueResample all reference audios to the same sample rate.
reference_audio_s1optAUDIO
reference_text_s1optSTRING
reference_audio_s2optAUDIO
reference_text_s2optSTRING
reference_audio_s3optAUDIO
reference_text_s3optSTRING
reference_audio_s4optAUDIO
reference_text_s4optSTRING
reference_audio_s5optAUDIO
reference_text_s5optSTRING

Outputs (1)

NameTypeDescription
audioAUDIO