lenML/ChatTTS-Forge
301
1from typing import Union2 3from modules.SentenceSplitter import SentenceSplitter4from modules.speaker import Speaker5from modules.ssml_parser.SSMLParser import SSMLSegment6from modules.SynthesizeSegments import SynthesizeSegments, combine_audio_segments7from modules.utils import audio8 9 10def synthesize_audio(11 text: str,12 temperature: float = 0.3,13 top_P: float = 0.7,14 top_K: float = 20,15 spk: Union[int, Speaker] = -1,16 infer_seed: int = -1,17 use_decoder: bool = True,18 prompt1: str = "",19 prompt2: str = "",20 prefix: str = "",21 batch_size: int = 1,22 spliter_threshold: int = 100,23 end_of_sentence="",24):25 spliter = SentenceSplitter(spliter_threshold)26 sentences = spliter.parse(text)27 28 text_segments = [29 SSMLSegment(30 text=s,31 params={32 "temperature": temperature,33 "top_P": top_P,34 "top_K": top_K,35 "spk": spk,36 "infer_seed": infer_seed,37 "use_decoder": use_decoder,38 "prompt1": prompt1,39 "prompt2": prompt2,40 "prefix": prefix,41 },42 )43 for s in sentences44 ]45 synthesizer = SynthesizeSegments(46 batch_size=batch_size, eos=end_of_sentence, spliter_thr=spliter_threshold47 )48 audio_segments = synthesizer.synthesize_segments(text_segments)49 50 combined_audio = combine_audio_segments(audio_segments)51 52 return audio.pydub_to_np(combined_audio)53 