Nodes/MOSS-TTS 1.5/MOSS-TTS Voice Clone
ComfyUI Node

MOSS-TTS Voice Clone

Clone a voice from one clip — no transcript, no fine-tuning

By eehrich·Created 2 months ago·Updated 12 days ago· 1
MOSS-TTS Voice Clone
  • moss_model
  • reference_audio
  • audio
  • tokens_generated
textHello, this is a test.
languageEnglish
instruction
audio_temperature1.70
audio_top_p0.80
audio_top_k25
target_tokens0
max_new_tokens4096
seed42
target_overshoot_frames50
audio_repetition_penalty1.00
text_temperature1.00
text_top_p1.00
text_top_k50

MOSSVoiceClone is the zero-shot cloning node of the MOSS-TTS 1.5 pack - and unlike some cloning setups, it doesn't want a transcript of the reference audio, doesn't need fine-tuning, and won't make you record a calibration sentence first. You give it a reference clip, some text, and a language, and you get that text back spoken in the reference voice. This is the part of the pack people actually reach for: it turns one clean clip of a voice into unlimited lines, across all 31 languages MOSS speaks.

The one thing to unlearn

MOSS has no reference-text channel at all. A lot of cloning pipelines ask for a transcript of the reference so the model can align the voice to words; this one doesn't use one. The instruction input exists, but it's a free-form style hint ("warm and slow", "whispered"), not a description of the reference clip. This was even a real bug in an early pack version - build_user_message() got an unexpected keyword argument 'reference_text' - fixed in 0.1.1. So: bring audio, bring text, don't bring a transcript.

How it works under the hood

The node takes the ComfyUI AUDIO from your reference (any source - LoadAudio, another node's output, even the output of this pack's own Speak node), writes it to a temp WAV, and the processor encodes it into audio codes that sit in the transformer's KV cache while the new frames generate. That's also the VRAM story: reference audio costs roughly 1 GB per ~20 s of clip on top of the ~12 GB model baseline. A 2-minute reference can add several GB before generation even starts. MOSS v1.5 handles long references reliably - but you pay for them, so keep clips in the 5–15 s sweet spot.

Inputs that matter

  • moss_model - from the loader.
  • reference_audio - the voice. Any AUDIO source works.
  • text - the lines to speak in that voice.
  • language - one of 31. Setting it explicitly improves prosody and pronunciation versus letting the model guess.
  • target_tokens - duration hint; 0 = model decides. Pair it with the pack's Estimate Tokens node for a target runtime instead of guessing.
  • seed - reproducible takes.

Outputs: audio (stereo at the model's native rate - 48 kHz on the default 1.7B) ready for SaveAudio / PreviewAudio, and tokens_generated (frames, ÷12.5 = seconds) so you can hand the exact prefix length to a Voice Continue downstream.

Install & troubleshooting

Standard pack install - Manager, search "MOSS-TTS 1.5", or:

cd ComfyUI/custom_nodes
git clone https://github.com/eehrich/ComfyUI-MOSS-TTS-1.5.git MOSS-TTS-ComfyUI

Restart, and run the Load Model node first (weights download on that first run). Realistic problems:

  • Weak clone / wrong accent - usually the reference, not the model. Too short, too quiet, or noisy clips give muddy results; 5–15 s of clean, level, single-speaker audio is the fix.
  • Droning or looping syllables - bump audio_repetition_penalty to 1.05–1.15.
  • Runaway length - max_new_tokens (default 4096 ≈ 5 min) is the fuse. When target_tokens is set, target_overshoot_frames (default 50 frames = 4 s) caps how far past it MOSS can drift - a real guard against the occasional hang on pathologically short text.

The pack's example workflow does the classic pattern: Speak once to invent a voice, then clone it into a multi-segment narration. That's the whole superpower - one line of audio, unlimited dialogue.

CategoryMOSS TTS 1.5

Inputs (16)

NameTypeDefaultDescription
moss_modelMOSS_MODELModel bundle produced by MOSS-TTS Load Model.
reference_audioAUDIOVoice reference. Any ComfyUI AUDIO source works (LoadAudio, another node's output, etc.). Short 5-15 s clips are usually best; MOSS v1.5 also handles long references reliably.
textSTRINGHello, this is a test.Text to synthesize in the cloned voice. For silence gaps use punctuation (., --, ...) or chain a second Voice Clone / Voice Continue run with an empty-audio spacer between them.
languageCOMBOEnglishExplicit language hint. Setting this consistently improves prosody and pronunciation vs. relying on language detection from the text.
instructionSTRINGFree-form style hint passed to MOSS's built-in 'instruction' channel, e.g. 'warm and slow', 'excited', 'whispered'. This is NOT a transcript of the reference audio -- MOSS has no such input.
audio_temperatureFLOAT1.700.1–3Sampling temperature. MOSS default is 1.7. Lower -> more deterministic and safer, higher -> more expressive but noisier.
audio_top_pFLOAT0.800–1Nucleus (top-p) sampling cutoff.
audio_top_kINT251–200Top-k sampling cutoff.
target_tokensINT00–65536Optional target duration hint, in audio frames. 0 = disabled (model decides via EOS). At 12.5 frames/s: 375 tokens ~30 s, 750 ~60 s, 3750 ~5 min. Chain a MOSS-TTS Estimate Tokens node to compute this from the text.
max_new_tokensINT4096256–65536Safety cap on generated audio frames. MOSS runs at 12.5 frames/s, so the default 4096 caps output at ~5 min. The model stops on its own EOS token, so real output is usually much shorter.
seedINT420–4294967295Random seed. Same seed + same inputs -> identical output.
target_overshoot_framesINT500–65536Runaway safety cap: when target_tokens > 0, MOSS may only exceed it by this many frames. Effective max_new_tokens = min(max_new_tokens, target_tokens + target_overshoot_frames). Default 50 = 4 s slack at 12.5 fps. Prevents the 5.5-min hang MOSS occasionally does with pathologically short text. Ignored when target_tokens = 0 (auto-EOS mode).
audio_repetition_penaltyoptFLOAT1.001–2Penalty on recently generated audio tokens (1.0 = off). Mild values (1.05-1.15) suppress the classic autoregressive TTS failure modes -- droning, tempo freeze, smeared or looping syllables -- while leaving normal prosody untouched (it only bites on pathological repeats). Values above ~1.3 can distort legitimately repeated sounds ('nein, nein, nein').
text_temperatureoptFLOAT1.000.1–3Temperature for the TEXT stream (alignment/pacing), NOT the acoustics. MOSS default 1.0. Lower = steadier pacing/alignment; does not flatten the voice (that's audio_temperature).
text_top_poptFLOAT1.000–1Nucleus (top-p) cutoff for the TEXT stream. MOSS default 1.0 (off).
text_top_koptINT501–200Top-k cutoff for the TEXT stream. MOSS default 50.

Outputs (2)

NameTypeDescription
audioAUDIOGenerated audio at 48 kHz stereo, ready for SaveAudio / PreviewAudio.
tokens_generatedINTNumber of audio frames MOSS actually generated (frames, not samples). At 12.5 fps this equals duration_seconds * 12.5.