Skip to content

Conversation

@kijai
Copy link
Contributor

@kijai kijai commented Oct 3, 2025

This is somewhat work in progress PR that adds initial basic Multi/InfiniteTalk support:

  • Functionality to load Multi or InfiniteTalk models as model_patch objects
  • cross_attn patching function to Wan base model
  • InfiniteTalk Image to video node that supports both long generation within a loop and extension with separate samplers

I've chosen not to do the MultiTalk long generation method as I find it redundant due to InfiniteTalk, MultiTalk model itself will load, but further functionality need to be added to add the audio control to other models such as VACE.

As I'm not fully versed in how everything works yet, especially memory management wise, I'll be relying on feedback from @comfyanonymous and @Kosinkadink to finish this PR.

@kijai kijai requested a review from Kosinkadink as a code owner October 3, 2025 15:25
@Kosinkadink Kosinkadink added the Core Core team dependency label Oct 3, 2025
@ptmaster
Copy link

Y'all, this project's bout to make Comfyui famous — they been too quiet on voice tech, sheesh :)

Copy link
Collaborator

@Kosinkadink Kosinkadink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey, thanks for the PR and sorry for the wait! I reviewed this PR with comfy just now. I left individual comments, but here is the summary:

  1. Make block_idx go int transformer_options instead in the for loops of the forward function. This will be something we want for attention tricks in the near future so will keep from block_idx being implemented in multiple ways.
  2. Even though it removes a lot of the useability right now, remove the looping components from this PR and instead make it work wiht just the first 'window' without the looping. I will consult with you and Jacob on implementing the standard for looping stuff in ComfyUI as a separate PR, that we can then use to bring back this functionality for this + self forcing models.
  3. q and k should not be returned as it is an unknown whether it will cause higher memory peaks for all Wan stuff. Instead, the optimized_attention call should be overridable so that the extra attention call thingy can be done here, with the q and k that you need stored in transformer_options for the cross_attn patch to use.

More details are included in the comments. Let me know if you have any questions!

@armynew
Copy link

armynew commented Nov 3, 2025

I hope this PR can be completed as soon as possible. I want to experience it in the native workflow. Thank you.

@kijai
Copy link
Contributor Author

kijai commented Nov 5, 2025

Test result with latest commit that includes workflow:

native_MultiTalk_testing_00012-audio.mp4

The inputs used can be found here:

https://github.com/MeiGen-AI/InfiniteTalk/tree/main/examples/multi

@snomiao
Copy link

snomiao commented Nov 14, 2025

+label:notify:jk

@armynew
Copy link

armynew commented Nov 28, 2025

This PR took too long time

@zwukong
Copy link

zwukong commented Dec 2, 2025

yes ,i agree. Result looks good @comfyanonymous

@zwukong
Copy link

zwukong commented Dec 2, 2025

This is the first time kj tries to apply his wrapper to native workflow. It meas a lot, i hope this merge will contribute a lot to the community. He has supported a lot of wan projects, however almost none of them can be used in native workflow

@kijai kijai requested a review from guill as a code owner December 2, 2025 15:21
@kijai kijai requested a review from comfyanonymous as a code owner December 5, 2025 17:13
@Kosinkadink Kosinkadink self-requested a review December 5, 2025 21:16
@armynew
Copy link

armynew commented Dec 9, 2025

Please quick review this PR , it took too long time

@Kosinkadink
Copy link
Collaborator

@kijai DynamicCombo will be officially supported once #11345 gets merged after next stable.

Even before getting merged, DynamicCombo is still 'secretly' available and works with sufficiently new frontend if you import from _io.py. If you change the node to have a 'speakers' (or something like that) dynamic combo that has a 'one' and 'two', then you can make the two masks + optional speaker 2 audio track only appear when 'two' is selected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Core Core team dependency notify:jk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants