Generates MOSS Voice from Text
Describe a voice, get the voice — no reference audio required
- moss_vg_model
- audio
Every other voice-cloning workflow starts with the same problem: you need a clip of the voice you want. MossVoiceGeneratorGenerate skips that step entirely. You type "a warm, deep male voice, slightly tired" into one field, type what you want it to say into another, and out comes a sample of that voice speaking. No reference audio, no hunting through your hard drive for a clean recording. For people who make narrated videos or want distinct characters in a podcast, this is the hook of the MOSS-VoiceGenerator model.
How it works
Under the hood it's the same MOSS trick as the rest of the family: text and an instruction get encoded alongside audio tokens from the shared MOSS-Audio-Tokenizer codec, the model generates tokens, and the codec decodes them into a waveform. The instruction field is doing the heavy lifting - it's the "prompt" for the timbre, and the model has clearly been trained to honor it across gender, age, tone, and emotion. The default "A clear, neutral voice for reading." is a fine starting point; from there, describe the voice the way you'd brief a voice actor.
Inputs that matter
text- the content to be spoken. Keep it short for a first test; this is meant to generate a voice sample, not a whole audiobook.instruction- the voice description. Try"A warm, deep male voice"or"年轻女性,温柔的声音"- it handles non-English descriptions fine.audio_temperature- default 1.0 (0.1–2.0). Higher gives more variation and drama per run; if the same instruction sounds different every time, drop it.audio_top_p/audio_top_k/audio_repetition_penalty- standard sampling dials; the defaults (0.8 / 50 / 1.0) are sane, leave them alone until you're chasing a specific artifact.max_new_tokens- how long the sample can be in audio tokens.
The output is one ComfyUI AUDIO tensor. Wire it to SaveAudio to audition, or - and here's the real move - feed it into MossTTSDGenerate's reference_audio_s1 input with mode set to voice_clone. The pack's own example workflow does exactly this: design a synthetic speaker, then use that designed voice as the reference for a full multi-speaker dialogue. You get custom characters without ever recording anything.
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
The VoiceGenerator model (~3GB) downloads automatically to ComfyUI/models/moss_ttsd/ on first run. You'll also need the shared audio codec (~1GB) - the loader node resolves it automatically if you don't connect one, but connecting moss_codec from MossAudioCodecLoadModel avoids a redundant download.
Where people get burned: MOSS is a brand-new family and the ComfyUI wrapper is barely a year old, so the community signal is thin - you won't find many shared voice-design workflows to crib from yet. The practical fix is to lean on the generation dials. If your "designed" voice sounds unstable or robotic, drop the temperature toward 0.7 and re-run; the model is more consistent when you don't push its sampling.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| moss_vg_model | MOSS_VOICE_GENERATOR_MODEL | Loaded MOSS-VoiceGenerator model. | |
| text | STRING | Hello, this is a test. | The content to be spoken. |
| instruction | STRING | A clear, neutral voice for reading. | Describe the desired voice characteristics (gender, age, tone, emotion). |
| audio_temperature | FLOAT | 1.00.1–2 | Higher = more variation/drama. |
| audio_top_p | FLOAT | 0.800.1–1 | Nucleus sampling probability. |
| audio_top_k | INT | 501–200 | Top-K sampling. |
| audio_repetition_penalty | FLOAT | 1.01–2 | Penalty for repeating audio tokens. |
| max_new_tokens | INT | 2000100–10000 | Max audio length in tokens. |
| text_normalize | BOOLEAN | true | Normalize text input. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |