Nodes/MOSS-TTS/MOSS-TTS Generate Speech
ComfyUI Node

MOSS-TTS Generate Speech

Narration with a cloned voice — reference audio optional, but that's the fun part

By Saganaki22·Created 2 months ago·Updated 2 months ago· 30
MOSS-TTS Generate Speech
  • mosstts_model
  • audio
textHello! This is MOSS-TTS Local Transformer v1.5 running inside ComfyUI.
languageauto
instruction
duration_tokens0
quality
sound_event
ambient_sound
max_new_tokens4096
do_sampletrue
text_temperature1.00
text_top_p1.00
text_top_k50
audio_temperature1.70
audio_top_p0.80
audio_top_k25
audio_repetition_penalty1.00
seed0

If the dialogue node is the pack's party trick, MossTTSGenerate is the workhorse. It runs the MOSS-TTS foundation model for single-speaker narration and voiceover - the thing you reach for when you need a stable, high-fidelity voice reading a script, not a five-way conversation. Give it text and it narrates. Give it a short reference clip too, and it zero-shot clones that voice and narrates as that voice. No fine-tuning, no training, just a 10-second sample.

How it works

Same token-based machinery as the rest of the family: text is tokenized into the audio-token space by the shared MOSS-Audio-Tokenizer codec, the model generates tokens conditioned on your prompt, and the codec decodes them back into a waveform. The zero-shot cloning path is what makes it interesting. If you wire in a reference_audio, the node encodes it to audio codes and passes them to the model's message builder as a voice reference - which is how a fresh voice can sound like your voice without any training step.

Inputs that matter

  • text - what to narrate. The default "The quick brown fox jumps over the lazy dog." is there for a reason; test with it before trusting your long script.
  • reference_audio (optional) - the cloning clip. The code mixes it down to mono and resamples it to the model's sample rate automatically, so any reasonable recording works.
  • instruction (optional) - a style hint for the narration voice, if the model you loaded supports it. It's passed through to the model; leave it empty if you get nothing useful from it.
  • audio_temperature - default 1.0 (0.1–2.0). Narration wants consistency, so if the delivery sounds unstable or over-dramatic, ease it down toward 0.7.
  • max_new_tokens - length cap, default 2048; raise it for longer scripts.

The output is a ComfyUI AUDIO tensor → SaveAudio (or VHS if you're scoring a video).

Which model is behind this?

Whatever you loaded with MossTTSLoadModel - either the 8B foundation model (~7GB, the quality pick) or the 1.7B MOSS-TTS-Local-Transformer (the "runs on a small card" pick). The generate node doesn't care; it just works with the moss_tts_model you hand it.

Install

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

Remember the pack's two hard facts: transformers>=5.0.0 is required (a fresh Python 3.12 env is the README's recommended fix for conflicts), and models auto-download to ComfyUI/models/moss_ttsd/ on first run.

Where people get burned: a CUDA device-side assert crash, usually from fp16 instability - the node's own error handler tells you to switch the loader's precision to fp32, and it's right. And temper expectations: MOSS-TTS is new enough that the Reddit TTS crowd is still mostly talking about Chatterbox and VibeVoice, so you're an early adopter. Keep your reference clips clean and short, and the clones come out far more convincing than the model's unprompted default voice.

CategoryMOSS-TTS

Inputs (18)

NameTypeDefaultDescription
mosstts_modelMOSSTTS_MODELLoaded MOSS-TTS model bundle.
textSTRINGHello! This is MOSS-TTS Local Transformer v1.5 running inside ComfyUI.Text to synthesize. Inline [pause 0.5s], Pinyin, and IPA are passed through to MOSS-TTS.
languageCOMBOautoLanguage hint. v1.5 performs best when the language is specified.
instructionSTRINGOptional free-form style or delivery instruction.
duration_tokensINT00–45000Optional duration target in audio tokens. 0 omits the field. MOSS runs around 12.5 tokens per second.
qualitySTRINGOptional quality hint field exposed by the MOSS user-message schema.
sound_eventSTRINGOptional sound-event hint field exposed by the MOSS user-message schema.
ambient_soundSTRINGOptional ambient-sound hint field exposed by the MOSS user-message schema.
max_new_tokensINT40961–45000Generation budget in audio frames. At 12.5 frames per second, 4096 is roughly 5.5 minutes.
do_sampleBOOLEANtrueUse stochastic sampling. Disable for deterministic greedy decoding.
text_temperatureFLOAT1.000–2Sampling temperature for assistant text/audio-control tokens.
text_top_pFLOAT1.000–1Nucleus sampling for assistant text/audio-control tokens.
text_top_kINT500–4096Top-K sampling for assistant text/audio-control tokens.
audio_temperatureFLOAT1.700–3Recommended v1.5 audio sampling temperature.
audio_top_pFLOAT0.800–1Recommended v1.5 nucleus sampling cutoff for audio codebooks.
audio_top_kINT250–1024Recommended v1.5 Top-K cutoff for audio codebooks.
audio_repetition_penaltyFLOAT1.001–2Penalty for repeated acoustic code patterns.
seedINT00–92233720368547760000 leaves sampling unseeded. Positive values make identical settings repeatable.

Outputs (1)

NameTypeDescription
audioAUDIO