ComfyUI text to speech: TTS nodes and adding a voiceover
ComfyUI handles audio in a workflow, and text to speech usually comes from a custom node pack. That suits cloning and experiments, but the models can be large and compete with your image models for video memory.
This guide covers the node route and a simpler one: make the voice as a file and load it into the workflow.
TTS nodes inside ComfyUI
The best known pack is TTS Audio Suite. Install it through ComfyUI Manager, or clone it into ComfyUI/custom_nodes and follow its install steps. It puts many engines behind the same nodes, among them ChatterboxTTS, F5-TTS, Higgs Audio, MOSS-TTS and Echo-TTS, with voice conversion through RVC. Models can take several gigabytes, and licences differ per engine, so read them before commercial use.
When a ready voice is simpler
Node packs shine when you clone a voice or need an engine’s special controls. If you only need a finished voiceover, nothing has to run inside ComfyUI. The free SuperClonica engine works on an ordinary processor, so it leaves the graphics card to your image and video models. SuperClonica has no ComfyUI node of its own; the link between them is an audio file.
Make the audio file
Pick a voice from about 190 in the catalog, from narrators to game and film characters, and test a line of 30 to 100 characters free on its page. For a whole script, install the engine with python -m pip install superclonica-cpu and run: superclonica --text-file script.txt --voice F2 --lang en --output voice.wav. The first run downloads the model once, about 400 MB; after that it works offline.
Load it into the workflow
Put voice.wav into the ComfyUI/input folder and add a Load Audio node, which reads from that folder. Connect it to Preview Audio to listen. To add it to a video, connect Load Audio to the optional audio input of Create Video, together with your frames, and send the result to Save Video.
Keep voice and picture in time
Voice the script first, then generate the picture to its length: the file’s duration divided by the frame time gives the number of frames you need. For several scenes, voice each line as its own file. To change the pace, use --speed in the engine: a higher value is faster.