Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
34446ab
Overriding the newdefault of 'sdpa'
VRWarg Jul 23, 2025
61ed007
Building CLI interface so it can be triggered from hubspot
Jan 19, 2026
705e428
real number of steps
Jan 20, 2026
915ccbc
So the checkpoint is not picked from the deve version
Jan 22, 2026
d018b00
minor
Jan 27, 2026
331c6a5
more informative error
Feb 5, 2026
00e31ea
error correction in func name
Feb 5, 2026
bed9919
Creation speed param for ETA reporting
Feb 6, 2026
9b2542f
Building a little buffer
Feb 6, 2026
dd58810
Handling too short and verly long videos
Feb 6, 2026
9a0a0ea
calibrating the vid gen time
Feb 7, 2026
093ae1f
calibrating better
Feb 7, 2026
88be606
CLI now takes the avatar image and specified voice
Feb 18, 2026
d742dd3
Add attention_blackwell module with fallback mechanisms for flash att…
Feb 18, 2026
72c96bb
Keeping max frames rather high so things get included
Feb 18, 2026
6736154
Enhance avatar asset selection and input payload construction in CLI
Feb 19, 2026
07c9153
Update .gitignore to include .vscode directory
Feb 19, 2026
17017e7
Add base TTS template and enhance avatar handling in CLI
Feb 19, 2026
78e0170
Update input payload documentation to clarify avatar name usage
Feb 19, 2026
20a7804
Add mini.sh script for generating multitalk with configurable flash a…
Feb 23, 2026
1b09ac4
Add custom.sh script for generating multitalk with specified configur…
Feb 26, 2026
2a03256
Add new audio files and update JSON configuration for avatar processi…
Feb 26, 2026
a71cecd
Update mini.sh to include SCRIPT_TEXT in JSON output and modify input…
Mar 9, 2026
8a6e3bf
Refactor JSON formatting in base_tts_template.json and ensure consist…
Mar 11, 2026
04b5210
Add mini-audio.sh script for generating audio JSON configuration and …
Mar 16, 2026
806c834
So health of this repo can be checked
May 6, 2026
011f974
Changed arbitrary max frames
May 7, 2026
2564fe3
added a check so things jsut don't truncate silently
May 7, 2026
508f497
Update image path and output path in mini.sh for consistency
Jun 23, 2026
63045cb
Add *.mp4 to .gitignore to exclude video files from version control
Jun 23, 2026
a1153f1
Add *.mp4 to .gitignore to prevent tracking of video files
Jun 23, 2026
9e1236f
Add unit tests for multitalk CLI, healthcheck, and worker node functi…
Jun 23, 2026
d6674b4
Update IMAGE_PATH in mini.sh to point to new avatar location
Jun 23, 2026
1998b50
Merge pull request #1 from ParthaEth/feat/unit-tests
felixludos Jun 23, 2026
6e04d7d
Merge branch 'dev' into feat/google-tts
Jun 23, 2026
2de9dc1
Add audio duration estimation and update input payload handling for a…
Jun 23, 2026
6aad314
Add audio URL handling and extension guessing to CLI
Jun 23, 2026
5d3b10f
Add unit and worker-node tests for multitalk healthcheck logic and de…
Jun 29, 2026
dee239e
Merge pull request #2 from ParthaEth/feat/google-tts
felixludos Jun 29, 2026
fcaabc8
Add .venv to .gitignore to exclude virtual environment files
Jul 5, 2026
c36b675
Merge pull request #3 from ParthaEth/dev
felixludos Jul 8, 2026
14aeb6a
Picking up the samples per setp from env var
Jul 15, 2026
f336d9f
Optimizing the CPU ram while the video is written
Jul 15, 2026
b22f300
speeding up multitalk 4X
Jul 18, 2026
82abec9
Add elena.png image and update IMAGE_PATH in mini.sh; include pytest …
Jul 19, 2026
aad99ea
Update output paths in mini.sh to use temporary directory
Jul 19, 2026
d902b9c
Tweeking for lip sync quality
Jul 20, 2026
cb7c229
Merge branch 'dev' of github.com:ParthaEth/MultiTalk into dev
Jul 20, 2026
58f0b07
Reducing steps for speed
Jul 20, 2026
a4c1080
Add audio files: audio.mp3 and audio.wav to examples directory
Jul 20, 2026
5c57a70
enable mini audio demo
maity-co Jul 22, 2026
72338ce
Merge branch 'dev'
maity-co Jul 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
__pycache__/
weights/
local_data/
save_audio/
.vscode/
*.mp4
.venv/
60 changes: 37 additions & 23 deletions app.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import wan
from wan.configs import SIZE_CONFIGS, SUPPORTED_SIZES, WAN_CONFIGS
from wan.utils.utils import cache_image, cache_video, str2bool
from wan.utils.multitalk_utils import save_video_ffmpeg
from wan.utils.multitalk_utils import ChunkedVideoWriter, mux_video_with_audio
from kokoro import KPipeline
from transformers import Wav2Vec2FeatureExtractor
from src.audio_analysis.wav2vec2 import Wav2Vec2Model
Expand Down Expand Up @@ -602,33 +602,47 @@ def generate_video(img2vid_image, img2vid_prompt, n_prompt, img2vid_audio_1, img
# input_data['cond_audio']['person1'] = emb_path
# input_data['video_audio'] = sum_audio

logging.info("Generating video ...")
video = wan_i2v.generate(
input_data,
size_buckget=resolution_select,
motion_frame=args.motion_frame,
frame_num=args.frame_num,
shift=args.sample_shift,
sampling_steps=sd_steps,
text_guide_scale=text_guide_scale,
audio_guide_scale=audio_guide_scale,
seed=seed,
n_prompt=n_prompt,
offload_model=args.offload_model,
max_frames_num=args.frame_num if args.mode == 'clip' else 1000,
color_correction_strength = args.color_correction_strength,
extra_args=args,
)


if args.save_file is None:
formatted_time = datetime.now().strftime("%Y%m%d_%H%M%S")
formatted_prompt = input_data['prompt'].replace(" ", "_").replace("/",
"_")[:50]
args.save_file = f"{args.task}_{args.size.replace('*','x') if sys.platform=='win32' else args.size}_{args.ulysses_size}_{args.ring_size}_{formatted_prompt}_{formatted_time}"

logging.info(f"Saving generated video to {args.save_file}.mp4")
save_video_ffmpeg(video, args.save_file, [input_data['video_audio']], high_quality_save=False)

save_path_tmp = f"{args.save_file}-temp.mp4"
video_writer = ChunkedVideoWriter(save_path_tmp)

logging.info("Generating video ...")
try:
frames_written = wan_i2v.generate(
input_data,
size_buckget=resolution_select,
motion_frame=args.motion_frame,
frame_num=args.frame_num,
shift=args.sample_shift,
sampling_steps=sd_steps,
text_guide_scale=text_guide_scale,
audio_guide_scale=audio_guide_scale,
seed=seed,
n_prompt=n_prompt,
offload_model=args.offload_model,
max_frames_num=args.frame_num if args.mode == 'clip' else 1000,
color_correction_strength = args.color_correction_strength,
extra_args=args,
video_writer=video_writer,
)
finally:
video_writer.close()

frame_count = frames_written if frames_written is not None else video_writer.frames_written
logging.info(f"Saving generated video to {args.save_file}.mp4 ({frame_count} frames)")
mux_video_with_audio(
save_path_tmp=save_path_tmp,
save_path=args.save_file,
vocal_audio_list=[input_data['video_audio']],
frame_count=frame_count,
fps=25,
high_quality_save=False,
)
logging.info("Finished.")

return args.save_file + '.mp4'
Expand Down
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"prompt": "A professional speaks confidently directly to the camera.", "cond_image": "/mnt/c/Users/anwan/OneDrive/Khan/maity/vidLink/output/videos/69a0754e42141599e5301cff/avatar.png", "tts_audio": {"text": "We are ready for liftoff... finally!", "human1_voice": "/mnt/c/Users/anwan/OneDrive/Khan/maity/vidLink/video_generators/multitalk/weights/Kokoro-82M/voices/af_heart.pt"}, "cond_audio": {}}
10 changes: 10 additions & 0 deletions base_tts_template.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"prompt": "A person speaks to the camera.",
"cond_image": "Input_outputs/input_files/sales_executive/executive.png",
"tts_audio": {
"text": "example",
"human1_voice": "weights/Kokoro-82M/voices/af_heart.pt"
},
"cond_audio": {}
}

Loading