MCPcopy Create free account
hub / github.com/MeiGen-AI/MultiTalk / generate_video

Function generate_video

app.py:508–634  ·  view source on GitHub ↗
(img2vid_image, img2vid_prompt, n_prompt, img2vid_audio_1, img2vid_audio_2,
                    sd_steps, seed, text_guide_scale, audio_guide_scale, mode_selector, tts_text, resolution_select, human1_voice, human2_voice)

Source from the content-addressed store, hash-verified

506
507
508 def generate_video(img2vid_image, img2vid_prompt, n_prompt, img2vid_audio_1, img2vid_audio_2,
509 sd_steps, seed, text_guide_scale, audio_guide_scale, mode_selector, tts_text, resolution_select, human1_voice, human2_voice):
510 input_data = {}
511 input_data["prompt"] = img2vid_prompt
512 input_data["cond_image"] = img2vid_image
513 person = {}
514 if mode_selector == "Single Person(Local File)":
515 person['person1'] = img2vid_audio_1
516 elif mode_selector == "Single Person(TTS)":
517 tts_audio = {}
518 tts_audio['text'] = tts_text
519 tts_audio['human1_voice'] = human1_voice
520 input_data["tts_audio"] = tts_audio
521 elif mode_selector == "Multi Person(Local File, audio add)":
522 person['person1'] = img2vid_audio_1
523 person['person2'] = img2vid_audio_2
524 input_data["audio_type"] = 'add'
525 elif mode_selector == "Multi Person(Local File, audio parallel)":
526 person['person1'] = img2vid_audio_1
527 person['person2'] = img2vid_audio_2
528 input_data["audio_type"] = 'para'
529 else:
530 tts_audio = {}
531 tts_audio['text'] = tts_text
532 tts_audio['human1_voice'] = human1_voice
533 tts_audio['human2_voice'] = human2_voice
534 input_data["tts_audio"] = tts_audio
535
536 input_data["cond_audio"] = person
537
538 if 'Local File' in mode_selector:
539 if len(input_data['cond_audio'])==2:
540 new_human_speech1, new_human_speech2, sum_human_speechs = audio_prepare_multi(input_data['cond_audio']['person1'], input_data['cond_audio']['person2'], input_data['audio_type'])
541 audio_embedding_1 = get_embedding(new_human_speech1, wav2vec_feature_extractor, audio_encoder)
542 audio_embedding_2 = get_embedding(new_human_speech2, wav2vec_feature_extractor, audio_encoder)
543 emb1_path = os.path.join(args.audio_save_dir, '1.pt')
544 emb2_path = os.path.join(args.audio_save_dir, '2.pt')
545 sum_audio = os.path.join(args.audio_save_dir, 'sum.wav')
546 sf.write(sum_audio, sum_human_speechs, 16000)
547 torch.save(audio_embedding_1, emb1_path)
548 torch.save(audio_embedding_2, emb2_path)
549 input_data['cond_audio']['person1'] = emb1_path
550 input_data['cond_audio']['person2'] = emb2_path
551 input_data['video_audio'] = sum_audio
552 elif len(input_data['cond_audio'])==1:
553 human_speech = audio_prepare_single(input_data['cond_audio']['person1'])
554 audio_embedding = get_embedding(human_speech, wav2vec_feature_extractor, audio_encoder)
555 emb_path = os.path.join(args.audio_save_dir, '1.pt')
556 sum_audio = os.path.join(args.audio_save_dir, 'sum.wav')
557 sf.write(sum_audio, human_speech, 16000)
558 torch.save(audio_embedding, emb_path)
559 input_data['cond_audio']['person1'] = emb_path
560 input_data['video_audio'] = sum_audio
561 elif 'TTS' in mode_selector:
562 if 'human2_voice' not in input_data['tts_audio'].keys():
563 new_human_speech1, sum_audio = process_tts_single(input_data['tts_audio']['text'], args.audio_save_dir, input_data['tts_audio']['human1_voice'])
564 audio_embedding_1 = get_embedding(new_human_speech1, wav2vec_feature_extractor, audio_encoder)
565 emb1_path = os.path.join(args.audio_save_dir, '1.pt')

Callers

nothing calls this directly

Calls 7

save_video_ffmpegFunction · 0.90
audio_prepare_multiFunction · 0.70
get_embeddingFunction · 0.70
audio_prepare_singleFunction · 0.70
process_tts_singleFunction · 0.70
process_tts_multiFunction · 0.70
generateMethod · 0.45

Tested by

no test coverage detected