FunCineForge_SM_Segments
Write the line, direct the actor, dub the movie
- conds
- refer_audio
- conds
Before FunCineForge can dub anything, it needs to know who's talking, what they're saying, and how they should sound. That's this node's entire job, and in a real workflow you'll chain several of them together - one per line of dialogue. It's also the only node in the pack where you actually express your creativity, so it's worth getting comfortable with.
How it works. Each Segments node describes one utterance and appends it to a running "script" carried in a CONDITIONING object. The inputs are exactly what a dubbing director would write down:
text- the line the character says. The default is classical Chinese dialogue (Zhang Yi from 大秦帝国), which tells you everything about where this model's strengths are.clue- the acting direction. The author's default translates to roughly "a middle-aged male character states his position to the king, tone steady and resolute, a promise of unwavering loyalty." This is your main quality lever: the more specifically you describe the delivery, the better the model performs.start_time/end_time- where the line lands in the video, in seconds. The model config expects roughly 2 to 60 seconds of speech per segment, so keep lines inside that band.age_input,gender_input- the target voice's age bracket and gender. This is how you cast voices without any audio reference.spk- a speaker id from 1–10. Consecutive segments with the samespkget grouped into one clip and read as the same character, so give each character one id and reuse it.refer_audio- the zero-shot trick. Drop in a short reference clip of a real voice and the model clones it, which is how you keep a consistent timbre across a whole scene instead of relying on the age/gender presets. In the example workflow this comes from a LoadAudio node.conds(optional) - the previous Segments' output. Chain them: segment 1 → segment 2 → segment 3, and each appends its line to the list.
The output. conds is a CONDITIONING - not the text-embedding kind you know from Stable Diffusion, but a bundled dict of segments plus per-line messages. It feeds FunCineForge_SM_Predata, which turns it into the actual data file. Don't try to read it as a number; think of it as a typed envelope.
Setup. Same as the whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/smthemex/ComfyUI_FunCineForge
pip install -r requirements.txt
Restart, then get the ~13GB of models into ComfyUI/models/funcineforge. The author's cloud-drive zip has everything in one download.
Where people get burned:
- The clue is the whole game. This is an instruction-following model; a flat clue produces flat delivery. If your dubbed line comes out robotic, your clue was too thin. The author's own error handling hints at this - if inference later dies with "index out of range," the suggested fix is to add a proper clue and speaker attributes.
- It's Chinese-first. The default text, the clue and the docs are all Chinese, and the model was trained on the CineDub-CN dataset. English works (a CineDub-EN release exists), but the sweet spot is Mandarin dialogue. If you're dubbing English film clips, temper your expectations.
- Timestamps are upstream of everything. Make sure
end_time - start_timesits inside that ~2–60s window and actually matches what's on screen. Predata downstream will happily build clips from whatever timestamps you give it, and garbage timestamps make garbage data.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | 大王若是圣明,自然知道我张仪就是掉了脑袋,也不会把秦国的土地轻易交给楚国。 | — |
| clue | STRING | 一位中年男性角色向大王陈述立场,语气沉稳且坚定,言辞间流露出对自身忠诚的强烈自信与决心。整体情感线索是忠贞不渝的承诺和不容置疑的信念。 | — |
| start_time | FLOAT | 0.000–16384 | — |
| end_time | FLOAT | 6.220–16384 | — |
| age_input | COMBO | 中年 | 6 options: 儿童, 青年, 中年, 中老年, 老年, 不确定 |
| gender_input | COMBO | 男 | 3 options: 男, 女, 不确定 |
| spk | COMBO | 1 | 10 options: 1, 2, 3, 4, 5, 6, +4 |
| condsopt | CONDITIONING | — | |
| refer_audioopt | AUDIO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conds | CONDITIONING | — |