MOSS-TTS Voice Clone
MOSS-TTS Voice Clone
- mosstts_model
- reference_audio
- audio
MOSS-TTS Voice Clone is the node that made people care about this pack. Drop in a few seconds of someone's voice, type a sentence, and it comes back at 48 kHz stereo in that voice - no fine-tuning, no transcript of the reference, no API key, nothing phoned home. In the 2026 local-TTS conversation this model keeps getting name-dropped as the one that nails expression rather than just timbre, and this is the node that puts that behind a single ComfyUI AUDIO input.
"Zero-shot" means the voice isn't stored or trained on - it's conditioned on at generation time. You change the reference clip and the same workflow speaks in a different voice.
How it works
The reference audio gets encoded into acoustic codes by MOSS-Audio-Tokenizer-v2, the same codec used to decode the output. Those codes ride along as context when the model generates new acoustic codes for your text, and the tokenizer decodes the result back into a 48 kHz stereo waveform. Because the reference and the target share the same tokenizer, the model can copy prosody and delivery, not just pitch. That's why it needs no transcript - it never transcribes the reference, it just uses it.
The inputs that matter
- mosstts_model - the bundle from MOSS-TTS Load Model. Nothing to set.
- reference_audio - ComfyUI
AUDIO, so load a clip with ComfyUI's Load Audio (or any audio node feeding the graph). Five to ten seconds of clean, single-speaker audio is the sweet spot; the reference is the quality bar. - text - what you want said. Inline
[pause 0.5s], Pinyin, and IPA all pass straight through to MOSS-TTS. - language - set it. v1.5 performs noticeably better when you tell it the language (31 choices;
autojust omits the field). Match the reference's language. - instruction - free-form delivery hint ("whisper, slightly amused" - that kind of thing). This is where the expression the model is known for actually comes from.
- duration_tokens - optional;
0omits it. MOSS runs at about 12.5 acoustic frames per second, so a number here targets a length. - max_new_tokens - generation budget. 4096 default is roughly 5.5 minutes of audio; raise it for long-form.
- Sampling:
do_sampleon, with the model-card defaults -audio_temperature1.7,audio_top_p0.8,audio_top_k25 - doing the real work. The text-side knobs (text_temperature,text_top_p,text_top_k) matter less.seed0 is unseeded; set a positive value when you want the same settings to reproduce.
Output: audio - a ComfyUI AUDIO, ready for Save Audio or whatever you'd feed a generated clip into.
Installing
Pack-wide, so it's the same as the other nodes: ComfyUI Manager → search MOSS-TTS, or
cd ComfyUI/custom_nodes
git clone https://github.com/Saganaki22/Moss_TTS-ComfyUI.git
../venv/bin/python Moss_TTS-ComfyUI/install.py
then restart. You need the Load Model node first anyway - Voice Clone only works downstream of it, so the loader's model download is a prerequisite, not an extra step here.
Common issues
Weak clones almost always trace back to the reference, not the settings: short clips, background noise, or two speakers in the frame and the clone gets mushy. Try a cleaner, longer reference before you start cranking sampling knobs. If the output sounds garbled rather than just different, the language field is the usual culprit - leave it on auto and the model guesses, and guessing costs you.
One honest caveat that's in the pack's own README: only clone voices you own or have explicit permission to use. The tool has no opinion about that; it'll do exactly what you ask. Keep it for voices you're allowed to have.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| mosstts_model | MOSSTTS_MODEL | Loaded MOSS-TTS model bundle. | |
| reference_audio | AUDIO | Reference speaker audio. The node encodes it with MOSS-Audio-Tokenizer-v2 before generation. | |
| text | STRING | This line will be spoken in the reference voice. | Text to synthesize. Inline [pause 0.5s], Pinyin, and IPA are passed through to MOSS-TTS. |
| language | COMBO | auto | Language hint. v1.5 performs best when the language is specified. |
| instruction | STRING | Optional free-form style or delivery instruction. | |
| duration_tokens | INT | 00–45000 | Optional duration target in audio tokens. 0 omits the field. MOSS runs around 12.5 tokens per second. |
| quality | STRING | Optional quality hint field exposed by the MOSS user-message schema. | |
| sound_event | STRING | Optional sound-event hint field exposed by the MOSS user-message schema. | |
| ambient_sound | STRING | Optional ambient-sound hint field exposed by the MOSS user-message schema. | |
| max_new_tokens | INT | 40961–45000 | Generation budget in audio frames. At 12.5 frames per second, 4096 is roughly 5.5 minutes. |
| do_sample | BOOLEAN | true | Use stochastic sampling. Disable for deterministic greedy decoding. |
| text_temperature | FLOAT | 1.000–2 | Sampling temperature for assistant text/audio-control tokens. |
| text_top_p | FLOAT | 1.000–1 | Nucleus sampling for assistant text/audio-control tokens. |
| text_top_k | INT | 500–4096 | Top-K sampling for assistant text/audio-control tokens. |
| audio_temperature | FLOAT | 1.700–3 | Recommended v1.5 audio sampling temperature. |
| audio_top_p | FLOAT | 0.800–1 | Recommended v1.5 nucleus sampling cutoff for audio codebooks. |
| audio_top_k | INT | 250–1024 | Recommended v1.5 Top-K cutoff for audio codebooks. |
| audio_repetition_penalty | FLOAT | 1.001–2 | Penalty for repeated acoustic code patterns. |
| seed | INT | 00–9223372036854776000 | 0 leaves sampling unseeded. Positive values make identical settings repeatable. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |