FunCineForge_SM_Model
The 13GB loader at the front of a local movie-dubbing pipeline
- model
This is where every FunCineForge workflow starts, and it's the least glamorous node in the pack: it loads roughly 13GB of weights before you've generated a single second of audio. But it's the gate. Nothing else in this chain runs until this node has done its thing, so it pays to know what it's actually assembling.
What you're loading. FunCineForge is a zero-shot movie-dubbing model from Alibaba's FunAudioLLM speech team - the same people behind CosyVoice and FunASR. It re-voices an existing video with new lines while keeping the lip movement and, optionally, a cloned timbre. The model isn't one big checkpoint; it's three models bolted together, and this node loads all three:
- the LLM - a Qwen2-0.5B-CosyVoice-BlankEN backbone that turns your text plus acting directions into speech tokens;
- the flow - a flow-matching acoustic model that shapes those tokens into a speech representation;
- the voc - a vocoder that renders that representation into actual audio.
If the architecture feels familiar, that's because it is: this is CosyVoice's lineage scaled up for cinematic scenes.
The inputs that matter. flow, llm and voc are dropdowns auto-populated from .pt files in ComfyUI/models/funcineforge, filtered by keyword in the filename. No files in that folder, no dropdown entries - an empty combo is the first thing to investigate. dtype is precision: bf16, fp16 or fp32. bf16 is the sane default on an RTX 30/40-series card; fp32 is only worth it if you're chasing exactness at the cost of VRAM. The output is a model that only the FunCineForge_SM_KSampler knows what to do with - don't expect to plug it into anything else.
Install. The standard custom-node route:
cd ComfyUI/custom_nodes
git clone https://github.com/smthemex/ComfyUI_FunCineForge
pip install -r requirements.txt
Then restart ComfyUI. The models are the real project. They go in ComfyUI/models/funcineforge with a flat layout - each checkpoint is a directory holding config.yaml and mp_rank_00_model_states.pt directly, no extra nesting. You can pull them from the FunAudioLLM/Fun-CineForge Hugging Face repo, but the README's path of least resistance is the author's cloud-drive zip, which also bundles the supporting files this node expects by fixed name: the Qwen2-0.5B-CosyVoice-BlankEN tokenizer dir, plus face_recog_ir101.onnx and camplus.onnx.
Where people get burned:
- The numpy trap. Installing
pyannote.audio(a pack dependency) drags numpy up to 2.x, and the README is explicit: downgrade numpy back below 2.0 afterward or things break. - It clears ComfyUI's cache. The node unloads resident models before loading its own stack. Don't be surprised when your SD checkpoint has to reload after a dubbing run - that's by design.
- It's pinned to GPU 0. The loader hardcodes
cuda:0, so if ComfyUI runs on a different device index you'll need to sort that out first. - Loading is slow. Every execution re-loads the whole stack. Treat this node as "run once and leave alone," not something you touch seed-to-seed.
One more thing: this pack is written against the new ComfyAPI (io.ComfyNode), so it wants a reasonably current ComfyUI. If Manager installs it but the nodes never appear, update ComfyUI itself first.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| flow | COMBO | 1 options: none | |
| llm | COMBO | 1 options: none | |
| voc | COMBO | 1 options: none | |
| dtype | COMBO | 3 options: bf16, fp16, fp32 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |