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

Function process_tts_multi

generate_multitalk.py:381–428  ·  view source on GitHub ↗
(text, save_dir, voice1, voice2)

Source from the content-addressed store, hash-verified

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

Callers 1

generateFunction · 0.70

Calls 1

KPipelineClass · 0.90

Tested by

no test coverage detected