MCPcopy Create free account
hub / github.com/MeiGen-AI/InfiniteTalk / process_tts_multi

Function process_tts_multi

app.py:382–429  ·  view source on GitHub ↗
(text, save_dir, voice1, voice2)

Source from the content-addressed store, hash-verified

380
381
382def process_tts_multi(text, save_dir, voice1, voice2):
383 pattern = r'\(s(\d+)\)\s*(.*?)(?=\s*\(s\d+\)|$)'
384 matches = re.findall(pattern, text, re.DOTALL)
385
386 s1_sentences = []
387 s2_sentences = []
388
389 pipeline = KPipeline(lang_code='a', repo_id='weights/Kokoro-82M')
390 for idx, (speaker, content) in enumerate(matches):
391 if speaker == '1':
392 voice_tensor = torch.load(voice1, weights_only=True)
393 generator = pipeline(
394 content, voice=voice_tensor, # <= change voice here
395 speed=1, split_pattern=r'\n+'
396 )
397 audios = []
398 for i, (gs, ps, audio) in enumerate(generator):
399 audios.append(audio)
400 audios = torch.concat(audios, dim=0)
401 s1_sentences.append(audios)
402 s2_sentences.append(torch.zeros_like(audios))
403 elif speaker == '2':
404 voice_tensor = torch.load(voice2, weights_only=True)
405 generator = pipeline(
406 content, voice=voice_tensor, # <= change voice here
407 speed=1, split_pattern=r'\n+'
408 )
409 audios = []
410 for i, (gs, ps, audio) in enumerate(generator):
411 audios.append(audio)
412 audios = torch.concat(audios, dim=0)
413 s2_sentences.append(audios)
414 s1_sentences.append(torch.zeros_like(audios))
415
416 s1_sentences = torch.concat(s1_sentences, dim=0)
417 s2_sentences = torch.concat(s2_sentences, dim=0)
418 sum_sentences = s1_sentences + s2_sentences
419 save_path1 =f'{save_dir}/s1.wav'
420 save_path2 =f'{save_dir}/s2.wav'
421 save_path_sum = f'{save_dir}/sum.wav'
422 sf.write(save_path1, s1_sentences, 24000) # save each audio file
423 sf.write(save_path2, s2_sentences, 24000)
424 sf.write(save_path_sum, sum_sentences, 24000)
425
426 s1, _ = librosa.load(save_path1, sr=16000)
427 s2, _ = librosa.load(save_path2, sr=16000)
428 # sum, _ = librosa.load(save_path_sum, sr=16000)
429 return s1, s2, save_path_sum
430
431def run_graio_demo(args):
432 rank = int(os.getenv("RANK", 0))

Callers 1

generate_videoFunction · 0.70

Calls 1

KPipelineClass · 0.90

Tested by

no test coverage detected