MegaTTS Voice Maker
Preps your reference audio — with one big asterisk
- audio_in
- audio_out
- voice_path
The pack's helper for the annoying part
Before MegaTTS3 can clone a voice, it wants a clean 24 kHz reference clip - ideally with its extracted .npy latent sitting beside it. The Voice Maker is this pack's utility for that job. Feed it any audio, and it resamples to 24 kHz, trims silence, normalizes volume, clips to a max duration, and saves the result as a named .wav in your voices folder. Think of it as the "make my reference audio behave" node, not a full cloning tool.
Inputs and outputs that matter
- audio_in (AUDIO) - wire in a Load Audio node or any AUDIO output.
- voice_name - the base filename; output lands as
voice_name.wav(and ideallyvoice_name.npy). - path - where to save; leave empty for the default Voices folder.
- trim_silence and normalize_volume - both on by default, and you'll rarely turn them off.
- max_duration - caps the clip (default 10 s, up to 90 s). Keeps a long recording from becoming a bloated reference.
It returns two outputs: audio_out passes your audio straight back through (handy for chaining), and the STRING output - despite being labeled voice_path - is really a status message telling you what it saved and whether the .npy got created. Read that message; it's the node talking to you.
The asterisk: it usually can't make the .npy
Here's the honest version, straight from the source. The node tries to extract the .npy feature file, but ByteDance hasn't released the WaveVAE encoder, and the model files this pack downloads are decoder-only. So in practice the Voice Maker saves the processed .wav, then reports that the encoder is unavailable and points you to a pre-extracted .npy or to ByteDance's GitHub to request one. The encoder path exists in the code - it just doesn't fire with the current download. The README is a bit optimistic about this; treat Voice Maker as a solid reference-audio prep tool, not a latent generator. Pairing it with an officially extracted .npy is also what the README quietly recommends for best quality.
Two gotchas to know
On case-sensitive systems (Linux, macOS), Voice Maker writes to Voices/ (capital V) by default while the TTS nodes scan voices/ (lowercase). If your freshly made voice doesn't show up in the reference dropdown, point the path field at the lowercase folder or move the files yourself.
It also initializes the full MegaTTS3 inferencer just to check the encoder and resample, so first use triggers the same multi-gigabyte model download into ComfyUI/models/TTS/MegaTTS3/ as the TTS nodes. Install is the usual one for the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/1038lab/ComfyUI-MegaTTS
cd ComfyUI-MegaTTS
pip install -r requirements.txt
Then restart ComfyUI. For quick tests of your own voice this is the fastest path to a clean, TTS-ready reference - just don't expect it to conjure the latent file that the whole pipeline depends on.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_in | AUDIO | Input audio to be converted. | |
| voice_name | STRING | my_voice | Name of the voice to be used for conversion. |
| path | STRING | — | |
| trim_silence | BOOLEAN | true | Whether to trim silence from the audio. |
| normalize_volume | BOOLEAN | true | Whether to normalize the volume of the audio. |
| max_duration | FLOAT | 101–90 | Maximum duration of the audio in seconds. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio_out | AUDIO | — |
| voice_path | STRING | — |