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

Function process_tts_multi

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

Source from the content-addressed store, hash-verified

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

Callers 1

generate_videoFunction · 0.70

Calls 1

KPipelineClass · 0.90

Tested by

no test coverage detected